Distributing Sun's Java to Debian, Ubuntu, Gentoo, Open Solaris, ..and, "it's a matter of 'how'"
I'm at Java ONE. I've been up to my eyeballs in work on a project which Jonathan announced this morning. The project had a brief enough mention that I want to explain it to y'all.
If you watched the keynote you saw Mark Shuttleworth come up for a brief chitchat about stuff, and what it's like to be in space. That's interesting enough, but there were a couple pieces of big news in that chitchat.
For the last few months a team of us have been working on a change in the licensing of Sun's Java implementation that makes it easy for a Linux or Open Solaris distributor to redistribute Sun's Java.
Okay, that's a mouthful. Let's break this down into small pieces.
First, the effect is to make this possible (on Debian):
# apt-get install sun-java5-jre
That's how easy it is, now, on the latest "testing" versions of Debian and Ubuntu, to install Sun's Java. The packaging for Gentoo should be released soon, if it hasn't already, and is similarly easy.
We have a new license, the Operating System Distributor License for Java v1.1 (hereinafter known as DLJ). The license is the big deal here.
We have a project, jdk-distros.dev.java.net, to act as a home for every Linux or Open Solaris distributor who wants to redistribute Sun's Java. The project is meant to house tips, tricks, bundling scripts, and be a collaboration point around getting this to work correctly.
This project is not limited to Ubuntu, Debian and Gentoo. This project is open to every distributor of Linux or Open Solaris. The DLJ allows operating system distributors to retrieve Sun's Java implementation, and repackage it for the packaging system on their operating system. In the case of Debian and Ubuntu, the Debian folk have worked with us closely to create .deb packaging that sits in their non-free repository. The same can be done for other operating systems.
Now... Compatibility matters, right?
If you look at the jdk-distros project you see the operating system distributors are not required, under the DLJ, to run the JCK. There's several factors to this which retain compatibility. First, these are the same bits that we, Sun, have tested. What's different here is we tested those bits on a different platform than the ones we tested.
In the DLJ certain obligations are placed on the OS distributors. First, the OS distributors are responsible for any compatibility problems. Well, most of them. Another requirement is to distribute the whole ballowax, no subsetting, and no mingling of Sun's bits with bits from other Java implementations. All the details are posted on the jdk-distros project, and if you have any question feel free to ask.
On the jdk-distros project we intend to have that be a place to work through any compatibility issues that arise. Sometimes the issue will be in the way a specific OS is configured, other times it will be a problem in Sun's implementation of Java. We expect to work through the issues, and distribute requests for change appropriately.
So, I think I've said enough about this for now.
I just want to say a little about "it's a matter of 'how'" ...
Well, I found that very surprising given what our management has been saying all along. I had no idea any statement of that sort would be made. But about a month or two ago it occurred to me ... if/when we were to open source our Java implementation, we would have to go through several years of exercises in opening up the processes. We have 11+ years of closed processes to rethink, and it's not something you can do overnight.
Fortunately we've had this project, internally named Peabody, which has been working to open up transparency around the Java processes. Clearly that can be seen as a first step to moving to open source.
It's going to be interesting...