Community-led development "The Apache Way"
We have created the following FAQ to provide background information on the open letter to Sun microsystems.
Q : What is the Apache Software Foundation? A : The Apache Software Foundation - or ASF - is a 501(c)3 public charity that, among other things, provides a foundation for open, collaborative software development projects by supplying hardware, communication, and business infrastructure. The Foundation website is http://www.apache.org and you can read more about the Foundation at http://www.apache.org/foundation/faq.html Q : What is the Apache Harmony project? A : Apache Harmony is a project of the Apache Software Foundation focused on creating an independent, compatible implementation of Java SE. That means we're writing the whole implementation from scratch, or incorporating software from other open source projects. You can read more about the Apache Harmony project at its website http://harmony.apache.org Q : Why was Harmony created? A : Harmony was created for many reasons. The fundamental reason is the same as other projects in the open source / free software space working Java (such as GNU Classpath, Kaffe, GCJ, etc) - we wanted to do an implementation of a complete, compatible Java SE runtime environment, including virtual machine, class library and tools under a FLOSS license. Q : What does "FLOSS" mean? A : It refers to a license being either "Free", "Libre" or "Open Source". Q : What is the Java Community Process? A : The Java Community Process (or JCP) is the governing organization for Java. Initially created by Sun, it includes an Executive Committee composed of 32 representatives from corporations, individuals and academics representing thousands of members. The JCP is the organization through which new specifications for Java technology are created. Q : How long has the JCP existed? A : After an initial draft of the process was crafted and distributed on October 8, 1998, the JCP was introduced on December 8, 1998 and was announced by Sun at the 1998 Java Business Expo Conference. Q : What is the JSPA? A : The JSPA is the "Java Specification Participation Agreement", the governing document of the JCP. Among other things, it specifies how IP is managed in an expert group, how it is licensed to independent implementations, and how the TCK and RI can be licensed. Q : What is a JSR? A : A JSR is a "Java Specification Request", the formal vehicle through which Java technologies are created or updated. A JSR is proposed by any JCP member, who is then known as the "specification lead" or "spec lead" for that JSR. The spec lead organizes an "expert group" and that expert group works to create the specification. The expert group must also create a "reference implementation" or "RI", as well as a "technology compatibility kit" or "TCK". Q : What is an expert group? A : An expert group is a group of people, organized by a spec lead for a JSR, with appropriate expertise in the area of the JSR. Q : How many JSRs has the ASF participated in? A : Many - the ASF has had representation in JSRs since the modern JCP was formed. Q : How many JSRs has the ASF implemented as open source software? A : Many. For example, Apache Tomcat, Apache Geronimo, Apache Harmony, Apache MyFaces, Apache Scout, Apache ActiveMQ, Apache ServiceMix, Apache Jackrabbit, Apache Portals, Apache WebServices and Apache XML are all projects that implement one or more JSRs. Q : What is a TCK? A : The Technology Compatibility Kit, a test framework produced by the spec lead to be used by independent implementations to demonstrate compatibility (and therefore get the grant of necessary IP). Q : Why is the TCK useful? A : It allows independent implementations to demonstrate that they are compatible with the specification, and as a result, receive all the "necessary IP" from expert group members. Q : What is "necessary IP" and why is this important that compatible implementations receive it? A : "Necessary IP" is the IP - usually patents - that cannot be technically avoided when implementing the specification. This is important because it prevents anyone from joining an expert group and gaining the ability to demand royalties from implementors or users of the specification. This is one of the main features of the JCP that makes the specs the JCP produces "open specifications". Q : You talk about the JCK in the letter. Is the JCK a TCK? A : It is, actually. The JCK is the name Sun gave the TCK for the Java SE specification. While it has a different name, it's a TCK for the purposes of JCP process discussion. Q : Who owns the JCK? A : Sun owns the JCK, as they created it as part of their obligation as a spec lead. The JSPA requires the spec lead for every JSR to deliver a TCK (which Sun calls the JCK for the Java SE spec) when a given spec is completed to allow independent implementations to demonstrate compatibility and receive the necessary IP grant. Q : Was it always possible to create and distribute implementations of JSRs under free and open source licenses? A : No, but the ASF was instrumental in making this possible. In 2002, the Apache Software Foundation, working with other members of the Java community, led the effort to change the JCP governance document - the "Java Specification Participation Agreement" or JSPA. These changes finally made it possible to create independent implementations of Java specification under free and open source licenses. Before these changes, it was impossible to do so. Q : What is the "Apache Compromise"? A : As part of the process that led to changes in the JSPA, Sun Microsystems made a public commitment to the Java community that Sun-led specifications would be implementable in free and open source software. That commitment can be found here : http://jcp.org/aboutJava/communityprocess/announce/LetterofIntent.html Q : Is it true that Java SE 5 was the first of the Java SE JSRs to be released under the above-mentioned FOSS-friendly JCP terms? A : Yes. Some Java specifications take years to complete, and one was in progress at the time of the JSPA changes. So we had to wait until the next JSR for Java SE was complete, which was Java SE 5. Q : I see you refer to "necessary IP" in your open letter. Is Sun the only owner of the necessary intellectual property that the Java SE JSR contains? A : No. There probably is "necessary IP" from all members of the Java SE expert group. The JSPA requires expert group members to license their necessary IP to the spec lead, who in turn is obligated to license all necessary IP to any compatible implementation that passes the TCK (or in this case, the JCK). Q : Who was the spec lead for the Java SE 5 JSR? A : Sun. See http://jcp.org/en/jsr/detail?id=176 Q : Is Apache the first to ask for a JCK license? A : No. There are many JCK licensees. It is our understanding that we are the first non-profit with no commercial ties to Sun to attempt to license the JCK. We know about a JCK licensing discussion between Sun and some in the free software community, but we don't believe that led to a successful resolution. Q : Is Apache against Sun earning money out of licensing the JCK to commercial entities? A : Of course not. The ASF is a public charity and as such, doesn't compete in the commercial marketplace. We take a completely neutral position regarding legal commercial activity. Q : What is a "field of use" restriction? A : A "field of use" restriction is a restriction that limits how a user can use a given piece of software, either directly or indirectly. To give a concrete example from the Sun / Apache dispute, if Apache accepted Sun's terms, then users of a standard, tested build of Apache Harmony for Linux on a standard general purpose x86-based computer (for example, a Dell desktop) would be prevented from freely using that software and that hardware in any application where the computer was placed in an enclosed cabinet, like an information kiosk at a shopping mall, or an X-ray machine at an airport. Q : Is a "field of use" restriction incompatible with both open source and free software principles? A : Yes, both. See the Open Source Initiative's open source definition (http://www.opensource.org/docs/osd), most notably section 6 and 10 and the Free Software Foundation's free software definition (http://www.gnu.org/philosophy/free-sw.html) most notably freedom #0. Q : Would the ASF be satisfied with a TCK license that removed the field of use restriction if used only on Apache Licensed code? A : No. Looking at the broader picture, the ASF has worked for years to ensure that the JCP creates "open specifications", specs that are freely implementable under free and open source licenses. If the field of use restriction was lifted only for the Apache License (or only the GPL, or only the MPL, or...) then it still would be discriminatory and contrary to the terms of the JSPA. The resulting specs still wouldn't be open specifications. In addition to that, the Apache License 2.0 grants everybody who follows the terms of the license "a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form." In particular, note the word "sublicense" in that quote - it's not possible for an "Apace License carve-out" here as people can sublicense our software. (Note that it's still true that if someone makes a derivative work of Apache Harmony, they are still obligated to secure their own JCK license and test their derivative if they wish to call their work compatible). Q : What is an acceptable JCK license for Apache? A : Simply put, we're asking Sun to make it like the other 15+ TCK licenses - including other major platform JSRs like Java EE - we have executed with them over the years, all of which have no "field of use" limitations. We are asking that Sun drops the "field of use" limitation, therefore allowing freedom of use, in accordance with their obligations under the JSPA. Q : Why does Apache think it's entitled to such a license while others have to pay for it? A : This isn't a debate about the cost - Sun agrees that it should be available to Apache at no cost. The important issue is lack of a field of use limitation. The JSPA mandates is that everyone is entitled to a TCK license free of field of use limitations - whether or not they pay for the license - and that is what makes the specs created by the JCP open specifications. Now, as to the issue of paying for the TCK, the JSPA requires that TCKs are made available to qualified not-for-profits, individuals and academics. As Apache is a 501(c)3 public charity - aka "non-profit" - we therefore would receive the JCK at no cost. Q : Does Apache think that Harmony could be used by commercial entities to avoid paying JCK licensing fees to Sun? A : No. The only way that could happen is if a commercial entity stopped shipping their own software and started shipping the tested binaries that were created by the Harmony project. Even then, they would still need to license the Java branding rights from Sun, as Apache does not pass those rights downstream to users or redistributors of our software. Note that if an entity made a derivative work, or used only part of Harmony's source code in building their implementation, they would still be obligated to obtain their own JCK license for, and test the software themselves. Apache does not make its TCKs available for use outside of our projects. Q : Is Apache trying to damage Sun's business? A : No. Apache is a non-profit and does not engage in any commercial activity. We're trying to build our own independent implementation of Java, and create a community of users and developers around that software, and need the JCK to do so. Q : What about OpenJDK? Sun has indicated their intention to release the source code of their implementation of Java SE under a modified version of the GPLv2. Would OpenJDK be allowed to ship without passing the JCK? A : Good question, and a complicated one. We think the answer is "no". While Sun was the spec lead of the Java SE JSR and therefore had all the "necessary IP" licensed to them by all the expert group members, by simply placing their own implementation under the GPLv2, not all of the necessary IP is automatically granted. If OpenJDK users are to receive the benefits of compatibility, the project will need to ship a binary that has passed the JCK. It is worth noting that if Sun placed "field of use" limitations in the certified releases of OpenJDK, that would be in violation of its own license, the GPLv2. If Sun added a "GPL-only carve-out" to the field of use, that would be problematic in the same way that an "Apache License-only carve-out" would be problematic, as we discussed above. Q : Why doesn't Apache simply ignore this and ships Harmony without passing the JCK? A : We can ship Harmony without passing the JCK - it's our source code to do with what we wish - and we will with milestone releases as we progress towards completion. However, we could never claim to be Java compatible, which is something very important to Java users, and is the stated goal of the project. Also, users wouldn't be assured that they had all necessary IP rights from the spec's contributors. Compatibility is important to us as is not putting users in IP jeopardy, as it has been for every JSR the ASF has ever implemented. We have no interest in forking the technology. Q : Why is Apache resorting to this public "open letter"? A : Apache has tried since August of 2006 to get this license. There has been quite a bit of effort put into this to achieve a private resolution, including private appeals to officers of Sun, including Jonathan Schwartz, Sun's CEO. We even brought the issue up to the JCP Executive Committee. But to this point, Sun has continued to be unyielding. We really did hope to resolve this peacefully and privately, and continue to hope that we can resolve this peacefully. But we owe answers to our communities as to why we haven't been able to secure the JCK, and we feel that at this point, it is Sun's question to answer given their contractual obligations in the JSPA, and their past and current promises to the open and free software communities. Q : Would Apache send such an open letter if it wasn't Sun the spec lead of the Java 5 JSR? A : Absolutely, if we ever got to an equivalent stage with another spec lead. JCP openness is a necessary requirement for a healthy and diverse java ecosystem and has nothing to do with the identity of the spec lead or their company affiliation.