james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: [Roadmap] 2.x and 3.x ...?
Date Wed, 20 May 2009 15:31:17 GMT

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

> On Wed, May 20, 2009 at 2:23 PM, Stefano Bagnara <apache@bago.org>  
> wrote:
>> Robert Burrell Donkin ha scritto:
>>> On Wed, May 20, 2009 at 11:52 AM, Stefano Bagnara  
>>> <apache@bago.org> 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: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Mime
View raw message