Here is a summary of casted opinions.
Please note that I tried to resemble votes as -?/+? when there was a too long description without a vote.

At a first glance I can say that we have found consensus on fewer issue than I expected.
----------------
We all voted +? to this:

B1. Remove Avalon from API Components.
C. Remove Cornerstone
C1. Remove Cornerstone dependencies in favor of Jakarta Commons when available C2. Use MINA to *add* sockets/connection dependencies (Noel is against the replace)
G2. Use Setters (as the preferred DI solution)

We all voted against this:

E5. Keep the ServiceManager as a property stored in the MailetContext.
E3. Add datasource, repositories, store and any other used service to the MailetContext API (this also mean adding the interfaces for this objects to the Mailet APIs) [Note that Vincenzo is +0.5 on adding a subset of this services]

About the container we all have no strong opinions: no vote under -0 has been casted to A* questions.

The main problem is that about E5 and B1 we agreed on the goal but we have very different views on how to do that. If we take the -1 as vetoes then we have currently *no* accepted solution.

Here is a list of things where no votes under "-0" have been casted and there is at least a "+1": C3. Import code from not replaceable libraries to James codebase (refactoring it to remove Avalon and anything else needed)
H3. Use OSGi Declarative Services

The remaining issues have contrasting answers (-1 .. +1).

I think that the experiment worked, and that this is a "better than nothing" starting point to start specific discussions or specific proposals having an overview of the mood of the team about each aspect.

Stefano

And here is the summary:
--------------
A. Deprecate phoenix

-0 Stefano (in the short term (an year))
+0 Bernd - to A1-3, I don't favor any yet. As soon as our code becomes 'clean' this should be not a big deal for me.
+1 Noel - But in what timeframe?  I am in no rush
+0.8 Søren - I do not like that we are based so heavily on unmaintained codebase. If we keep these we should make them part of the James codebase.
+0.8 Vincenzo
-1 Serge - See the comment in the message

