EucalyptusInMainSpec

Differences between revisions 5 and 12 (spanning 7 versions)
Revision 5 as of 2009-06-02 14:28:22
Size: 6845
Editor: lns-bzn-48f-81-56-218-246
Comment:
Revision 12 as of 2009-06-11 08:00:43
Size: 10835
Editor: lns-bzn-48f-81-56-218-246
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
 * '''Created''':
 * '''Contributors''':
 * '''Packages affected''':
 * '''Created''': June 2nd, 2009
 * '''Contributors''': ThierryCarrez
 * '''Packages affected''': lots
Line 10: Line 10:
This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. See also CategorySpec for examples. Eucalyptus, as part of the Ubuntu Enterprise Cloud, needs to move to main to be properly supported by Canonical. That means that all runtime and build-time dependencies (and all dependencies of the dependencies) must also move to main. This specification tracks which packages will need to move to main and efforts made to reduce the total number as much as possible.
Line 14: Line 14:
This section should include a paragraph describing the end-user impact of this change. It is meant to be included in the release notes of the first release in which it is implemented. (Not all of these will actually be included in the release notes, at the release manager's discretion; but writing them is a useful exercise.)

It is mandatory.
Eucalyptus is now part of the Ubuntu "main" repository, and fully supported by Canonical.
Line 20: Line 18:
This should cover the _why_: why is this change being proposed, what justifies it, where we see this justified. Eucalyptus is currently in universe, together with most of its Java library dependencies. Since Eucalyptus is part of the Ubuntu Enterprise Cloud product, it needs to be properly supported by Canonical, which means move to the "main" repository. However, packages in "main" also need to have all their runtime and build-time dependencies in "main" as well. Java software in general heavily makes use of other Java libraries, so this quickly snowballs into a large number of packages to move to main. Furthermore, there isn't so much Java-based software in main already (OpenOffice.org, tomcat6) so even some basic Java libraries need to be moved.
Line 24: Line 22:
 * Dave has been trying the UEC technology preview in 9.04 and aims to deploy UEC with the 9.10 release. As it will no longer be a technology preview, it needs to be properly supported.
Line 26: Line 26:
We need to try to keep the number of packages as small as possible in order to avoid MIR team overload. Some hacks (like duplicating some greedy source packages to avoid bringing lots of unnecessary build dependencies) are worth the trouble if they save a significant amount of packages. However Debian doesn't care about keeping the number of dependency packages small, so those hacks don't really make sense from a Debian perspective.
Line 30: Line 32:
 * libhibernate3-java in eucalyptus-javadeps : saves 34+ packages
 * libhibernate-entity-manager in eucalyptus-javadeps : saves 10+ packages
 * Use glassfish-javaee instead of geronimo-*
 * Removed dependency from libclassworlds-java -> maven-ant-helper: saves 8+ packages
 * xmlbeans is no longer needed (Axis2 build dep) so removed libxmlbeans-java libsaxonb-java
 * Use a specific eucalyptus-hibernate package instead of generic libhibernate3-java: saves 34+ packages
 * Include libhibernate-entity-manager in eucalyptus-hibernate: saves 10+ packages
 * Use glassfish-javaee instead of geronimo-* (?)
 * Remove dependency from libclassworlds-java -> maven-ant-helper: saves 8+ packages
 * xmlbeans is no longer needed (Axis2 build dep) so removed libxmlbeans-java libsaxonb-java from list
 * Add arch-based recommend in antlr3 + build as "any": removed antlr3-gcj from list
 * Add arch-based recommend in libbcprov-java + build as "any": removed libbcprov-java-gcj from list
Line 40: Line 44:
|| antlr3-gcj || antlr3 (rec) || ||
Line 45: Line 48:
|| jruby1.0 || || ej ||
Line 47: Line 49:
|| libaopalliance-java || || ej ||
Line 55: Line 56:
|| libbcprov-java-gcj || libbcprov-java (rec) || ||
Line 59: Line 59:
|| libcommons-attributes-java || || ej ||
Line 72: Line 71:
|| libjamon-java || || ej ||
Line 100: Line 98:
=== New packages expected from RefactorEucalyptusJavadepsSpec === === New dependencies expected from Eucalyptus 1.6 ===

 * netty 3.1
 * dnsjava
 * iscsitarget
 * eucalyptus-hibernate

=== P
ackages expected from RefactorEucalyptusJavadepsSpec ===

 * Axiom
Line 103: Line 109:
 * Google Web Toolkit  * Drools
 * Mule
 * MVEL
 * OpenSAML/1.1 Java
 * WSS4J
Line 105: Line 115:
 * Mule
Line 108: Line 117:
 * Drools
 * MVEL

=== Extra dependencies from Debian's Spring packaging ===

TODO: split between old ej build-deps and spring things

jruby1.0, aopalliance libasm3 commons-attribute, jamon... are spring ej build-deps
 * Google Web Toolkit

=== Dependencies from Spring ===

==== Core dependencies ====

||<rowbgcolor="#cccccc"> '''Package''' || '''Dependency of''' || '''Extra build dep of''' ||
|| jruby1.1 || || Spring ||
|| libcommons-attributes-java || || Spring ||
|| libaopalliance-java || || Spring ||
|| libjamon-java || || Spring ||

==== Extra dependencies coming from Debian packaging ====

Note: we would patch so that it uses:
 * libtomcat6-java instead on libtomcat5.5-java (avoiding libcommons-[el,launcher,modeler]-java)
 * tomcat6-examples instead of glassfish-appserv
Line 123: Line 141:
|| glassfish-appserv || Spring || ||
Line 125: Line 142:
|| libtomcat5.5-java || Spring || ||
|| libjdom0-java || libfreemarker-java, velocity ||
|| libwerken.xpath-java || velocity ||
|| libcommons-digester-java || libstruts1.2-java, libcommons-validator-java, libcommons-modeler-java ||
|| libcommons-validator-java || libstruts1.2-java ||
|| libcommons-el-java || libtomcat5.5-java ||
|| libcommons-la
uncher-java || libtomcat5.5-java ||
|| libcommons-modeler-java || libtomcat5.5-java ||
|| libtiles-java || Spring || ||
|| libquartz-java || Spring || ||
|| libxapool-java || Spring || ||
|| libvelocity-tools-java || Spring || ||
|| testng || Spring/test || ||
|| lib
jdom0-java || libfreemarker-java, velocity || ||
|| libwerken.xpath-java || velocity || ||
|| libcommons-digester-java || libstruts1.2-java, libcommons-validator-java, libcommons-modeler-java, libtiles-java || ||
|| libcommons-validator-java || libstruts1.2-java || ||
|| libcommons-bean
utils-java || libtiles-java || ||
Line 136: Line 155:
 * 60 from primary list
 * 8 from RefactorEucalyptusJavadepsSpec
 * 15 from Debian's Spring

'''Total: 85 packages to MIR'''
 * 54 from primary list
 * 4 from new Eucalyptus deps
 * 11
from RefactorEucalyptusJavadepsSpec
 * 20 from Refactor/Spring

'''Total: 89 packages to MIR'''
Line 145: Line 165:
 * Reimplement/fix debian Spring, get rid of 15 packages  * Do a minimal Spring rather than take Debian spring, get rid of (at most) 16 packages
 * Include libhibernate-[commons-]annotations in eucalyptus-hibernate: saves 3 packages
 * include libehcache in eucalyptus-hibernate: saves 3 packages
 * Get rid of WSS4J/OpenSAML dependency: saves 2 packages
Line 149: Line 172:
tbd
Line 152: Line 176:
It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.
''It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.''
Line 158: Line 182:
This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved. ''This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.''
Line 162: Line 186:
Use this section to take notes during the BoF; if you keep it in the approved spec, use it for summarising what was discussed and note any options that were rejected. === UDS discussion ===

==== Current status ====
 * 99 packages which would need to move to main.
 * Java in main is currently driven by OpenOffice. Tomcat6 is there, but has few dependencies.

==== Future ====
 * Eucalyptus version for Karmic should have fewer dependencies anyway from upstream refactoring.

==== How can the number of build/runtime dependencies be reduced? ====
 * Get rid of anything not necessary
  * Geronimo spec packages (already provided by glassfish-j2ee)
 * Move parts into Eucalyptus code
 * Refactor packages (e.g. hibernate pulls in a lot of stuff)
  * Requires multiple source packages or only to promote some resulting binaries to main.
    (doko recommends duplicating the source package and documenting it)

==== What could be expected to be refused inclusion to main ====
 * Active upstream criteria
  * Annogen
  * OpenSAML
  * WSS4J?
 * Known to be insecure
  * Nothing obvious
 * Partial builds (because of non-free dependencies)
  * Mule
  * We don't really care

==== Size issues (adding to default CD) ====
 * GWT is 6MB of binary
  * 1.6 should be more granular and work with existing java packages more
 * JRuby is 3MB
  * Just be a build-time dependency of GWT
 * libjgroups-java, 3MB. Not needed ?
 * glassfish-toplink-essentials, 2.4MB, comes from hibernate
 * Avoiding JDK would save about 50MB of CD space
 * Avoiding GCJ would save about 20MB

==== Can we use the new Spring packaging from Debian? ====
 * Not included yet in Debian, but work is underway
 * Might make too hard choices for us ? Testing from Eucalyptus side needed.

==== Safety net ====
 * Keep a eucalyptus-javadeps package to drop in any problematic parts which can't be fixed (hibernate?).
  * One tiny part of Drools

==== Action Summary ====
 * Which Eucalyptus version we'll use in Karmic and its dependencies?
 * Can we use Spring from Debian?
 * What can we do to reduce Hibernate size?
  * Will it be acceptable to move JBoss to main?
 * JDK dependency investigation
 * Ask Colin about blacklisting for the server seed only to solve GCJ issue
 * Once it's known what is required, start preparing/filing MIRs to avoid a last minute panic.

Summary

Eucalyptus, as part of the Ubuntu Enterprise Cloud, needs to move to main to be properly supported by Canonical. That means that all runtime and build-time dependencies (and all dependencies of the dependencies) must also move to main. This specification tracks which packages will need to move to main and efforts made to reduce the total number as much as possible.

Release Note

Eucalyptus is now part of the Ubuntu "main" repository, and fully supported by Canonical.

Rationale

Eucalyptus is currently in universe, together with most of its Java library dependencies. Since Eucalyptus is part of the Ubuntu Enterprise Cloud product, it needs to be properly supported by Canonical, which means move to the "main" repository. However, packages in "main" also need to have all their runtime and build-time dependencies in "main" as well. Java software in general heavily makes use of other Java libraries, so this quickly snowballs into a large number of packages to move to main. Furthermore, there isn't so much Java-based software in main already (OpenOffice.org, tomcat6) so even some basic Java libraries need to be moved.

User stories

  • Dave has been trying the UEC technology preview in 9.04 and aims to deploy UEC with the 9.10 release. As it will no longer be a technology preview, it needs to be properly supported.

Assumptions

We need to try to keep the number of packages as small as possible in order to avoid MIR team overload. Some hacks (like duplicating some greedy source packages to avoid bringing lots of unnecessary build dependencies) are worth the trouble if they save a significant amount of packages. However Debian doesn't care about keeping the number of dependency packages small, so those hacks don't really make sense from a Debian perspective.

Design

Proposed actions for package number reduction

  • Use a specific eucalyptus-hibernate package instead of generic libhibernate3-java: saves 34+ packages
  • Include libhibernate-entity-manager in eucalyptus-hibernate: saves 10+ packages
  • Use glassfish-javaee instead of geronimo-* (?)
  • Remove dependency from libclassworlds-java -> maven-ant-helper: saves 8+ packages

  • xmlbeans is no longer needed (Axis2 build dep) so removed libxmlbeans-java libsaxonb-java from list
  • Add arch-based recommend in antlr3 + build as "any": removed antlr3-gcj from list
  • Add arch-based recommend in libbcprov-java + build as "any": removed libbcprov-java-gcj from list

Resulting list (without those from RefactorEucalyptusJavadepsSpec)

Binary Package

Runtime dep of

Extra Build dep of

antlr3

ej

glassfish-javaee

ej

libjgroups-java

glassfish-toplink-essentials

libhibernate-annotations-java

groovy

ej

janino

ej

junit4

groovy

libasm2-java

ej, groovy

libasm3-java

ej, libjarjar-java

libasm-java

ej, libcglib2.1-java

libaspectwerkz2-java

libcglib2.1-java

libavalon-framework-java

ej

libbackport-util-concurrent-java

libdom4j-java, libehcache-java

libbcprov-java

ej

libjgroups-java

libc3p0-java

ej

libcglib2.1-java

ej

libclassworlds-java

groovy

libcommons-cli-java

ej, groovy

libcommons-codec-java

ej, libjaxme-java, libcommons-httpclient-java

libcommons-fileupload-java

ej

libcommons-httpclient-java

ej

libcommons-io-java

ej, libcommons-fileupload-java

libcommons-jxpath-java

ej

libconcurrent-java

libaspectwerz2-java

libdom4j-java

ej, libjaxen-java, libsaxonb-java

libehcache-java

ej

libgoogle-collections-java

ej

libhibernate-annotations-java

ej

libhibernate-commons-annotations-java

ej

libjarjar-java

libaspectwerkz2-java

libjavassist-java

ej

libjaxen-java

ej, libdom4j-java, libxom-java

libjaxme-java

libdom4j-java

libjdom1-java

ej, libcommons-jxpath-java, libjaxen-java, libsaxonb-java

libjettison-java

ej

libxstream-java

libjgroups-java

libehcache-java

libjibx-java

ej

libjmock-java

libqdox-java

libjoda-time-java

libxstream-java

libjrexx-java

libaspectwerkz2-java

libjsr107cache-java

libehcache-java

libjunitperf-java

libdom4j-java

libmockobjects-java

ej, groovy

libow-util-ant-tasks-java

libasm-java, libasm2-java, libasm3-java

libqdox-java

libjibx-java

ej, libcommons-attributes-java

libslf4j-java

ej

libstringtemplate-java

antlr3

libtrove-java

libaspectwerkz2-java

libwoodstox-java

libjibx-java

libxml-commons-external-java

ej

libxml-security-java

ej

libxom-java

ej, libsaxonb-java

libxpp2-java

libdom4j-java

libxpp3-java

ej, libdom4j-java, groovy, libjibx-java

libxstream-java

ej, groovy

New dependencies expected from Eucalyptus 1.6

  • netty 3.1
  • dnsjava
  • iscsitarget
  • eucalyptus-hibernate

Packages expected from RefactorEucalyptusJavadepsSpec

  • Axiom
  • Backport Util Concurrent 3.1
  • Drools
  • Mule
  • MVEL
  • OpenSAML/1.1 Java
  • WSS4J
  • Spring
  • JUG
  • Jetty 6
  • Google Web Toolkit

Dependencies from Spring

Core dependencies

Package

Dependency of

Extra build dep of

jruby1.1

Spring

libcommons-attributes-java

Spring

libaopalliance-java

Spring

libjamon-java

Spring

Extra dependencies coming from Debian packaging

Note: we would patch so that it uses:

  • libtomcat6-java instead on libtomcat5.5-java (avoiding libcommons-[el,launcher,modeler]-java)
  • tomcat6-examples instead of glassfish-appserv

Package

Dependency of

Extra build dep of

libjdo-api-java

Spring

libfreemarker-java

Spring

velocity

Spring

libjexcelapi-java

Spring

libstruts1.2-java

Spring

libibatis-java

Spring

libtiles-java

Spring

libquartz-java

Spring

libxapool-java

Spring

libvelocity-tools-java

Spring

testng

Spring/test

libjdom0-java

libfreemarker-java, velocity

libwerken.xpath-java

velocity

libcommons-digester-java

libstruts1.2-java, libcommons-validator-java, libcommons-modeler-java, libtiles-java

libcommons-validator-java

libstruts1.2-java

libcommons-beanutils-java

libtiles-java

Total

Total: 89 packages to MIR

Other potential actions to reduce number of packages

  • Remove libcglib2.1-java -> libaspectwerkz2-java dependency, get rid of 5 packages

  • Do a minimal Spring rather than take Debian spring, get rid of (at most) 16 packages
  • Include libhibernate-[commons-]annotations in eucalyptus-hibernate: saves 3 packages
  • include libehcache in eucalyptus-hibernate: saves 3 packages
  • Get rid of WSS4J/OpenSAML dependency: saves 2 packages

Implementation

tbd

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage.

This need not be added or completed until the specification is nearing beta.

Unresolved issues

This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.

BoF agenda and discussion

UDS discussion

Current status

  • 99 packages which would need to move to main.
  • Java in main is currently driven by OpenOffice. Tomcat6 is there, but has few dependencies.

Future

  • Eucalyptus version for Karmic should have fewer dependencies anyway from upstream refactoring.

How can the number of build/runtime dependencies be reduced?

  • Get rid of anything not necessary
    • Geronimo spec packages (already provided by glassfish-j2ee)
  • Move parts into Eucalyptus code
  • Refactor packages (e.g. hibernate pulls in a lot of stuff)
    • Requires multiple source packages or only to promote some resulting binaries to main.
      • (doko recommends duplicating the source package and documenting it)

What could be expected to be refused inclusion to main

  • Active upstream criteria
    • Annogen
    • OpenSAML
    • WSS4J?
  • Known to be insecure
    • Nothing obvious
  • Partial builds (because of non-free dependencies)
    • Mule
    • We don't really care

Size issues (adding to default CD)

  • GWT is 6MB of binary
    • 1.6 should be more granular and work with existing java packages more
  • JRuby is 3MB
    • Just be a build-time dependency of GWT
  • libjgroups-java, 3MB. Not needed ?
  • glassfish-toplink-essentials, 2.4MB, comes from hibernate
  • Avoiding JDK would save about 50MB of CD space
  • Avoiding GCJ would save about 20MB

Can we use the new Spring packaging from Debian?

  • Not included yet in Debian, but work is underway
  • Might make too hard choices for us ? Testing from Eucalyptus side needed.

Safety net

  • Keep a eucalyptus-javadeps package to drop in any problematic parts which can't be fixed (hibernate?).
    • One tiny part of Drools

Action Summary

  • Which Eucalyptus version we'll use in Karmic and its dependencies?
  • Can we use Spring from Debian?
  • What can we do to reduce Hibernate size?
    • Will it be acceptable to move JBoss to main?
  • JDK dependency investigation
  • Ask Colin about blacklisting for the server seed only to solve GCJ issue
  • Once it's known what is required, start preparing/filing MIRs to avoid a last minute panic.


CategorySpec

EucalyptusInMainSpec (last edited 2009-08-10 09:46:57 by lns-bzn-48f-81-56-218-246)