All,
Ubuntu are evaluating Java EE servers for inclusion in their "main"
distribution. See https://wiki.ubuntu.com/J2EESupport for information.
I think it would be cool for Geronimo to be chosen as their Java EE
implementation. I'd like to take some time to evaluate the Geronimo
problems that they are having, evaluate what (if anything) we can do
about these problems, and decide if there's anything that we want to
do to address their use case.
First, a little background. As I understand things, Ubuntu "main" is a
Debian-style repository that contains artifacts that are supported by
Ubuntu. All artifacts within "main" must be built from source. A build
of a main artifact cannot be dependent upon an internet connection
(any binary dependencies must either be built or already be present in
the "main" repository.
The problems that Ubuntu have encountered are:
1) Java SE 6
2) Dependencies
1) OpenJDK 6 seems to be the most stable JSE available in Ubuntu
"main", at the moment. Currently our build fails, if you attempt to
build Geronimo with a Java 6 JDK. There are some runtime errors, in
certain environments/runtimes. IMO, this is a relatively minor issue.
We already have Java 6 support identified as a Geronimo 2.2 feature.
Fixing the build issue is trivial (Ubuntu have already patched this).
Runtime issues are a minor hurdle that we're going to be implementing,
anyway.
2) Dependencies are a separate matter, altogether. As you can guess,
maven's handling of dependencies causes problems with Ubuntu's
philosophy for building main artifacts.
A) The build cannot access external maven repositories. I wonder if
it's possible for maven to retrieve artifacts from a Debian
repository, rather than from a maven repository. Perhaps some work has
already occurred in this area. Anybody know? If not, wondering if we
can work with the maven community to help address this issue.
B) A maven build will access multiple, redundant, versions of the same
artifact. We control the versions that will be included in our server
assemblies. However, we don't really control the build-time
dependencies that our build will require. Thus, the transitive
dependencies accessed during a build may be much more than will
actually be needed/used in the server assemblies. Is there some way we
can help limit the number of artifacts which must be available during
a build?
There may be other Ubuntu-related issues. Hopefully we can get some
participation in this discussion from the Ubuntu community. I'll reach
out to them.
--kevan