geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Dillon <ja...@coredevelopers.net>
Subject Re: [twiddle] Twiddle is now booting Geronimo
Date Mon, 25 Aug 2003 07:46:07 GMT
> Normally I try to be positive, but I am having a very hard time with 
> this
> change.

Sorry to give you a hard time.  Some explanations and comments below.


> You have now made the core dependent on twiddle, which in turn is 
> dependent
> on a load of other things like commons-cli, forehead, classworlds, 
> castor,
> dunno what else. Do we really need to add all this?

Core is dependent on Twiddle because the Geronimo StartCommand is 
specific to the core.  Other commands, like a deploy command, shutdown 
command, etc. would also be specific to the core and will live in the 
core module.

I understand there might be some concern over the initial footprint for 
Twiddle, which I will get around to slimming down, netbooting or 
whatever, but I did not believe that it was critical to implement 
initially.  As for having the core module depend on the twiddle model I 
do not see that is a big deal at all.

Specifically why do you not like that core is dependent on twiddle?


> What about all the other ways to start the server e.g. raw embedding, a
> WinNT service, ??? Even a basic Windows bat script would be useful.

Raw embedding still works by creating a new instance of 
org.apache.geronimo.Main, only the command line bits have moved to 
StartCommand, but StartCommand will in turn hand over the rest of the 
details to Main.  Or if you like you can create a Twiddle instance and 
then call twiddle.execute("geronimo/start") if you like.

As for WinNT services, I have not given it too much thought but I do 
not believe that the introduction of Twiddle as the bootstrap will make 
it any more or less difficult to load Geronimo as a service.

I will get a batch file up soon.  I did not see that as super critical 
initially either since `maven run` will start Geronimo up for testing.


> What about IDE support as well - I used to be able to just run the 
> server
> directly by invoking Main, but I don't seem to have that option any 
> more.
> What do I need to do to get this back again?

My mistake here, I was not under the impression that anyone was doing 
this, so the removal of Main.main(String[]) hosed this.  I was 
following the contract in README.txt to make sure everything still 
worked and did not think that people were loading Main directly from 
and IDE.

My concern would be that eventually when there is more complicated 
class loading going on to setup the bootstrap environment that invoking 
Main like this would cause problems.  This is one reason why I started 
to create a release structure under target/geronimo-* so that the 
server would run under and environment similar to what a user would see 
after they extract an archive.  I believe that this is a good thing and 
we should try to keep it that way, but I understand that for 
development it would be ideal to have an IDE start the instance for 
debugging and such.

Which IDE are you using?  Should not matter too, too much.  To get a 
realistic-what-the-user-would-see instance you have a few options:

1) Boot like twiddle does, via ForeHead:

main-class: com.werken.forehead.Forehead
arguments: -Dforehead.conf.file= target/geronimo-DEV/etc/forehead.conf 
geronimo/start

2) Boot twiddle directly:

main-class: org.apache.geronimo.twiddle.cli.Main
arguments: geronimo/start

You just need to include the right class-path, which was why I wanted 
to know which IDE you were using.


> And where was the advance notice? I couldn't see any discussion on the 
> list
> and this wasn't exactly a zero-impact change.

I had typed up email days ago, but now that I check it is still in my 
drafts folder... :-(  Not terribly helpful I know.


> All in all I think this was a bad move and would ask you to back some 
> of the
> more intrusive bits out - at least remove core's dependency on twiddle.

Specifically what do you think must be changed?

  * * *

Here is a little background on Twiddle (the concept and the future)...

Twiddle aims to be a simple command shell, sporting and interactive 
console, to make it simple to write command-line tools.  Command line 
tools should have a consistent interface and be easily organized 
(instead of littering up bin/* with scripts).

The short-term vision is to provide a simple container for commands 
(which is mostly done).

The medium-term vision is to use Twiddle as the bootstrap for Geronimo, 
letting Twiddle handle the details of the initial footprint, as well as 
to provide a set of admin commands to work on Geronimo 
(start/stop/deploy/status/...) using either interactive or 
non-interactive console modes.

The long-term vision is to turn Twiddle into a Geronimo component, so 
that one could telnet/ssh into the server to run commands on the live 
instance, especially to run a script interpreter command (using BSF or 
something) so that one could evaluate a Jython or BeanShell script on 
the live server.

* * *

I believe that it makes sense to let Twiddle handle all of the 
command-line fluff, be it initial bootstrap or command-line tools like 
deploy or shutdown.

The only downside I can think of is that the size of initial footprint, 
but I believe this problem can be addressed.  I do not believe that 
using Twiddle limits the ability to embed Geronimo, run Geronimo as a 
WinNT service or integrate it into a IDE for development in any way.

Anyways, I apologize about the lack of advance notice and any 
frustration you ran into due to the removal of Main.main().  Let me 
know if there is anything I can do to make things less frustrating for 
you.

--jason


Mime
View raw message