On May 20, 2009, at 7:44 AM, Robert Burrell Donkin wrote:

On Wed, May 20, 2009 at 2:23 PM, Stefano Bagnara <[email protected]> wrote:
Robert Burrell Donkin ha scritto:
On Wed, May 20, 2009 at 11:52 AM, Stefano Bagnara <[email protected]> wrote:
Robert Burrell Donkin ha scritto:
i've been having a little think recently, in particular about user
postings on the list. i think i can see a realistic path if there's a
consensus that this is the way we want to take james forward...

Observations:
* Felix Karaf (OSGi container) is very cool. this opens up lots of cool possibilities for mixing protocols and is very interesting to me.
Interesting. I'd like to see a POC about it, before embracing such a
technology.

it will support the stuff i'm interested in without invasive changes
to james. all that's needed are features (dependencies) and spring
(assembly) documents.

this means that sometime soon i won't be running pheonix locally. most
other mail application developers (who post on list) also seem to be
using the spring deployment.

let me clarify that I think that moving to another container is a good thing. But I don't think that moving to any other container is good. A choice has to be made and it will be critical for the future. OSGi seems to be a good option but I still have to see a good configuration service for osgi components. I don't know OSGi enough to understand if this is a limit in the "specification" or something that simply has not be done,
or something that exists but I don't know.

I'm not 100% sure I know what you mean by a configuration service for osgi components but...

Spring has proposed formalizing much of their xml plan handling stuff as the osgi blueprint service. It's getting a bunch of independent review and (IMO) clarification and improvement and is very close to the final spec draft. There's a TCK. A few people from servicemix and geronimo are working on an apache implementation, currently hosted at geronimo. So I'd recommend using the blueprint service as the "standard" component wiring technique.

I'm not a blueprint expert.... however I think that the service only wires up stuff in one bundle, while allowing component references to osgi services and publishing components as osgi services. So, I think that rather than having one monolithic server configuration file, you can have each piece of the mail server configured in a separate bundle and wire the large-scale component assemblies together using services.

One issue I have not yet found out how to solve in osgi is how to locate the server installation on the file system so you can have stuff like file-based storage relative to the installation. For instance in geronimo we have a var directory in the server installation and tell everyone to put their file based data somewhere inside that, rather than trying to store it inside the application itself somehow (as people seem to like to do with web apps) There may be a built in or easy solution to this but I don't know what it is yet.



that's fine

i'm almost certainly going to move to karaf. i no longer have time for
avalon and i'm out of hope that any sort of consensus about new
containers for 3.x will be every reached.

 * Stefano and Norman are very busy these days. so just directly
releasing 3.0 is looking harder and harder...
Trunk was almost ready for a alpha/beta release 2 years ago, so I don't
see this so hard. This require the same effort as any release of
james-server: until no one will need a release and will take the time to
build some test release we won't see a release.

building a release candidate is a complete waste of time unless there
are people who are willing and able to test it. this is where we now
come up very short.

I agree. I would probably test and review an RC from trunk but not any
build from v2.3.

so: you wouldn't be willing to review a 2.3.2 RC?

* The recent threads from users are telling us that we really need to
have a 2.x roadmap for mail server users (as opposed to mail
application developers)
they don't care about 2.x or 3.x. IMO they simply would like to have new
features that are in svn since years.

i used to think that but the upshot of the discussion with users is
that no they don't. james 2.x already has lots of features. most just
want releases plus much better documentation. any users who really
cares about features more than stability is probably already on 3.x.

the great thing about already having the features in trunk is that we
can decant them in bite-sized pieces ensuring they have been tested
and documentation written.

???? Why should an *user* upgrade to an hypotetical 2.4.0 that do not
include a single feature more than 2.3.1 but simply require java5 and
has some more smaller jars?

it's just a mailet API upgrade and java version bump, simple as that.
new users will probably pick it up (and stop complaining about
obsolete JREs), old users can take their time evaluating it.

Can you link the discussions that led you think that such a release
would find an userbase? I really don't remember one.

take a look a the current thread here on dev

Proposal:
 * Use 2.x for mature, stable releases aimed at mail server users
retaining pheonix as the container
* Target 3.x at mail application developers focussing on OSGi and Spring * Move code from 3.x to 2.x by factoring out libraries with multiple
modules to allow optional avalon and OSGi service support

Roadmap:
  * Release 2.3.2 now (after deprecating mordered, crypto)
  * Release standard mailets 1.0
  * Release crypto mailets 1.1 targeting java 1.5
Make sense.

* Release 2.4 soon replacing source with jars released so far (with
note about standard mailets)
    * Compiled against Java 1.5
    * Remove mordred
    * Replace 2.x crypto source with released jar
    * Replace 2.x mailet API with released jars
  * Release 2.5 later replacing source with released jars
    * Add jSPF support
    * Replace standard mailet source with released jar
    * Replace whichever other services have been released by then