A1. Replace it with Plexus (http://plexus.codehaus.org/)

+0 Stefano (Plexus seems to be actively developed (for maven2) and supports avalon components and more (must be investigated)) +0 Bernd - to A1-3, I don't favor any yet. As soon as our code becomes 'clean' this should be not a big deal for me. -? Noel - As for your A1, A2, A3, the only one I like is A3, but although that may be the right direction for JAMES, we have to investigate it
-0 Soren
+0 Norman - Never used..
-0 Vincenzo
-0 Serge

A2. Replace it with another Avalon compliant container (name it)

-0 Stefano (After excluding Loom and having upgraded to the latest Phoenix I don't see other plausible containers). +0 Bernd - to A1-3, I don't favor any yet. As soon as our code becomes 'clean' this should be not a big deal for me. -? Noel - As for your A1, A2, A3, the only one I like is A3, but although that may be the right direction for JAMES, we have to investigate it
-0 Soren
-0 Norman
-0 Vincenzo
-0 Serge

A3. Replace it with Felix (http://incubator.apache.org/felix/)

-0 Stefano (in the short term because OSGi will increase the time to become confortable with the application. +0.5 in the long term) +0 Bernd - to A1-3, I don't favor any yet. As soon as our code becomes 'clean' this should be not a big deal for me. +? Noel - As for your A1, A2, A3, the only one I like is A3, but although that may be the right direction for JAMES, we have to investigate it
+0.2 Soren
+0.5 Norman - Felix seems to be very intressting.. But maybe its a bit overkill..
+0.2 Vincenzo
-0 Serge

B. Remove avalon

-0 Stefano - I feel good with Avalon, imho we can remove some of its pattern (ServiceManager) and keep the basic interfaces.
+1 Bernd
+1 Noel - But again, there is a migration strategy
+0.8 Soren
+0.8 Vincenzo
+1 Serge - (ideal world)

B1. Remove it from "API Components"

+0.2 Stefano - if we introduce a james specific DI to supports this components and add Lifecycle to the component API.
+1 Bernd
+0.8 Soren
+0.8 Norman - That whould be cool.. I don't like the idea of need knowing about avalon to write mailets or smtphandler etc..
+0.8 Vincenzo
+1 Serge

B2. Remove it from both API Components and Other James Components

-0.5 Stefano - nonsense: I prefer B1 or B3.
+1 Bernd
+0.5 Soren
-0.5 Norman
+0.8 Vincenzo
+1 Serge

B3. Remove it from all the codes and keep wrapper for Top Level Components to be adapted to the container (Avalon or other).

-0 Stefano
+1 Bernd
+? Noel - *EVENTUALLY*
+0.5 Soren
-0.5 Norman
+0.8 Vincenzo
+1 Serge

C. Remove Cornerstone

+0.2 Stefano - but I will vote each change library per library.
+1 Bernd - C1-C3, but I consider this to be a very long time project, curretly more of the visionary type. I have many sympathies for starting with MINA soon.
+? Noel - Again, a process, not a cliff.
+0.8 Soren
+0.8 Vincenzo
+1 Serge

C1. Remove cornerstone dependencies in favor of Jakarta commons libraries where available

+0.5 Stefano
+1 Bernd - C1-C3, but I consider this to be a very long time project, curretly more of the visionary type. I have many sympathies for starting with MINA soon.
+1 Noel
+0.8 Soren
+0.5 Norman
+0.8 Vincenzo
+1 Serge

C2. Use MINA to replace sockets/connection dependencies

+1 Stefano - I don't have problem with java 1.5 requirement for James 3.0 and I think we should try to deprecate old code (less code to mantain, less bugs) +1 Bernd - C1-C3, but I consider this to be a very long time project, curretly more of the visionary type. I have many sympathies for starting with MINA soon.
-1 Noel - to replace.
+1 Noel - to ADD new MINA versions that will EVENTUALLY replace the current ones. Solution to this problem already outlined.
+0.8 Soren
+1 Norman - After what i see on apacheCon this seems to be the best way to get a better rid of many connections etc.
+0.8 Vincenzo
+0 Serge

C3. Import code from not replaceable libraries to James codebase (refactoring it to remove Avalon and anything else needed)

-0 Stefano - I would do this only for Excalibur components (Avalon specific) if we decide to remove Avalon from everywhere. +1 Bernd - C1-C3, but I consider this to be a very long time project, curretly more of the visionary type. I have many sympathies for starting with MINA soon.
+? Noel - If necessary.  What do you have in mind that is not replaceable?
+0.8 Soren
-0 Norman
+0.8 Vincenzo
-0 Serge

Now I expect that many will have replied +X to A3 or at least to one of the B*, so here are further votes related to this scenario.

D. Lifecycle and dependency management

D1. Use JNDI everywhere (ala J2EE)

-1 Stefano
-0 Bernd
+? Noel - Needs to be explored. Far too early to vote upon. For one thing, despite how long it has been around, I suspect that few people know enough about JNDI to cast an informed vote.
-0 Soren
+0 Norman - Can say anything about this.. no expirence
+0 Vincenzo
-1 Serge

D2. Keep Avalon interfaces but write our own mini container for non Top Level Components.

+1 Stefano - I would keep Avalon lifecycle and logger. Eventually change Configuration and ServiceManager in favor of a different COnfiguration mechanism and DI for single services (remove Service Locator).
-0 Bernd
-1 Noel - -1 as a policy, not code.
-0 Soren
+0.5 Norman - I like avalon ;-)
-0.8 Vincenzo
-1 Serge

D3. Introduce new interfaces to replace the one from Avalon and create our own container (that may delegate to the real container we use) to manage lifecycle and dependencies. (see also "Central class for service injection" topic by Bernd)

+0.2 Stefano - If they have to be identical to Avalon interfaces I'd keep Avalon ones. +0 Bernd - (I see my proposal only as an intermediate step on the way to reduce Avalon deps) +? Noel - Containers. Plural. We need to distinguish which containers we have, and what would be appropriate for each. And the answers to the above questions may be different for the Mailet Container vs other containers.
-0.5 Soren
+0.8 Norman - I like Bernds idea..
+0.2 Vincenzo
-1 Serge

D4. Use some simple, lightweight form of (auto-)wiring, there must (added by Bernd, not voted) be something out there (if not XBeans)

+1 Bernd

E. Specific API Components issues:
E1. Use JNDI to lookup datasources

-0 Stefano - I'm still undecided about this: I think that using DI would be better. Bernd - tough question. my brief insight into this topic tells me that it's very wrong how it is today, but exposing the interfaces directly? _That's_ where I'd like to see JNDI! But I don't think I am aware of enough discussion concerning this topic to vote it.
Noel - Again, premature and possibly container dependent.
+0.5 Soren
+0 Norman - like i said no expirences with JNDI
+0.2 Vincenzo
-1 Serge

E2. Use JNDI to lookup users/mail repositories, the store and any other James component.

-0.5 Stefano
Bernd - tough question. my brief insight into this topic tells me that it's very wrong how it is today, but exposing the interfaces directly? _That's_ where I'd like to see JNDI! But I don't think I am aware of enough discussion concerning this topic to vote it.
Noel - Again, premature and possibly container dependent.
+0.5 Soren
+0 Norman
+0.2 Vincenzo
-1 Serge

E3. Add datasource, repositories, store and any other used service to the MailetContext API (this also mean adding the interfaces for this objects to the Mailet APIs)

-0 Stefano - The API would grow a lot and we'll limit extensibility.
Bernd - tough question. my brief insight into this topic tells me that it's very wrong how it is today, but exposing the interfaces directly? _That's_ where I'd like to see JNDI! But I don't think I am aware of enough discussion concerning this topic to vote it. Noel - Probably not. That would require the MailetContext to expand to understand every possible service, and require every possible service. But some of them? Perhaps.
-0.9 Soren
-0 Norman
+0.5 Vincenzo - for a proper subset (which one :-) ?)
-0.8 Vincenzo - for everything
-1 Serge

E4. Use Dependency Injection (setter based, constructor based, enabling interfaces, service locator injection) to automatically satisfy components dependencies.

+1 Stefano - Imo the right way
+1 Bernd - (but I'm also +1 to _optionally_support_ JNDI)
-? Noel - Where? For the Mailet API? -1. Elsewhere in JAMES? To be determined.
+0.8 Soren
+0.8 Norman
+0 Vincenzo
+1 Serge - setter or construction based

E5. Keep the ServiceManager as a property stored in the MailetContext.

-0.9 Stefano - Imho this is a bad practice and introduce a "hidden" dependency.
-0.5 Bernd
-0.8 Soren
-0.5 Norman - Seems to be more a hack..
-0.8 Vincenzo
-1 Serge

If you voted +X to something DI related please also vote this:

G. Dependency Injection

Noel made a long comment to this. read it in its message. (-? to DI for Datasources)
+0 Vincenzo

G1. Use CDI (constructor base DI)

-0 Stefano
+1 Bernd - G1-G3, I am not enough a religious DI fanatic to exclude any of those
-0 Soren
+0 Norman
+0 Vincenzo
+0.5 Serge

G2. Use Setters

+0.8 Stefano
+1 Bernd - G1-G3, I am not enough a religious DI fanatic to exclude any of those
+0.5 Soren
+0.5 Norman
+0 Vincenzo
+1 Serge

G3. Use Setters with Enabling Interfaces

+1 Stefano
+1 Bernd - G1-G3, I am not enough a religious DI fanatic to exclude any of those
+0.5 Soren
+0.5 Norman
+0 Vincenzo
-1 Serge

G4. Keep single setter for ServiceLocator (ala Avalon)

-0 Stefano
-0 Bernd - all other options are superior
-0.8 Soren
+0 Norman
+0 Vincenzo
-1 Serge

G5. Use reflection and convention over configurations for the above DI

+1 Stefano (even if we may need to add configurability for advanced setups)
+0,5 Bernd
+0.5 Soren
+0 Norman
+0 Vincenzo
-1 Serge

Furthermore these technologies could be used to sole one or more aspects of the above points, please give your opinions.
H1. Use Spring

-0.5 Stefano Not avalon friendly, too much xml configuration, big dependency. +1 Bernd H1-H3 (sigh, if we only where _that_ far already, I'd take any of these :-) )
-1 Noel
+0.5 Soren (I really like Spring)
-0 Norman
+0 Vincenzo
+1 Serge

H2. Use XBean

-0.5 Stefano - I'd like to see what path is followed by Geronimo and Directory in this aspect. I would not be an early user. +1 Bernd H1-H3 (sigh, if we only where _that_ far already, I'd take any of these :-) )
Noel - Premature.  And where?
+0 Soren
+0 Norman
+0 Vincenzo
+0 Serge

H3. Use OSGi Declarative Services

-0 Stefano - There is much going on under the hood of OSGi services. iPOJO may become interesting, but this is all new stuff and we have a small developer community, we should learn from others. +1 Bernd H1-H3 (sigh, if we only where _that_ far already, I'd take any of these :-) ) +? Noel - This is my preferred direction. But does that mean that Mailets should be OSGi components? No.
-0 Soren
+0.5 Norman
+0 Vincenzo
-0 Serge



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to