2009-12-29

Plea to Maven repository managers

Thank you, library developers who provide a Maven repository, or push to the main repository. You make my life as a developer a lot easier by doing that.

I have a few small requests, which would in my opinion serve both you, and your developer users.

1. Please make your repository fast. Serve the files as straight-up static files, not through a Subversion HTTP repository interface, nor from the horrible depths of java.net.

2. Please make your repository rsyncable. While the lack of middle men has contributed greatly to the success of the Maven model, many organizations would like to, for various reasons, provide their developers with golden mirrors of the good stuff.

Since Maven repositories consist of directory entries, and plain files, providing a rsync read interface to the repository would probably lower your bandwidth costs and theirs, as well as allow the simple creation of second-level public mirrors.

3. Please use separate repositories for releases, milestones, and snapshots. If you push to the main repository, please don't push milestones or snapshots there.

4. Occasionally you will want to refactor the package structure of your product. Currently, it is a common sight in the public repository, for a popular library to have obsolete artefacts cluttering up the namespace, and it might be quite an adventure to try to find out which artefacts are in fact up to date, and which should absolutely not be used.

When you do major refactorings of this kind for a major release, please don't be afraid to break backwards compatibility by cleaning up the old, obsolete packages, or preserve compatibility through a clean break, by creating a new sub-namespace for the new generation of package architecture.

Your users are developers who can restore compatibility, after deciding whether to upgrade or to stay with the old version, by making a small change to pom.xml, pushing it to version control, after which compatibility is restored for all the developers.

0 comments:

Post a Comment