I’m planning two Fedora Features for OpenJDK in Fedora 10. I’ll write the Wiki pages soon.
Improved Multilib Support for JDK Packages
The first feature is improved multilib support for Java packages. This will involve fixing the darn persistent rpm scriptlet argument bug and adding multilib support to jpackage-utils and java-1.6.0-openjdk. I already have patches for these latter two but they depend on the rpm bug being fixed. We’ll have to carefully test upgrade paths when introducing these changes.
I’m hoping we can make java-gcj-compat multilib-compatible as well. My current plan involves using wrapper binaries for the tools instead of the direct symlinks we use now.
If we complete this feature Fedora 10 will allow parallel installation of 32-bit and 64-bit OpenJDK packages. Likewise for subsequent RHEL releases.
Java Packaging Improvements
The second feature deals with miscellaneous messiness in the current packages.
- Merging the rest of java-gcj-compat into libgcj. We’ve made steady progress in this direction with each Fedora release. Hopefully Fedora 10 will complete the process. Josh Sumali is already making headway on this.
- Security provider and extensions packaging improvements. This will allow us to package extensions like BouncyCastle such that they’re automatically loaded by the JRE. It will also allow us to move the GNOME Java Access Bridge currently bundled in the OpenJDK packages into its own separate package.
- Move %config files under /usr to /etc and replace them with symlinks.
- Rename java-1.6.0-openjdk* to openjdk*? Now that OpenJDK is becoming a standard component of Fedora we should revisit the JPackage naming conventions for it. The idea would be to use the python naming approach. The latest OpenJDK packages would be called openjdk and older releases would be renamed e.g., compat-openjdk6. (I’m a little conflicted about this. There’s some merit to the shared library approach — that once a name’s been used you can’t reuse it for an incompatible update because you’ll break dependents — but retaining one name across major versions forces dependent packages to update to the new version (a good thing for Fedora) and also simplifies dependency specifications.)
- Eliminate embedded full version strings from the OpenJDK directory names. We’d collapse directories like /usr/lib/jvm/java-1.6.0-openjdk-188.8.131.52 to just /usr/lib/jvm/java-1.6.0-openjdk. Our internal rpmdiff tool has trouble with versioned directories — this change would reduce rpmdiff output noise. It would mean that you couldn’t install OpenJDK 184.108.40.206 and OpenJDK 220.127.116.11 in parallel, but people should never need to do that. If they did, it would be to work around a bug that should just be fixed instead.
- Eliminate alternatives use from the OpenJDK packages, making them the exclusive owners of /usr/bin/* symlinks. I wish! It’s probably too soon to relegate other JDK alternatives to /opt though.
The primary goal of this feature is to make our OpenJDK packages easier to maintain. A secondary goal is to make packages that depend on OpenJDK easier to maintain. And the larger goal is smooth long-term maintenance of these packages in RHEL.
Plugin and Web Start
A shout-out to Planet JDK readers: Wouldn’t it be awesome if Sun’s cool plugin and Web Start rewrites were released in time to be shipped in Fedora 10? 🙂