Hi all,

I have something to point out that I think the entire Maven development
community needs to hear. I've been doing a lot of work recently with Maven
trunk, so I notice any (perhaps inevitable) instability that comes down the
pike from dependency APIs. Recently, I've been having a LOT of trouble in
this area.

Particularly in the Wagon API. It seems that a change was rolled into
wagon-provider-api around the beginning of February that introduced some new
methods into the Wagon interface. This is not in itself a problem, even
though the current code version is at 1.0-*beta*-3-SNAPSHOT. What causes an
issue is the fact that these new methods are then assumed to be in place by
the new DefaultWagonManager, effectively breaking that manager's backward
compatibility with previous releases of Wagon providers.

I tracked all of this down over the course of the past few days, in between
doing the things that I'm actually focused on doing. I can fix this one
problem by myself; I'm not pleading for help here. However, I cannot act as
the gatekeeper for all APIs that get used in Maven trunk, to ensure their
stability and backward compatibility. I've been informed that there are many
other such changes heading for Wagon...interestingly enough, a quick search
of my GMail account doesn't turn up any discussion of these changes (unless
it's buried in the deep past somewhere).

I know that this email can look a bit hypocritical on its face, but I really
do feel that we owe it to our user base to be a little more proactive in
ensuring backward compatibility than we have in the past. I understand that
many Maven developers are on various deadlines, but those deadlines do not
originate in the Maven ASF project, and shouldn't cause undue harm to the
community or its code. I'm not trying to say we need to rigidly adopt and
conform to some process or other, but we each individually need to take
responsibility for discussing and testing any major changes we plan to put
into Maven or its dependencies.

IMHO, pushing new features into a beta API is irresponsible unless you can
be ABSOLUTELY certain it will not impact backward compatibility. In these
cases, it is my understanding that the normal practice is to create a final
release of the existing API, and then push these bigger changes into the
next version.

If there's even a shadow of doubt about what effect a change will have on
the user community, we need to make a serious effort to start a discussion
about it on this list.


Regards,

John

Reply via email to