My main concern is that this does not give features to the users. Users are asking for a roadmap because they want easy virtualhosting, fastfail and other features that are in trunk since *3 years* (yes, some stuff
was there when we released 2.3.0 and didn't land v2.3), are trunk
specific, and backporting them is a PITA. I don't think that the roadmap
above does worth the required work, but if anyone think so and is
willing to work on that then it will not be a bad thing.

the advantage of the above is that it's a road map and it's easy

Come on, this is not the main goal of a roadmap. Not following that is
easier and gives our users the same benefits.

a road map just shows a way forward

but it won't fly without support and we need a road map before 2.3.2
can be released

Why do we need a roadmap for a bugfix release? v2.3.2 can be released
anytime from v2.3 branch, as is. No roadmap needed, just a release manager.

it's the first question we're going to get so we need an answer

we need to give developers and user hope that james isn't dead

The only real features for end users in that roadmap is jSPF and this could be released as a mailet anyway. jSPF as it is in trunk cannot be
done in v2.3 because of different fastfail stuff (IIRC).

fine - so let's factor out an SMTP library as well (multi-module with
avalon and OSGi service bindings)

this means a DNS service library as well but IMHO that's a good thing. UserRepository is a little too much to chew ATM but i think we should
be able to bridge the interfaces.

AIUI this'd give us improved fail fast as well

This is trunk, isn't it?
If you take v2.3 and replace smtp, userrepositories, dnsservice and
every dependency that need changes because of this (most components
depend on dnsservice) then you have trunk (just with less modules: take a revision from 1 year ago and you'll have v2.3 with that stuff and no
modules ;-) ).

not really

it doesn't include IMAP or any of the other code that would need to be
reviewed and tested to release 3.0, just the new features which users
seem to want. factoring them into libraries means that any heated
debates about design can happen in isolated not as part of a bigger
quality argument about 3.x verses 2.x.

(maybe you're starting to understand the plan now ;-)

I will not work and I will not use such a branch: I don't need any
feature from that so why should I upgrade and risk bugs?

i'm running out of time to devote to james (as a project). karaf gives
me the way out i've been looking for.

That's a real pity. If Karaf is a way out then we'll have to pay more
attention to understand exactly what we are embracing or it will be the
next iron ball at the leg of any future release manager.

that's not needed. karaf does the stuff that i need it to do for my
interests but the spring deployment should still work independently.

hopefully s/spring/blueprint



you and norman are busy, as are most of the other developers.  james
server is really close to actually dying.

Sure, but why defining a roadmap that give us useless releases should
change things?

james - as a project - needs to be able to start agreeing on road
maps. if not, then the project will die.

no road map is going to work without your support. this is the best
plan i could think of. if you can see a better alternative way forward
then please propose it.

I don't have time, but if I'll ever have time it won't go into v2.3. I
repeated this in the last 2 years and I didn't change my idea about
this. v2.3 works fine, is really stable, but architecturally at its end
of life. In my view working on that source code is a waste of time.
If I'll see activity I'll try to convince people to put their effort in trunk and I'll try to help as much as possible that people (as I tried
with you).
If you have limited time to spend on james I would prefer you to simply make imap better as a standalone library. As a PMC member I think this is much more strategic for the community than a feature-less release of
a v2.4.

IMAP now works and has been tested by martin on the major mail clients
but support for avalon and pheonix will become increasingly limited
(or quite possibly non-existent)

the problem james - as a project - has with releasing is not cutting
releases (any more) but with ensuring that they are tested and
agreeing on road maps. unless something changes soon, as soon as i
start focusing elsewhere, james is going to die.

IMHO the above roadmap is mainly a developer exercise to replace source
code with libraries and to upgrade v2.3 to java5.

it's been 3 years since the last release. it's not ambitious but at
least it's a start.

I can only repeat myself. If you like to refactor v2.3 into v2.4 by
upgrading to java5 and to more fine grained libraries just do it, but
don't ask me to help or to agree that this will make our users happier ;-)

without your help in review releases, no road map is feasible

it's not good releasing 2.3.2 without some sort of road map

dot releases are bug fix releases. I never ever defined a roadmap for
bugfix releases in my life: this kind of roadmap is called "open
critical/major bugs report" in JIRA and it is automatically created when
filed *bug* reports are confirmed.

james needs to release 2.3.2 together with a road map to stop what
users we have moving to other less sophisticated but more actively
developed servers

Backporting stuff from 3.x to 2.x is simply unfeasible for most
interesting code because we had to change interfaces and break some
compatibility in order to support the new features. I BET backporting some of them will take *much* more time than testing trunk as a whole. People keep claiming that v2.3 is stable and trunk is not, but the fact is that simply no one tested trunk and confirmed it is unstable. Maybe it is, but until I'll see bug reports about instability against trunk I
won't consider this.

i wasn't proposing to backport but to factor out multi-module
libraries which can be shared. bugs can then be fixed against trunk.

components are linked together via interfaces. To factor out modules
that can work in both v2.3 and trunk we have to deal on common
interfaces. The components you talked about rely on changed interfaces
or define the interfaces used by the rest of james.

yes, there would need to be some glue code back ported. this don't
think that this should be a major issue.

it does mean that the interfaces can be agreed by a release and
versioned independently.


Using karaf doesn't mean you'll depend on it. I think that osgi + blueprint will be a really good direction to move in.

david jencks



- robert

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to