Ok, the smoke from the party-poppers has cleared; the haze from the cheap punch has faded; so let’s have a look at the detail of Sun’s move in the cold light of day.
This follows on from Java now Free Software (GPL).
The video announcement
[EDIT: This paragraph corrected, as a result of Dalibar Topic’s comment below]
This is a bit of a niggle. When you go to the announcement page, the video of the announcement (almost an hour’s worth) is presented in a proprietary format. Sun didn’t seem to get the irony of this at first, but Dalibar Topic, who is a developer on Kaffe, Classpath, and others, did some excellent work in transcoding it to OGG Theora. Sun now have a link to it on their page, and have been good enough to provide it under a Creative Commons license. Read about how he transcoded it using Free Software here. There is a DivX/XviD version here, but that’s a much bigger file.
What exactly is being GPL’d?
This is the big question; and is often the killer with this sort of announcement. I really hoped that it was going to be simple - that is was just going to be what it said on the tin - but, of course, it isn’t.
Now, as I mentioned in the last post, I’m not as familiar with Java as some of you might be; so I’m trying to keep track of which parts mean what. You’ll have to bear with me.
From the more detailed page of the Sun announcement:
- Open-Source Java SE: Today Sun is releasing the source code for the Java HotSpot virtual machine, the Java programming language compiler (javac), and JavaHelp online help software. Release of a fully buildable Java SE Development Kit (JDK) based nearly entirely on open-source code is expected in the first half of 2007.
- Open-Source Java ME: Sun is first releasing the source code for Sun’s Java ME Feature Phone implementation based on Connected Limited Device Configuration (CLDC), which currently enables rich mobile data services in more than 1.5 billion handsets, and the source code for the Java ME testing and compatibility kit (TCK) framework. Later this year, Sun will release additional source code for the Advanced Operating System Phone implementation for based on the Connected Device Configuration (CDC) specification and the framework for the Java Device Test Suite.
That should mean that we have a Free Software Java VM now. And a JDK "in the first have of 2007".
You will notice that they say they will release a "JDK based nearly entirely on open-source code". Quite what this means, we’ll have to wait and see. I have heard that they are working to free problem parts, or reimplement those they cannot. Presumably, these are parts that involve license agreements with other companies. I sincerely hope they can make a fully functional JDK with just Free Software, otherwise things could be rather soured, especially when it comes to inclusion in GNU/Linux distributions.
It’s interesting to hear that the Playstation 3 runs Java ME. It’s possible that may provide an inroad for Free Software to interoperate with Blue-Ray drives.
Sun say will also GPL Project Glassfish, an implementation of Java Enterprise Edition (EE), in the first half of 2007.
Sun have talked a lot about freeing Java, but what version?
The version released as Free Software is version 7. The current release is version 5.
Now, Sun’s FAQ is a little vague on the matter, but there may be some good news:
"We’re open-sourcing these components from a very early build of JDK 7. In order to prepare these components to be open sourced, we not only changed the license text but we also simplified the build process in order to make these components more easily buildable outside of the full JDK source tree. JDK 6, is nearly finished, hence we’re releasing these components from the JDK 7 tree. The only other differences between the JDK 6 and 7 versions of these components are minor bug fixes and enhancements that have already been integrated into the JDK 7 tree. When we open-source the full JDK we’ll make the sources for both JDK 6 and JDK 7 available. The community will have both a stable release - JDK 6 - on which to focus quality improvements, and JDK 7, the next feature release where all the action will be for innovation and new capabilities."
It says that once JDK 6 is released, the source code will be made available. It does not say that it will be GPL’d, but it is sort of implied. It also seems to say that JDK 7 is virtually the same as JDK 6, apart from "minor bug fixes and enhancements". That may mean that the code they have released can build into a usable JDK. I hope that my interpretation is correct.
The way I understand it is that, unless a VM is an official release from Sun, it can’t be called a "Java VM". This is a shame, but, again, is understandable. I just hope that this won’t lead to a situation like the one between Mozilla and Debian, where Debian can’t call the Firefox in their distribution "Firefox" because they exclude non-free artwork and make some minor patches, and has led to the GNU IceWeasel fork.
Interestingly, Sun have also released the Java mascot, "Duke" (who you can see at the top right of this post), under the Open Source BSD license. This means that the likes of Debian would not be put in the same position of having to exclude non-free artwork. "Duke" is still trademarked, but it neatly sidesteps the Mozilla/Debian issue. I would really like to know whether they did that in response to the Mozilla/Debian situation. If so, it would show how much they’ve been listening and want to get this right.
Even in the Free Software world, when modifications are made to a piece of software, they are normally contributed back to the main project. Forking is unusual, but is also a good thing. It’s what you do if you want to take a programme in a different direction. But you generally give it a new name, even if it holds a part of the original name, to show its heritage; and this is enforced by the GPL. I wish companies involved with Free Software would pursue name issues using the GPL, and not with trademark legislation. I hope Sun are listening.
Why the GPL? Surely the LGPL would have made more sense.
The released applications are licensed under the GPL, but the libraries also use the Classpath Exception. This allows you to "link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice…" This choice cleverly sidesteps the poorer reputation of the LGPL, while actually being friendlier to proprietary software companies. Given Java’s position in the market-place, and its commercial use, I don’t think we could ever have expected it to be straight GPL’d.
Classpath, GCJ, Kaffe
Jonathan Schwartz (Sun CEO), in the video announcement above, said, with reference to Classpath, GCJ, Kaffe, and similar projects:
"Now’s the time for us to get together and try to figure out how do we do the right balancing equation. Because we don’t want to do any redundant work with you, and we don’t want you doing any redundant work with us. And we’re more than happy to put all of our efforts together."
This attitude is reflected, in a much more qualified way, by some developers in these projects. When talking to Newsforge, as quoted on Linux.com, Mark Wielaard of Classpath, GCJ, and Eclipse says:
"There are lots of issues that we will have to look at. Can we combine GNU Classpath, GCJ, Kaffe, Cacao, JamVM, IKVM, etc. with the liberated Sun code immediately in such a way that we have an even better free platform really soon? How does the platform coverage compare between Hotspot and other [runtime environments]? What kinds of innovations can we carry over or must be kept separate? And how do we move the whole research field and GNU Classpath community projects (20+ now) forward without needing to rebase everything on some new code base?"
It would be nice to see these projects, including Sun Java, working together to take the best from each, and giving us the best platform possible. There is an argument for Sun taking the time to learn a great deal from these projects. Free software generally contains far less code than its proprietary counterparts. This makes it easier to maintain and debug. Sun may have an opportunity to learn how to take out some of the bloat.
I started this follow-on post expecting it to be quite negative. I had read rumours about some of the details, and thought there were going to be some serious downers. But having done my own research, I’m still quite positive about what Sun have done. There is some doubt about how complete the JDK will be, but they seem to be working to free as much as they can. It’s a shame we have to wait for some large chunks to be release, but to get as far as they have this quickly is actually quite an achievement.
Jonathan Schwartz seems genuinely enthusiastic, and that gives me some hope that there isn’t going to be too much of an anti-climax next year. His hounding of Rich Green, about whether he would GPL OpenSolaris, was interesting, even though it looked rehearsed.
I am cautiously optimistic. Actually, perhaps against my better judgement, I’m more optimistic than cautious. I shall be watching developments closely.
- My previous post
- Sun’s announcement
- OGG Theora video of the announcement (90MiB)
- Wikipedia article on the Classpath Exception
- Developers’ reactions at Linux.com
- Jonahan Schwartz’s blog
- Dalibar Topic’s blog