What are the licensing issues involved in the Oracle/Apache java dispute

apachelicensingopen sourceoracle

I've just started following with interest the soap opera involving Oracle's acquisition of Java and the detriment of goodwill it seems to have generated in the open source community. Specifically, I'm now trying to get my head around the implications of Oracle's decision to refuse Apache an open source license for Harmony. My questions:

1) What is Harmony anyway? Their website states "Apache Harmony software is a modular Java runtime with class libraries and associated tools". How is this different than J2SE or J2EE? Or is Harmony akin to Andriod?

2) The crux of this issue is around the Java Technology Compatibility Kit (or TCK) which certifies that your implementation adheres to the JSR specifications. If I understand correctly, Oracle refuse to offer free or open source license access to the TCK, denying projects like Harmony from being released as open source. Why is this such a big deal for Apache? E.g. why can't (or don't) they release Harmony under a restricted license?

3) From this site is the following quote:

It looks like Oracle’s plan is to restrict deployments of Java implementations in certain markets, particularly on mobile platforms, so that it can monetize its own Java offering in those markets without any competition.

Presumably anything Oracle produced would be subject to the same restrictions it is imposing on others with respect to end-technology licensing, so how could they get a leg up on the competition? While no doubt distateful, wouldn't other competitors such as Google or Apache be able to release competing platforms under the same license as Oracle?

Best Answer

Harmony is Apache's clean room version of J2SE without the patent liability issues and a friendly open source license. The truth of the matter is that a significant percentage of the current J2SE stack is Apache code. This includes the XML parser (Apache Xerces) and XSLT engine (Apache Xalan), just put in a different package. However, there are a number of APIs that are encumbered by patents and the "OpenJDK" isn't really that open.

The chief issue that caused Apache to leave the JCP is a long standing issue that existed before Oracle bought Sun. The JCP rules and bylaws require all participants to provide acceptance and compatibility testing suites to all JCP members. Sun, and subsequently Oracle, refused to do this for the TCK. In essence, they proved that the Java Community Process was neither a process for the community nor was the Executive Committee a committee of executives (quote borrowed from an Apache Officer--I forgot exactly which one). Essentially the EC did not or could not require Sun/Oracle to honor their own bylaws for the JCP.

Due to this legal/process problem Apache Harmony cannot be officially certified as a compliant JVM. For all the well known cases, I'm sure it is compliant, but there are probably a few corner cases that the team isn't aware of that are not compliant. The Java stack is huge.

As to why Apache won't release Harmony or any other project under a restricted license, the Apache name means something. All of their software is released under the Apache Software License (ASL), without exception. The license is both corporate friendly, and provides a commitment to ensure all users of the code are free from legal and patent issues when they use the code. If they made an exception for even one project, that affects what the Apache name stands for. It is one of the core tenets that made them successful thus far.

Related Topic