Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This entire thing may be confusing to a lot of people, as many are already confused by what the entire Android court case was about. The confusion is not accidental. Google's very extensive PR machine has put in a lot of resources to make sure people are confused (what Oracle puts into lawyers, Google puts into PR). But just to lay down a few facts:

Since 2006/7, Java has been available under two licenses: commercial and open-source. The commercial license allows free implementation of the Java APIs and has a full patent grant, but requires conformance with the Java TCK (Technology Compatibility Kit) and requires payment if used in mobile devices (this was Java's main revenue stream for a long time). It is also possible to license the JDK source from Oracle under the commercial license for a fee. The same JDK is also released under the GPL. This license is completely free and unencumbered (the GPL itself prohibits any restrictions). It does not require compatibility (unless you want to call the result "Java"), and has no field of use restrictions. It also has a full (implicit) patent grant. As this article notes, OpenJDK's copyleft is not viral either (certainly not more than Linux): applications and libraries running on top of it are unaffected due to the "classpath exception". You can do whatever you like with Java when you use it under the terms of its open-source license: use the implementation, use just the APIs and implement it yourself, use the whole thing or just small portion, pass the TCK, not pass the TCK, fork it or not. You are even allowed to use it to implement .NET.

Google has had both of these options for licensing Java (at least since May 2007, but that was still before Android was released). Until very recently, Google chose neither. They couldn't reach an agreement with Sun on the fee for the first license, and didn't like the second (possibly because they feared that phone manufacturers would reject a GPL runtime, classpath exception or no). Instead, they chose to argue in court that the APIs are not Oracle's to license[1].

What has changed now? Perhaps Google realized that given Android's success, phone vendors would swallow whatever license Google gives them. In any event this is a win for everyone: Google wins because they will need to spend less resources on maintaining Android, Oracle wins because Java will now be on Android, and Android and Java developers win because they'll have a better runtime and greater compatibility. This is contingent, however, on Google not forking OpenJDK too much beyond compatibility; the license does allow them to do so.

Yes, the mainline OpenJDK project is steered by the JCP (Google, Intel, Twitter, and IBM are all members) and Oracle does have veto power, but that is just the project governance. Anyone is free to fork OpenJDK, as long as they don't call the result Java (unless they fork and choose to pass the TCK). The situation is no different from other large open-source projects.

[1]: I have no opinion on whether or not Google's actions were legally justified (I do have an opinion about their ethics), but I do know that unlike Google's PR line, the ruling has little or no effect on the industry. Google's actions with Java's APIs were quite different from any other API implementation that I know of. Also, the ruling does not apply to web APIs. See discussion here: https://news.ycombinator.com/item?id=10811011.



Google's actions with Java's APIs were quite different from any other API implementation that I know of

How were Google actions different from what the Apache Foundation did with the Harmony project (which Google used for their Java implementation), or from any other API implementation? Is it just that the copyright holder eventually released a GPL version of the code while Google chose to stick with their own implementation? I don't see how that is relevant.

API copyright being enforcable is huge for the industry, it means it was illegal for the Harmonly project to implement Java without a license, or for GNUStep to implement Cocoa, or for Mono to implement .NET Windows.Forms. Also 1991 Linux was probably illegal and Wine definitely is. These are just off the top of my head, just search for "open source implementation of" on Bing, chances are most of the results are about illegal projects, including open source implementation of various standards: standards don't necessarily come with a universal license grant, at least for patents (see e.g. the H.264 situation). I would be interested to know if things are different regarding copyright licenses.


> How were Google actions different from what the Apache Foundation did with the Harmony project

The harmony project was intended as a drop-in replacement for JDK classes, namely as a component in a system interoperable with Java. Android is not such a system (although Android may yet be ruled to be fair-use, too).

> it means it was illegal for the Harmony project to implement Java without a license, or for GNUStep to implement Cocoa, or for Mono to implement .NET Windows.Forms. Also 1991 Linux was probably illegal and Wine definitely is.

That is the wrong conclusion. That something is copyrighted does not automatically mean that replicating it is illegal because of something called fair-use. If the goal of your implementation is to create an interoperable system, then you might be within your rights to implement an API even without complying with the license[1].

[1]: https://www.cs.duke.edu/courses/cps182s/fall02/cscopyright/C...


Ah that is a good point. It's an important difference between Android on one side and Harmony, GNUStep and Wine on the other side.

However I would put Linux together with Android then: Linux was similarly replicating Unix APIs for the convenience of compatibility with existing code, and explicitely not aiming for full interoperability.

Octave is another project with an approach similar to Android: trying to provide an open-source Matlab that is mostly compatible, for convenience and to increase the appeal of the platform to Matlab developers, but they are not interested in compatibility for its own sake[1].

Mono falls in the middle, as they are not only providing an alternative runtime for .NET applications, they're also interesting in expanding the platform with new APIs such as POSIX bindings and Gtk#.

[1] At least that was the case a few years ago. It might have changed lately. And this disinterest for full compatibily was partly due there being no "Matlab standard" to implement. See this post from 2000 by the Octave maintainer (https://lists.gnu.org/archive/html/help-octave/2000-12/msg00...):

I never intended Octave to be a Matlab clone, nor am I really interested in creating such a thing, but that seems to be what many users of Octave want. It is not very interesting to me to simply reimplement all the features/bugs of Matlab.

I am finding it too constraining to try to maintain almost any level of compatibility with a proprietary product for which there is no standard. It stifles any creativity by the threat of future incompatibility. I see this is as a real problem, not just an imagined one.

Free software needs a vision beyond reimplementation of existing proprietary tools. Those of us who are interested in free software tools must become leaders rather than followers, and I am optimistic that this can happen for numerical software. But I don't believe it can happen if Octave continues down its current path.


Anyone is free to fork OpenJDK, as long as they don't call the result Java (unless they fork and choose to pass the TCK). The situation is no different from other large open-source projects.

Unless I'm missing something, this is no longer the case. Oracle is arguing that they own the API and the only legal implementation is theirs (ie, Java). Just renaming is (say... "Android") is insufficient.

Forking is going to be legally on very shaky ground at least.


Oracle does own copyright on the APIs (according to the Federal Circuit), but they do provide it in OpenJDK under the GPL. That means anyone is free to fork it, under the terms of the GPL.

What Google did was copy the APIs, remove the copyright notice (arguing the APIs aren't copyrightable), and release the code under a different license. You can't do that under the GPL terms.


Public Knowledge, an ally of the FSF, actually recommends independent implementation (like what Google did with Java and glibc) as a method for escaping the GPL:

>If a developer does not want to be subject to the licensing terms of a library, he has a few options...Another option for a developer is to do what Google did when it created Android, and create replacement code libraries that are compatible with the existing code libraries, but which are new copyrighted works. Being "compatible" in this context means that the new libraries are called in the same way that the old libraries are--that is, using the same APIs. But the actual copyrighted code that is being called is a new work.

https://www.publicknowledge.org/news-blog/blogs/gpl-does-not...


Forking is totally legal. You need to do some things however.

Don't call it OpenJDK since OpenJDK is copyrighted. Don't remove the Copyright inside the files. License new code as the same license as applied to OpenJDK.

If that is happening you are completely free.


This is the most informative comment out of the whole thread. It is a big win for everyone.


Thank you. Your post has indeed cleared up most of the confusion I had on this issue.


Upvoting you as it seems the Google fanboys are already in action.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: