On Aug 6, 2007, at 12:43 PM, Paul McMahan wrote:
On Aug 6, 2007, at 12:59 PM, Donald Woods wrote:

we should consider the more drastic changes, like moving the base Admin Console support (via Pluto 1.2) out to /plugins

I really like that idea for a couple of reasons -
- it allows us to keep the admin console that's currently at server/trunk/applications/console in place until the new extensible admin console is ready and can scale up from minimal to full JEE5 functionality plus debug views, etc. - I like the idea of streamlining server/trunk for JEE5 stuff and moving the optional stuff elsewhere

My only reservation (and its no biggie) is that using the location / plugins for optional stuff is misleading since there will be stuff in server/trunk that's required for JEE5 (i.e. not optional) but implemented as plugins like tomcat, jetty, amq, openejb, etc. Calling something a plugin is a statement about its packaging and deployment mechanism, and not whether it is required or optional.

So maybe "/opt" or some such would be a better place to put the extensible admin console, tuscany (eventually), directory server, samples, roller, etc...

Personally, I don't consider the bits in /plugins as _optional_... simply a home for the plug-able components and features that can be dropped into the base server to make Geronimo do something useful.

After thinking about this more, I think that probably _most_ of the stuff under server/trunk can get converted into a plugin and moved to its own plugins/<component>/trunk, released and managed independently of the core server framework. If we need to update the plugin bits to make this work for more stuff, then we should do that, though I'm not sure that is needed atm.

Then we'd end up with relatively smaller projects per feature/ component, a medium-sized project for the core server, and then a project for the assemblies which we deliver (ie, the javaee bits, which aggregate the javaee components, the server framework and the configuration required to make it all work out of the box).

The only thing we have to be careful of is to not end up with a massive set of versions to manage, so perhaps components need to have some detail that indicates which version of the server they are compatible with or something like that. I dunno... anyways, its going to take some more discussion and planning before we can get to making this a reality, but I really trully do believe that we *must* do this to scale the management and development of Geronimo.


and start moving the Portlets into the actual modules/configs that they administer....

I like this idea from a conceptual point of view since it keeps things neat and well organized. But I am not sure how to implement it since the main geronimo components are typically packaged in JARs, and the admin portlets for a component have to be packaged in a WAR (that's just the way that pluto works). i.e. a JAR can't contain a WAR.

Some options I can think of:
- use EAR as the packaging format for all geronimo components and package the admin WARs inside them - maintain geronimo components and their admin WARs separately. bind them at deployment time via the plugin installer's dependency resolution or by some enhancement to the maven car plugin - package the geronimo components as WARs so the admin portlets can be merged with them. (seems like the tail wagging the dog) - follow some organizational structure like in your previous email where each geronimo component has a module, config, and (now) WAR subdirectory

Just brainstorming here...

Um, I dunno... maybe some of the new magical console stuff that is going on can help. But my guess is we might have to implement a dynamic portlet, which can be given an artifact from the repository, and then load the real impl from that artifact and display it. Then the portlet bits per component can be bundled into a jar and tossed into the repo, and then the console can be configured with a list of artifacts to load into portlets. Seems like that might work out well, if the dynamic portlet impl simply handles the bridge to the portlet impl in the artifact and once loaded, basically proxies everything over to it.

'm just brainstorming too... and having *never* written a portlet in my life... maybe it will work, maybe it won't...

Though, this is one area where I think a full portal impl like jetspeed2 might be of help since its already got all the juice to do this kinda dynamic portlet muck... or at least I'm hoping it does. I'm just generalizing my experience with php portals like phpnuke and postnuke which have this kinda plugabiliity built in.

I really do think though that this is really positive direction... as right now the console is a horrible coupling point with all of the bits inside of the server... and if we are going to start pulling things apart into smaller more manageable chunks, this is certainly one key component that will need to be re-factored to allow it to happen.

Cheers,

--jason

Reply via email to