One of the joys of my role at Sun is that it provides me a fabulous vantage point for observing the trends and patterns of our industry, while personally having earned the perspective of time to compare historic and current events, and thus to note the distinction between the relevant, the immaterial and the curious. I've also had the good fortune of being in a unique position during Java's decade-long journey of ever-increasing access, openness, transparency and opportunity.
Beginning in 1995, Java source code was made available under a research license. Shortly thereafter, Sun led the creation of the JCP—comprised of partners representing commercial, non-profit and academic interests—to share in directing the evolution of the Java platforms. And the rest, as they say, is history. Java is now the most popular and widely distributed software platform. And, despite the fact that we're all so accustomed to the following truth, that Java has earned that preeminent position in every aspect of the network computing universe—servers, desktops, laptops, mobile phones, set top boxes, embedded devices, smart cards, transactional systems and digital media, is all the more remarkable.
It was May of 2006 when Jonathan and I announced to the crowd at JavaOne that Sun would release Java technology under an open source license and, following words with deeds, Sun began doing so last November. We clearly defined the platforms—Java SE, Java ME, and Java EE, and the license—GPLv2, much to the delight and surprise of many, including the Free Software Community. This action was the culmination of a series of careful steps that Sun had been taking to open up our development processes—creating a community development process for the JDK and open sourcing our Java EE implementation under the CDDL license, which will remain under Project Glassfish as another license option for developers.
Throughout this journey, I've slept well at night knowing that Sun has done our utmost to balance the priorities of open source communities along with the responsibilities and obligations that we have with the myriad of enterprises, individual developers and consumers who have invested in the promise of "Write Once, Run Anywhere". The choice of the GPLv2 license was and is key to this balance, because it takes away the potential for a closed fork of the code, ensuring that we can all maintain compatibility. This simple, singular and unambiguous decision was made to protect the freedoms of all participants in the Java ecosystem, ensuring that innovation remains in the open, and creating a bridge between the existing Java ecosystem and the world of GNU/Linux. With these two communities working together, the scale of creativity and opportunity will lead to innovations that will no doubt dwarf those we have seen to date.
So today we're taking the next step—one I discussed at this year's JavaOne conference. Sun is making the Java SE JCK—the TCK compatibility tests that determine whether an implementation faithfully conforms to the Java SE specification—available to the Java GPL software community using a license that continues to protect the Java compatibility promise while respecting the values of free software. This means that OpenJDK implementors, including GNU/Linux distributions can test free Java implementations based on code released under the GPL in the OpenJDK community, and validate that their implementations are compatible with Java. We're empowering distributors of free Java implementations to be part of the "Write Once, Run Anywhere" promise, while fulfilling all of their obligations under the GPL.
The TCK is a conformance test. It’s the single authority against which everyone tests, and of course, a conformance test that could be altered would have neither value nor trust. So the tests are fully available for learning from the code, and running against OpenJDK-derived GPL’ed implementations, but the license doesn't allow for changing the tests. Anyone who flunked their first driver's exam probably wished then that they could change the test to conform to their mistakes, but the rest of us on the road are all glad that is impossible.
We knew when we chose the GPL and the free software model for Java technology that we couldn't satisfy everyone's desires. This is the case for the Apache Harmony Project at the Apache Software Foundation. The Harmony Project has applied for a license to use the JCK under the JCP's Scholarship Program for qualified not-for-profit organizations. Sun has offered Apache Harmony a license to use the JCK and the Java Compatible logo at no charge once their implementation passes the tests, and we’re even offering free support to help Apache run the JCK. But because the Apache code is not governed by the GPL, and does not require code sharing by any entity using or modifying Harmony, the terms of this license are the same terms under which Sun licenses the JCK to commercial entities that build their own independent implementations of the Java SE platform. As was made clear in their open letter to Sun, the ASF is not satisfied with these terms.
For what it's worth, I completely understand why there is disagreement. There are fundamental principles and goals that separately define the GPL and Apache Software Licenses. Unlike the GPL, the Apache open source license does not require innovation to remain in the open. Java technology governed by the Apache license could be altered by any organization—commercial or non-profit—and rendered both incompatible and inaccessible to the community. The trust and value of “Write Once Run Anywhere” could not be upheld.
And this is simply different from what we have articulated as a goal and a priority for the Java platform for more than a decade—because compatibility matters, and our communities expect us to keep their work in the open as Free Software.
But I would be remiss if I didn't clearly state the relationship between Sun's open source programs and our customer, employee and shareholder responsibilities. Sun is first and foremost an innovation company. It is what separates us from other organizations that vend commodities or directly leverage the innovation of others. I'm extremely proud of our accomplishments and take significant pride in ensuring that those associated with Sun realize the benefits of those virtues. No other large organization brings together the concepts of open source contributions, large-scale innovation, and rewarding shareholders. Sun is leading a grand scale change in the software industry—and I’m very pleased with the results. With Java as a prime example, we are making our software freely available, to individuals and institutions, both commercial and non-profit, under the clear terms of the FSF—the GPL. We believe that “copyleft” is both unambiguous and instrumental in fulfilling goals of both communities and commerce.
Sun believes it is of paramount importance to secure trust in all communities—be they open source or enterprise—by being absolutely clear about one’s plans, intentions and motivations. Thus we will have to agree to disagree on this point with the Apache Software Foundation.
So to be clear, anyone—yes, even Sun’s competitors—can use the Java GPL source code for anything—yes, even a fork—as long as they publish their modifications under the GPL—no other consideration required. They can use the TCK to prove to themselves and the community that their contributions do not alter the promise of compatibility. But access to the code, the tests and the ‘Java Compatible’ brand governed by any other OSS license is both outside of our pact with the community, and not in Sun’s best business interests.
In the 2002 letter that authorized the creation of the TCK Scholarship Program under which Apache Harmony has applied for their TCK license, Sun acknowledged the desire of the Java community, and the Apache Software Foundation specifically, to create independent, open-source implementations of Java standards under the auspices of not-for-profit open development communities. Apache and others have done just that over the intervening five years under the scholarship program. For example, Apache has successfully used the Java EE TCK to certify its Geronimo project and compete against others like the JBoss community and Sun's own Glassfish—Java EE Application Server. Let's not lose sight of the big picture—Java is free and open. Sun continues to contribute both code and development efforts to many Apache projects such as Tomcat, Roller, River (Jini), HTTPD, and Derby.
Sun has now fulfilled the dream of free, open and compatible Java. I'm passionate about the value and virtues of free software and we've proven it—our most valuable assets are now open source. The path is open for completely free and compatible versions of the Java platform to be shipped with operating system distributions of all kinds. I encourage everyone in the open source communities to look at the new OpenJDK JCK license and let the team know how well it works for you.