> 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].
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.
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...