Sun recharges the Java community with open source announcement
Yesterday, Sun Microsystems made official what company executives had promised to do: open source Java. Specifically, Sun is releasing "Java platform implementations" under the GPL open source license. This effort will help recharge the Java community and provide renewed energy to improve the Java platform in order to take on competitive offerings, particularly Microsoft's .NET Framework.
Is this a big deal? According to Sun, it is:
"This singular act is the largest contribution ever made to the free software community, and places Sun squarely at the front of the open-source movement -- as the single biggest commercial contributor."
Embracing the GPL
The most surprising aspect of the announcement was the license chosen, the GPL, Version 2. The GPL (GNU General Public License; terms can be viewed here) has been at the forefront of the SCO-IBM legal battle over the Linux kernel, and it is seen as the most contentious of the "open source" licenses. Why? Because, as the license states, while GPL code is free and can be modified by anyone, individuals or organizations that modify GPL-licensed code and redistribute the derivative code must do so under the GPL -- and that includes making the software's source code available.
From Sun's perspective, it chose the GPL because it claims that "... using the GPL would result in the greatest incremental growth to the Java market." Specifically, Sun went with the GPL because it will (from the announcement FAQ):
"Minimize the likelihood of incompatible forks"
"Drive more adoption"
"Engage a broad cross-section of the open-source communities"
"Protect and enhance the investments of those who have licensed and chosen to support the Java platform"
It is also important to note that the Linux kernel is also distributed under the GPL, making it even simpler to distribute Java and Linux packages together. In addition, using the GPL makes the Java platform more palatable to international users. Sun has already seen firsthand how non-US governments and organizations are drawn to open source offerings (see this previous NRG post), such as the productivity suite OpenOffice.org, which also came from Sun.
Some details on the licensing
In reality, Sun is relying on a couple of different flavors of the GPL. In an online Q&A, James Gosling noted that:
"For the open-source JDK components, we chose the GNU General Public License (GPL) version 2 for almost all of the virtual machine, and GPL v2 with the Classpath exception for the class libraries and those parts of the virtual machine that expose public APIs. For Java ME, we went solely with GPL v2."
"Basically, [the Classpath exception] allows you to link an application available under any license to a library that is part of software licensed under GPL v2, without that application being subject to the GPL's requirement to be itself offered to the public under the GPL."

Also, it's important to understand that not all of Java has been open sourced. Java is a confusing term because it can mean a programming language (simply called Java), a runtime environment for running Java software (called the Java Virtual Machine, or JVM), and a variety of other related technologies. The Java Platform itself is broken up into three core groups: Java Platform, Standard Edition (Java SE), Java Platform, Enterprise Edition (Java EE; formerly known as J2EE), and Java Platform, Micro Edition (Java ME). SE contains technology for general Java software; EE is a superset that also includes many technologies to enable distributed, enterprise-class solutions; ME is aimed at devices with limited resources, such as cell phones.
Why is this important? Because Sun notes that:
"We are not open sourcing the Java programming language, nor the platform APIs and specifications, which are governed by the JCP. We're open sourcing Sun's implementations of the Java SE and Java ME specifications."
Still controlling the Java brand
By licensing much of Java under the GPL, Sun is removing one of the critical impediments to further Java adoption. But even though much of its code will now be available for free, Sun has not given up control over Java. How can that be? Because the company:
- Has sole control over the the Java brand, including the name and the coffee cup logo. While anyone can download, modify, and redistribute the emerging GPL licensed portions of the Java platform, the Java name and logo cannot be used without authorization from Sun (For a list of the Java trademarks and service marks, click here). The company makes it pretty clear: "Unless a third party enters into a written agreement with Sun, third parties generally may not use any Sun trademark (including the Sun marks, the Java marks, and the Solaris marks), as all or part of their company or product names."
- Has a special role in determining future Java-branded offerings. The Java Community Process (JCP) is a group tasked with evolving and improving all of Java, including the language, the platforms, and various related technologies. A 16-member Executive Committee "oversees the development and evolution of the Java technologies within the JCP," and Sun has a permanent seat on the committee. While there is currently an effort up revise the JCP process, the changes will not take place until mid 2007 or later, and Sun will continue to retain its special status.