On 2/2/07, Danny Angus <[EMAIL PROTECTED]> wrote:
<snip>
I posted this to the PMC list in q4 2004, when we were discussing what
to do about the closure of Avalon. Time has moved on since then but I
think it is still relevant:
... we slowly remove all trace of Avalon and Phoenix from James,
refactoring it into a "james-phoenix" deployment project and leaving
"our"
code as POJO's
Then we market James as container agnostic, supporting massive
extensibility/configurability, and invite container projects to create
other deployment packagers for James, MX or EJB/JCA or Geronimo or Pico
or
son-of-avalon, whatever. Let them compete to be the *best* container for
James, not the *only* container for James because James will be the only
sensible solution for proving a future proof mail framework.
Thats the crux of it really, make James not standalone but embedable by
design, any standalone distributions would be two things
James+deployment
code.
Encourage people to come in and contribute their "non-core" stuff, and
focus our limited bandwidth on creating deployment options for James,
make
james the ultimate chameleon, capable of being easily wrapped to embed
in
any Java container you want.
James should be easily extended anywhere, be that by adding protocols,
fast
fail storage, mailets, seive whatever.
Lets try to make James the R&D environment of choice for people who are
experimenting with changing the nature of mail, and the discerning
admins
choice for flexibility.
I think we've suffered a little from our lack of willingness to deviate
from design decisions in the face of requests from the real world, lets
open up the whole of James so that anyone can implement anything, even
if
it defies convention and breaks the rules.
with the need to modularise, i think that there's now more convergence
towards this
given a little initial restructuring (moving code around), it should
be possible to gradually move code out from the pheonix deployment
module into separate modules.
phase 1: make space for modules within james server trunk
* server/trunk -> server/trunk/pheonix
phase 2: top level build
* create build.xml which delegates to pheonix/build.xml
phase 3: upgrade build:
* upgrade to ant 1.7 (the new features are *really* good)
* create stage subdirectory which is local only
* create buildtasks module to host build macros and ant tasks for
module builds
phase 3: create empty base module top to contain API interfaces
* create macros and tasks to support modular build
* create build-modules.xml to support common structure
* base builds copies artifacts into stage subdirectory
* pheonix build copies artifacts locally from stage
* create macros to allow easy generation of new modules
once this has been done, we can gradually pull code out of pheonix
into modules. we can also add new code in as modules. branches can
just branch the modules they need and keep the others on trunk.
if there's consensus about this approach, i'm willing to make time to
execute (unless someone beats me to it ;-)
opinions?
- robert
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]