So, I've been writing this series of blogs about how Sun's decision to block Apache Harmony has caused a lack of a Java SE 7 specification. Does the Oracle takeover change anything?
Obviously, at this point, everyone is just digesting the news that Oracle will soon own Sun (subject to various details). I don't have any special or inside information on this, but I can draw out some pointers from the past and my reading of licenses.
Oracle JCP voting
Firstly, lets look at the key vote that is recorded in the JCP minutes:
So, we have a clear indication from December 2007 that Oracle were actively supporting the ASF in the dispute with Sun.
Of course, that may have been a competitive move against Sun. Now that Oracle holds the power, it may choose to use its power very differently.
I've read the JSPA and JCP documents today to see what they say about Sun being taken over. I couldn't find anything in those documents (Feel free to correct me).
As such, we should go with the simple model that I drew up, however now all contracts previously signed between companies/individuals and Sun (about the JCP), will automatically become contracts with respect to Oracle. Thus, Oracle now sits in the centre of the JCP ring, and all power accrues to it. How it chooses to use that power will be a determining factor of Java's future.
OpenJDK, Glassfish, Netbeans, etc
In addition, any contracts signed with respect to any Sun Open Source project (the SCA) would I'm assuming naturally become contracts with Oracle. There is a FAQ on this though:
So, the SCA itself provides no guarantees that the SCA will continue to be honoured. There are some nice platitudes here about your own personal contributions, however the reality is that your single patch to a large project like Glassfish, Netbeans or OpenJDK is meaningless without the rest of the codebase.
The Java Trap
The 'Java Trap' is a reference to a campaign by Richard Stallman and the FSF to ensure that the Java platform was usable by Free software (ie. the FSF definition of free, not free as in beer).
A key aim of the campaign was to ensure that were Sun to ever change its mind about the licensing of Java, or be taken over by a Free/Open Source Hostile company, that existing Java programs could continue to be run. The 'Java Trap' battle was apparently won in May 2006 when Sun announced that Java would become Open Source, and later that the GPL license would be used.
Interestingly, this wasn't that long after Apache Harmony was launched in May 2005. Various commentators have suggested that Harmony's faster than expected progress was in fact a key factor in Sun's decision to make Java Open-Source.
If that is the case, then its interesting to consider just how important that pressure that Harmony (a project that many like to criticise) put on Sun to cause Java SE to become Open Source. We will probably never know for sure, but whatever the reasons, we should be thankful that Java SE is Open Source now and that Oracle can't remove that right.
The Java Trap still exists
I claim that there is still a Java Trap (although I'll accept that I'm talking about something slightly different to the original issue). So, what do I mean?
Well, as I've been banging on in this blog series, it's all about the IP.
OpenJDK 6 is a GPL licensed implementation of the Java SE 6 specification. As such, it can be tested using the official testing kit. And as I've shown, once you pass the tests, you get granted the IP.
But what about the IP added to Java since version 6?
Well, there is no specification for Java SE 7, we've established that. And Oracle as new masters of the JCP could choose to keep it that way. And without that specification and JSR, there is no testing kit, and there is no way to pass the IP from all the contributors to the differences between Java SE 6 and Java SE 7 to the completed Open JDK 7. Ironically, this is exactly the same situation that the ASF has been highlighting in the Apache Harmony dispute.
The problem isn't that the code of Open JDK 7 isn't Free and Open under the GPL. The problem is that there is no specification and JSR to grant the necessary IP rights.
Thus, the new 'Java Trap' is that an owner of Java could still choose to take the next version of Java back into a closed world again, simply through its control of the IP. Sure, existing programs would still run on Open JDK 6, but that could be the one and Free and Open version of Java SE.
Now, perhaps some will choose to ignore IP questions, or to consider them meaningless. Unfortunately lawyers don't think that way.
Some of you will be shouting 'but we'll fork Open JDK 6' in that scenario. But I'll say it again - you can't get the IP! You can't get certified as being compatible if there is no specification! The Trap is Back.
Of course, this is probably worst case scenario. After all, we have no idea what Oracle plans to do with Java. But there is one less major player now to keep the market honest.
Anyway, I do think its worthwhile considering and being aware that Bad Things can still happen. And that Open JDK and the GPLv2 isn't necessarily the big saviour that some might think it is. (But lets be very thankful for Open JDK 6, and perhaps Apache Harmony's role in making it happen).
Well, thats my slightly legalistic take on how the Java SE 7 and ASF/Sun disputes might play out now Oracle is in the frame. And I know some may disagree with my take on this.
I'm still hopeful that Oracle will do the right thing - the signs from two years ago are good. But sometimes power corrupts. So lets stay vigilant.
Apache Software Foundation member, speaking personally
Sun Java Champion, speaking personally
Not a committer on Harmony or OpenJDK