How free is the OpenJDK?
A good starting point for thinking about the consequences of the Oracle + IBM deal is in the blog of Gianugo Rabellino:
... I will readily admit there is a positive side in IBM ditching Harmony and joining OpenJDK, as the world is now closer to enjoy a strong Java platform.
The problem is the price tag. With IBM surrendering to the Oracle bully, the Java Community Process is now as credible as Weekly World News, and basically nobody is safe. The spin pros have been busy focusing on a strengthened, renewed Java effort, and they conveniently (or should I say pragmatically?) forgot to mention how dangerous it is to be under the illusion that the JCP is a neutral and cooperative body producing Open Source friendly specs when the truth is Oracle can and do whatever they want, including breaching the JSPA and getting away with it. Or play puppet master even with mighty IBM. I wish all my FSF friends will soon recover from the initial excitement for a GPLed Java and realize how, really, the party is over and we have much less freedom than before. And maybe a better JVM with no competitors – but is it worth the price?
My point. First, I'm sad that Harmony is probably going to die. Having one more independent implementation of Java, under a different license, was a plus for the community. In any case, things haven't changed with the Oracle management: the no-TCK policy for Harmony was started under Sun and, in my opinion, it was not something unexpected, as they choose the GPL license that guarantees the control of the product by means of the original creator (note that I'm not criticizing Sun's approach: I understand that from the corporate point of view it could have been a good move, the problem here is harmonizing the corporate's and the community's needs).
I disagree with Gianugo when it says that "Java is not free". "Freedom" to me is a shades-of-gray concept, not black and white. Definitely, we're less free if Harmony goes; but we're still free to fork OpenJDK, if we want. While full light hasn't been shed on the scene yet, my opinion is that forking the GPLv2 OpenJDK would save you from any patent litigation. So, my rephrasing of Gianugo's point is that we have to understand how much freedom we have and whether we're free enough with the single choices: OpenJDK or an OpenJDK fork. At the moment, I don't know, but I suppose this situation gives use some decent protection. We need to think more about that.
Let's remember that "freedom to fork" is for us a way to protect ourselves from a possible future Java evolution that we don't like. So, to decide whether Java is free enough or not, we should start with writing down what we'd like to do and protect from. A good starting point are the four freedoms defined by the FSF:
- The freedom to run the program, for any purpose (freedom 0).
- The freedom to study how the program works, and change it to make it do what you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
So, in future discussions, I'd really like to see "free" with a quantification, rather than an absolute quality.
A final consideration from me. There's some discussion about whether Harmony could survive after being abandoned by IBM or not. Stephen Colebourne (who's supposed to know what he's talking about) looks pessimistic:
While never solely an IBM project, I would expect this to effectively mean the termination of the Harmony project.
Other commenters disagree and think that Google could step in, given its interest in Harmony as the basis for Android (even though I have still to understand how, in 2010, the two projects are really related). I feel Google is really alone after the IBM move (I suppose that other corporates will jump on the Oracle + IBM wagon), but they have got large shoulders.
Now, my point. Let's suppose that there's no Oracle lawsuit against Android (hence, implicitly, against Harmony), or that Oracle loses the lawsuit. Let's suppose at a certain point the community really breaks with Oracle and moves away from Java, deciding to create a *ava fork that it's not based on the OpenJDK because, for some reason, it reveals not to be free enough. It would be possible to resume work on Harmony: the fact that you don't have a TCK for it just means you can't call it Java™. But the community, by testing its projects on it, would be able to determine whether it's really Java compatible and a viable escape way. In case of a final break with the Java steward, nobody would be much fond of the Java name, being the effectiveness of the solution the only important point.
Now, reading "never solely an IBM project, I'd expect this to effectively mean the termination", or even optimistic people seeing a future to Harmony but only bound to Google stepping in, reinforces my idea that the community is not able to run a *VM technology alone, without the support of a major corporate. Isn't this the real problem, indeed, beyond any TCK or legal disputation?
PS As a further food for brain, I've learnt that Shark has been finally merged to OpenJDK 7. Shark is an IcedTea contribution, allowing to use the LLVM JIT to run Java bytecode. It has been introduced to extend the supported microprocessor architectures and simplify the porting process. It could be an escape lane in case the community decides to be free to choose a different *VM than the one coming from Oracle or IBM. LLVM is developed in the open (BSD license) by the University of Illinois, but my understanding is that Apple's funding and contributions are fundamental for this project. This seems to confirm that for a successful *VM technology to exist, you need a large corporate. And the problem remains.