DivergingMainUniverse

Overview

Sometimes it becomes necessary to take a subset of functionality of a Java library in Universe and move it to main or update a package in main to exclude particular dependencies - normally new dependencies in universe.

In the past this has created compatibility issues due to missing functionality in packages in main.

It was agreed at UDS-N that when this situation occurs, the following steps should be taken:

  • The fully functional package should be maintained intact with no naming changes. If will need to be demoted to universe to make way for the -main variant.
  • The 'main' version of the package should be branched from the fully functional package:
    • Required features/dependencies disabled
    • Rename from lib<name>-java to lib<name>-java-main

  • Any dependencies on the package in main will also need to be updated to use the new -main version.

This approach will ensure that the delta between Ubuntu and Debian is minimised and the Ubuntu development and support focusses on packages in main rather than those in universe.

Example

NOTE - this was not actually what happened and hence generated this policy.

Package: libcommons-fileupload-java

  1. A new version of this library (in main) is synced from Debian which pulls in a new dependency on libportlet-api-2.0-spec-java.
  2. libportlet-api-2.0-spec-java uses maven-debian-helper and maven as a build tool - not in main.
  3. No appetite at this point in time for 70+ MIR for Maven.
  4. libcommons-file-upload-java should be demoted to universe.
  5. New libcommons-fileupload-java-main created minus functionality and dependency on libportlet-api-2.0-spec-java
  6. eucalyptus should be updated to depend on libcommons-fileupload-java-main

What actually happened was the other way round - a -universe package was created which then resulted in a larger number of dependent packages being updated to point at this new version.

Where work needs to be done

Package

Description

Why blocked

libcommons-fileupload-java

Specialise -main version and update dependencies, re-sync normal version into universe

New deps pull in maven

libmvel-java

Current version in main is version 1 - rename to libmvel1-java; libmvel2-java in universe - rename to libmvel-java

New deps pull in maven

antlr3

Current version in main is kludged; rename to -main; resync normal up-to-date into universe

New deps pull in maven

JavaTeam/KnowledgeBase/DivergingMainUniverse (last edited 2011-03-24 16:21:36 by host81-153-227-142)