Last weekend was the start of the UCOSP project, which is a collaboration between about 20 Canadian universities and the open source community. It provides undergrads with the opportunity to contribute to ongoing open source projects, with the assistance and leadership of a group of mentors.

I have the privilege of working on a small corner of the Eclipse ecosystem. The application we are working on is part of the project which is unifying the build methodology of Eclipse projects; it is called CBI (Common Build Infrastructure).

Our project is really all about package management. In the Eclipse ecosystem, there exists a package repository format called p2, which integrates with the Eclipse IDE. It is where all the Eclipse platform plugins live, and is widely used for that reason.

There also exists a build tool called Maven, which is gaining consensus among Java developers. Part of the infrastructure provided by Maven is a package management system, which handles dependency management and resolution during the build process.

The repository formats of these two tools are incompatible, but there is a significant incentive to be able to work with both. A number of tools already exist which go some ways towards accomplishing this goal. For us, the critical one will be Tycho, which is a Maven plugin which is capable of building p2 repositories, and managing dependencies which are stored in p2 repositories. We will attempt to provide a tool which gives canonical mappings between artifacts in the various repositories and the source code they came from - a catalog of version numbers for projects, which users and contributors can use to determine the meaning of the version of their plugin or jar.