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
