Hacker News new | ask | show | jobs
by thejerz 2696 days ago
I've read all the Oracle v. Google decisions, with a strong command of software and IP, and I side 100% with Oracle. It is not a question of whether the world would be better if API's were open-sourced (in re: EFF amicus brief), or whether Mr. Ellison needs a new yacht (in re: comments on HN), or whether copyrights are a good thing (also re: HN). The question is whether the copyright of the Java API is enforceable.

Here's the bottom line: Google didn't have to call it's resizable array java.util.ArrayList<E> -- it could have made android.data.ResizableArray<E>. But they didn't. Google copied the method signatures, and more importantly their organization into packages, to avoid the "drudgery" of defining their own original API. While a function that finds the minimum of two numbers -- int min(int a, int b) -- can arguably only be written one way and may not be enforcable, the issue isn't any one method's signature. The issue is that the Java API is an original, curated taxonomy of classes, methods, and interfaces, organized by authors. And taxonomies are protected under copyright. In the case of the Java API, the whole API taxonomy is greater than the sum of its method signature parts. Oracle owns that taxonomy.

12 comments

Google didn't reimplement Java from scratch for Android. They adopted Apache Harmony which was the first open source Java implementation - so blame IBM for copying method signatures. Sun refused to bless Harmony as an official Java (or rather, refused to provide the TCK required to certify Harmony) - so you can understand why signatures and packages were identical: because Harmony was always meant to be fully compatible with Java.

Don't let any animus towards Google blind you to the real harm this will ruling will cause if it stands: say goodbye to any S3-compatible APIs, and good luck to WINE and Proton and say hello to lock-in and higher switching costs.

That's not the all story. Sun/Oracle refused to provide the TCK with a license that would allow it to be used in mobile. They did agree to allow it to be a desktop/server only solution.

However the knowledge that Java isn't open-source compatible in mobile environments was known before Google started building their own.

It should also be noted that now the policy is to not grant a TCK to any open source implementation that is not an OpenJDK derivative.
> Here's the bottom line: Google didn't have to call it's resizable array java.util.ArrayList<E> -- it could have made android.data.ResizableArray<E>. But they didn't. Google copied the method signatures, and more importantly their organization into packages, to avoid the "drudgery" of defining their own original API.

That's one explanation of their motive, but it's not the only one and it's not the one they claim. The one they claim is that they wanted their platform to be compatible with existing software written for the Java platform. And along with it, with existing software developers writing on the Java platform. From that perspective it's not a choice: you can't use a different standard library API and have Java software run on your platform, just like you can't have a different instruction set and have a compiled executable work on your CPU, just like you can't sell an appliance with a different plug and have it work in a standard household outlet.

If I take a book and change the names of all the characters, I will still get sued. Renaming APIs and making a derived work is not in any way certain to prevent lawsuits like this one.

All SQL derives from IBM. Can they sue everyone on the planet? What about the guys who made B or C, can they sue everyone? Where does the insanity stop?

> If I take a book and change the names of all the characters, I will still get sued. Renaming APIs and making a derived work is not in any way certain to prevent lawsuits like this one.

This is not an apt analogy, because this isn't what happened. Google wrote all of the implementations from scratch: the only thing they copied was the character names (and potentially one tiny function used for sorting). This is more akin to taking the Wikipedia summary of the plot of a book and writing a new book based on that summary.

This actually the very analogy used by Oracle lawyer that won the appeal.
As the comment above states, it was based on Apache Harmony not written from scratch.
But Apache Harmony isn't owned by Oracle; for the purpose, it doesn't matter if Google wrote it themselves or got someone else to write it.
APIs aren't functions, they are interfaces. No matter how original they are or how much you pile them together, they aren't supposed to be copyrightable because they are too abstract.
`java.util.ArrayList<E>` is not an abstract class, I don't know what you're talking about
About abstractions, not about what CS calls an "abstract type". Don't mix these.
Not trying to be confrontational here - but through your other posts, are you suggesting by changing class names the whole situation could’ve been avoided?
If you're saying the creative value is in the original curation of classes, methods, and interfaces, and that Google could've permissibly rewritten everything with alternative names, that still seems to copy the "soul" of the creative work.

Personally I'm with the perspective that API which has informally become an industry standard should weaken copyright protection.

