Just what did Sun open source?
posted Friday, 17 November 2006
As part of my role for TSS, I have been reading peoples reaction to the big news that Sun dropped on us this week. For the most part the response has been pretty positive. Most of the negative comments that I’ve read seem to be related to some misconceptions. The first misconception is what exactly is being open sourced. The second and biggest is in regards the choice of license.
What is being open sourced is Sun’s implementation of the Java specification. The Java specification is still controlled by the JCP and you can’t call something Java unless it passes the compatibility test suite (CTS). These are the controls that should offer us protection from incompatible forks that come with the Java label. The second key element in this protection scheme is the choice of license.
What people fear is that GPL license requires that anything that touches a piece of GPL’ed code must be published. The implication is that all Java applications that make use of Sun’s JDK/JRE would be copy-left’ed into the world of open source. This is where the Classpath exception comes into play.
Classspath is the GNU implementation of the Java platform specification. In the license agreement that comes it is a specific exception to the GPL license. That exception limits the reach of the GPL license by stating that only code modifications to Classpath must be republished and code extending or using Classpath does not. Let’s consider this in light of an example using java.util.ArrayList.
If all you were to do was subclass ArrayList than the Classpath exception would apply and you would not have to publish your code. However, if you were to alter the code in ArrayList, than you would be required to publish your modifications. As you can see the Classpath exception leaves business free to build upon yet protects the underlying implementation. Once more, the Java trademarks are still owned by Sun and before anyone can use them they must enter into an agreement with Sun. This agreement would include having the implementation pass the CTS. So, if something isn’t called java you know that it hasn’t passed the CTS and it maybe wise to avoid that particular distribution.
I for one think Sun has got this one right.