+1

Thanks, Robert. Great post!

  Bernd

On 8/1/07, Robert Burrell Donkin <[EMAIL PROTECTED]> wrote:
> On 7/31/07, Stefano Bagnara <[EMAIL PROTECTED]> wrote:
> > Robert Burrell Donkin ha scritto:
> > > On 7/31/07, Stefano Bagnara <[EMAIL PROTECTED]> wrote:
> > >> Robert Burrell Donkin ha scritto:
> > >
> > > <snip>
> > >
> > >>>> IMHO it worth specifying that this is not the panacea because this 
> > >>>> means
> > >>>> that backward incompatible changes in core stuff will not be supported
> > >>>> unless you clone all of the modules.
> > >>> that what you mean by core. an example would be useful.
> > >> There are old refactorings that have been delayed forever because of
> > >> introduced incompatibilities.
> > >> - One of them is mailet api changes: when you change the mailet api you
> > >> probably need to change a lot of code in james.
> > >
> > > IMHO this is now a matter for the mailet subproject. once a new API
> > > has been agreed and released, then we can work out what to do about
> > > the server.
> >
> > ok. What I mean is that one question could be: is a new mailet api still
> > in a roadmap for 3.0 ? It was one of the main point in past (not in my
> > roadmap). Danny: if you are tuned what's your idea about this?
>
> i don't have a roadmap for 3.0 :-)
>
> when people find the energy to create and release an update new mailet
> API then that's the right time to think about how to approach
> integration with JAMES server
>
> > >> - One is the Message/Envelope change and the refactoring of mail/spool
> > >> repositories interfaces: again there is many code bound to this 
> > >> interfaces.
> > >
> > > i don't understand the proposal in detail. however, it's usually
> > > possible to preserve only storage/configuration compatibility (and not
> > > code binary compatibility) by add the new API as an extra interface
> > > but without knowing more about the proposal, i don't know whether it
> > > would be possible in this case.
> >
> > The repository refactoring proposal included both an interface change
> > and a storage change:
> > - re-mapping the Mail object as Envelope + MimeMessage
> > - move around the envelope data in a given storage, while keep "static"
> > mimemessages in another storage.
> >
> > Whether to keep backward compatibility or not probably means duplicating
> > the work or not.
> >
> > As an example in the current trunk code I and Norman spent 50% of our
> > time implementing new features and 50% of the time adding backward
> > compatibility (because it was a voted requirement at that time), so I
> > really talk about something concrete. I think most of the code we
> > changed introduced a backward compatibility issue that we then had to
> > fix (I think Norman will confirm this).
> >
> > We had to introduce many workaround and hacks to keep config.xml
> > compatibility and storage compatibility: when we won't need backward
> > compatibility any more then we (you) can stop wasting resources for this
> > and remove the workarounds.
> >
> > The same happened from 2.2 to 2.3 when I had to brake config.xml
> > compatibility so to have a better architecture in 2.3. Currently the
> > "goal" was even more ambitious than the 2.3 as we wanted to introduce
> > much more new things but without braking config.xml compatibility.
>
> this is a classic case of evolution verses revolution
>
> you wanted a revolution but ended up evolving the existing code base.
> architecture by stealth typically creates community issues and so is
> best avoided.
>
> given a more modular structure for the server, it should be possible
> to include revolutionary forks within trunk. subversion is very
> flexible and bug fixes made in the base can be merged to the fork.
> backwards compatibility can then be maintain by using the more mature
> code as default.
>
> > If more than 1 committer will work on the code I think that it is better
> > to know if they have to keep backward compatibility or not, otherwise
> > you risk to completely waste the resources of one developer that keep
> > backward compatibility while the other simply ignore it.
>
> i agree that a consensus about compatibility is important but this is
> not dependent on the number of developers working on the same code
> base. anyone rewriting existing mature code in place risks vetoing
> changes unless they have established a consensus first.
>
> > Btw this is a non-issue as long as no one is currently working on core
> > stuff.
>
> it all depends on what you mean by core stuff. the changes you're
> proposing are entirely peripheral to me. it sounds to me that your
> proposal could be easily including in the existing code base by
> revolutionary forking of the spool management module.
>
> <snip>
>
> > >> - One is complete DNS support (requires changes in mailet api, in
> > >> smtpserver, in the spoolmanager and in the remote delivery) [trivia: I
> > >> joined JAMES mainly to add DSN support to it].
> > >
> > > i don't understand why this would necessarily break
> > > storage/configuration compatibility
> >
> > DSN requires many changes to mailet api and to core interfaces and
> > requires also to store much more informations. It also require a
> > different approach to spooling: as a consequence keeping the config.xml
> > backward compatible is almost impossible.
>
> then the mailet API is the right place to start
>
> once the API has been revised then we can work out the best approach
> to feeding these changes into the server code base
>
> <snip>
>
> > > i'm just doing what seems right to me
> >
> > We all know you're pushing your own goals :-P :-P
>
> everyone has their own itches to scratch: mine is a working IMAP but
> i'm not particularly bothered whether it's released or not
>
> with my apache hat on, i'd like to see the JAMES community stronger
> and healthier so i'm willing to do what i can to help
>
> - 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