If that holds. Intel will sue AMD into the ground. "The 8086 API and instruction set, is an original, curated taxonomy of classes, methods, and interfaces, organized by authors"
They did sue. But since AMD was originally a licensed second source for 8086 -- they failed (https://en.wikipedia.org/wiki/Second_source)
AMD would have rights to sue back saying that "The x64 API and instruction set, is an original, curated taxonomy of classes, methods, and interfaces, organized by authors", as they extended x86 to 64 bits, and then had similar with x86 cross licensing agreements with Intel.
There's a cross-license agreement in place there that would certainly cover such case -- even if they were ruled to be implicit.
This is important: this shows that AMD and Intel agree that these instruction sets are indeed protected and should be licensed.
And yet there's fx!32 (WinNT for Alpha), x86emu (of XFree86), Bochs, VMware, parallels, Plex86, QEMU plus numerous other implementations of i386+ in software (one of them shipping in Windows 7 and newer to run PCI Option ROMs) where nobody seems to care too much.

OTOH, ARM was rather adamant about not wanting to see ARM instruction set implementations in software for a long time.

Either they saw the value in these emulators existing so that changed their minds - or somebody didn't let themselves be bullied into compliance: just because a company threatens you with lawyers doesn't mean they actually have a case.

Interfaces in general have been protected. Certainly mechanical interfaces can be. But it's usually protected through patents in the physical world.
Then wait till Unix rightsholders enforce the copyright on Linux API. This ruling will destroy software engineering in the United States.
Naive question, isn't that API available for anyone including Google to duplicate or use directly by the nature of the Java open source license?
Java has no open source license
Your answer surprised me and I went to do a bit of reading. Found this quote:

> Since this article was first published, Sun (now part of Oracle) has relicensed most of its Java platform reference implementation under the GNU General Public License, and there is now a free development environment for Java. Thus, the Java language as such is no longer a trap.

From: http://www.gnu.org/philosophy/java-trap.html

So it looks like at least older versions of Java were under the GPL. Apparently you can't use the name "Java" without passing a conformation testing suite, but you should be okay as long as you didn't call it Java, (say calling it Android).

Or is this outdated/incorrect information?

Oh, I was wrongly thinking that the VM was still not opensourced. Thanks.

Now I am likewise confused: how can it be copyrighted if it's been open sourced?

Open source licenses are enforced by copyright; without owning the copyright of a work there's not much you are able to license with respect to copying. There's a reason most license files out there start with "(c) 2019 <Authors>".

The opposite of a copyrighted work is not an open sourced work: it's a work in the public domain.

So that would mean that Android would have to be under GPL, right? But what damages are they taking about? GPL fines because Android isn't GPL?
Uh OpenJDK which is the reference implementation is GPL w/ Classpath exception.

https://openjdk.java.net/legal/gplv2+ce.html

Honest question - where does one draw the line between what is protected under copyright and what isn't? You mentioned "taxonomies" - what does that mean exactly? Does a single package with one class and one method count? What about two?
The place the line ought to be is where there is only one way to do a particular thing. If the function signature has to be a specific one to achieve compatibility then it isn't a creative act to choose it, it's chosen for you as a functional requirement. You may not even want the interface to look like that, but it's the only way to achieve compatibility.

The implementations are something else entirely, specifically because there are a thousand ways to implement the same function that are all functionally equivalent but nonetheless have different code. It's not a matter of how long it is, it's a matter of whether there is another way to do it.

Google should just copy the iOS APIs! This will make app development much much easier for all developers and will instantly get all the high quality iOS apps onto Android. Apple will only thank them for it.
What? Can you repeat this?

A taxonomy is copyrightable?

What other examples of copyrighted taxonomies are there?

Well said. There is a lot of hard-work that goes in defining the right API.

Question for you since you sound knowledgeable: If Oracle wins- can Linux in some way enforce this on Microsoft given Microsoft's work on WSL? Or is that applicable only where there is a taxonomy as you pointed out? My understanding from fosspatents is that it doesn't specifically have to be a taxonomy and even a flat API can be copyrighted (which I agree with since there is work that goes in it...)

Answering it from cwyer's comment on this page- doesn't apply to fair use so WSL is fine.

I would urge people who are looking to get the other side of this argument (pro-Oracle) to also read fosspatents.com. That is a sensationalist blog but the facts presented are very true.

> There is a lot of hard-work that goes in defining the right API.

Telephone directories also take quite a bit of work to compile, yet (per Feist) can't be copyrighted.

Telephone directories may take quite a bit of work to compile, but perhaps more labor than creativity. I can't off hand think of too many ways to organize such a directory.

I can immediately think of many ways to do dates, and so can many java programmers (think the Date api, the Calendar Api, JodaTime, JSR310).

And having "new Date(1,1,1)" mean "the first day of the second month of the year onethousandninehundredandone" surely requires a bit of creative thinking.