For those unaware of what Gump is, it is an initiative that I started last
year to see if I could help raise awareness of version compatibility issues
and increase the amount of timely communications between independent
subprojects.  I am setting aside some time in the next week or two to try
to increase the documentation for this, but I decided to start with this
e-mail.

This is a general status report on the state of the various projects which
I try to follow with Gump.  For those unaware of what Gump does - it
attempts to compile every project which I am following with either the
absolutely latest version of every dependency (from CVS) of other projects
I follow, or with a consistent set of dependencies (e.g. JDK version - I am
currently standardizing on Sun JDK 1.3).  You can see current results at
http://jakarta.apache.org/builds/gump/latest/.

Periodically, I identify potential issues.  In many cases, the immediate
reaction is "why are you singling out my project?".  Nothing could be
further from the truth - I am trying to work with all projects in order to
increase the awareness of maintaining version to version backwards
compatibility.  Furthermore, I understand that at times this is not
possible.  What I would like to see is that such changes are only done
after careful consideration and public discussion of the implications.

Here are a list of the issues I am currently tracking.  Request: please do
not reply back to the general lists with rationale for individual changes -
please simply consider working with the affected parties to mitigate the
impact of the changes.

   DOM3 adds methods to the DocumentImpl interface.  This requires source
   code changes in projects which implement this interface.  This affects
   dbxml.

   Despite the relatively recent release of Ant, most Avalon projects will
   not build with that version of Ant.  They require a small but important
   change in the jar task.  Of course, they build with the version of Ant
   checked into their respective cvs's, but the question is: do we really
   want or need a separate version of Ant for every component?

   The xml-batik project is in the process of changing the method
   signatures in 10 methods of a public interface implemented by fop.
   Since cocoon builds upon both fop and batik, all projects will need to
   step up at once.  Of course, other non-Apache projects build upon
   cocoon, and coordinating everybody is not a viable option.

   The Jakarta commons project latka is contemplating an alpha.  Part of
   their functionality is based on code contained in the HttpClient commons
   project.  Or rather, was contained there - it was rolled back.  In order
   to build latka, one needs to use a version of HttpClient prior to the
   rollback.  There is no released version of latka.

   Tyrex depends on log4j interfaces which were deprecated, an alternative
   was publically released, and ultimately removed.  I've repeatedly
   submitted a patch to their mailing list, but have not heard a response
   in either occasion.

   Tomcat4 depends on interfaces which tyrex removed over six months ago.

   Scarab depends on an unreleased snapshot of torque in order to build.
   As far as I can tell, it will not build with the version contained in
   any public releases of turbine, nor with the current cvs tip.  I mention
   this here, not because Scarab is a Apache project (it is not), but as an
   example of the impact of changes that are made to Apache projects have
   on others.

   Based on inspection, I don't believe that turbine-2 and turbine-3 can
   coexist in a classpath.  The jakarta-jetspeed, jakarta-turbine-jyve, and
   jakarta-turbine-orgami projects depend on turbine-2.  The
   jakarta-turbine-flux and scarab projects depend on turbine-3.

   On a lighter note, cruise control - a project which is intended to help
   with continuous integration based on an approach of testing every change
   after a commit has failed to compile for me for over a week.  The
   problem?  More open braces than close braces in a source file...

To help add balance to this picture, here are a few success stories:

   For pretty much the past year, Ant has been virtually 100% upwards
   compatible.  The few exceptions were cases where project definitions
   (presumably unintentionally) depended on bugs in prior versions of Ant.
   In prior years, Ant was rather notorious for introducing breaking
   changes in every release.

   After literally years of experimentation and perennial alpha state,
   Avalon and Turbine have released stable versions of their respective
   code bases.

   Projects like cocoon and jetspeed have been on the receiving end of a
   number of patches of the form "I have made a change to a component that
   you use - here is a patch which makes you work again".

   Projects like log4j and turbine are taking great care in carefully
   marking interfaces as deprecated and only removing them after projects
   have had adequate opportunity to step up.  In the case of the pending
   deprecation of the log4j Category class, Ceki has indicated that he
   plans on keeping the old interface around for at least a year.

- Sam Ruby


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

Reply via email to