Oracle v. Google and the future of software development
blog.google
blog.google
But if so, that law desperately needs to be amended - the nature of APIs, at least public ones, is such that interoperability concerns override everything else, IMO. If companies can copyright an API and block competitors from implementing it, that would be very detrimental to the industry as a whole, for the sake of a few rent seekers profiting.
The practice of writing drop-in replacements for software products is as old as the software industry, even those replacements that diminish the original product's commercial value. E.g gnu/linux vs proprietary unix.
File formats are directly analogous to APIs.
* magic numbers at the start of the file format
* all sorts of enums that you just have to know, names and numbers and the correspondence between them
* names of data types and classes are often needed
* there are often many "standard" things that will be in both the original source and the duplicate because it's the industry standard (things like bold text in any word format or parallel constraints in cad files). They will mostly match in all programs of the same time
And that's just the beginning. You could make an argument that all of those fall under copyright. And they shouldn't. So it really isn't that far from an API.
<doc>
<author>
.....Then in my code I have a parse method:
Def parse_doc(xml)
self.Owner = Person.new(xml[:author])
....
End
And a corresponding write method.
My code is original and contains nothing written by whoever created the file format beyond short and simple tag names. It's much different than copying a class structure and method signatures.
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex {
if (fromIndex > toIndex)
throw new IllegalArgumentException("fromIndex(" + fromIndex +
") > toIndex(" + toIndex+")");
if (fromIndex < 0)
throw new ArrayIndexOutOfBoundsException(fromIndex);
if (toIndex > arrayLen)
throw new ArrayIndexOutOfBoundsException(toIndex);
}
Note that of course "rangeCheck", "arrayLen", "fromIndex" and "toIndex" are part of the function signature, as is "ArrayIndexOutOfBoundsException" and "IllegalArgumentException".Except you do in many cases - there are many serialization systems out there where you describe your structures as types, and they generate the serializers for you. Just look at protobuf as one example. Is a protobuf declaration an API? If not, how is it different from any other API that declares a bunch of structs?
The format of the file is not (last I checked) the thing that's copyrightable; rather, it's the specific producers and consumers which are. Same deal for an API; the API itself is not (supposed) to be copyrightable, while the producers and consumers are indeed copyrightable (as is the documentation).
> It was not ... intended to permit third party interoperability, since Google had made no substantial efforts to use them for the purpose of third party interoperability. (In fact it found that Google had tried to prevent interoperability with other Java and had previously been refused a license by Sun for that reason.) It was not transformative in the sense of a new platform either, since other Java smartphones predated Android.
https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google...
Why do people involved in tech keep repeating this?
This is a bold claim - but I suspect your definition of "interoperable" is stricter than common usage (i.e. executable)
> There is no set of software interoperable with Android's Java runtime.
Countless 3rd party libraries are interoperable with Android - the few that aren't probably rely on sun.* - I suspect google did do this to be interoperable with 3rd party libraries as well as Java developers' mental model of where to find things.
No it's not. Google even conceded this in court.
What does Oracle, who practically prints money, expect to get out of this other than exercising a fleet of expensive lawyers? At best the case was always iffy and even if they "win" it's unclear what that really means for them given the inevitable subsequent legal maneuvers. Even more puzzling is how are they making the argument that Google has, in any way, harmed their business?
It's just mind boggling. A slip-and-fall insurance scam makes more rational sense to me.
Sorry, how could that be an upside? It's plain, zero-sum rent-seeking. I.e. only an upside if you happen to collect the rent.
It is zero-sum iff the benefit to Oracle is exactly equal to the deadweight loss imposed by the tax.
I tried to calculate this in the simplest econ 101 way, and got a surprising result. I would appreciate someone else commenting...
Assume that the schedule of supply and the schedule of demand are straight lines. We have three groups: (1) purchasers of phones; (2) vendors of phones; (3) Oracle.
In the absence of a tax imposed by Oracle, an equilibrium quantity Q_e of phones trade at an equilibrium price P_e. [1] This generates gains from trade, producer and consumer surplus, equal to the area circumscribed by the schedule of supply, the schedule of demand, and the line Q = 0.
When Oracle imposes a fee on phone sales of value F, the price and quantity-traded of phones adjust. The new quantity traded Q_f is lower than Q_e, and the new price P_f is higher than P_e. The gains from trade are now the trapezoid circumscribed by the line Q = 0, the line Q = Q_f, the supply schedule, and the demand schedule. The missing gains, the deadweight loss, are equal to the triangle circumscribed by the line Q = Q_f, the supply schedule, and the demand schedule.
Oracle receives F×Q_f in fees, a benefit equal to F×Q_f.
The deadweight loss is a triangle with base F and height (Q_e - Q_f). It is therefore equal to (F×Q_e - F×Q_f)/2.
Balancing the gains to Oracle against the deadweight loss, we see that they are equal when Q_f is one third of Q_e, or in other words when the fee is so massive that it cuts the quantity traded by 66%. If Q_f is larger than that, the benefits to Oracle exceed the loss imposed on purchasers and vendors.
This result would seem to imply that we could improve the efficiency of the marketplace by allowing random third parties to impose large taxes on pretty much any good. This is hard to believe. Where did I go wrong?
[1] In reality, there are a variety of models available at a variety of price points. This doesn't affect the problem I have with my result, though it is probably relevant to the phone market in specific.
> When Oracle imposes a fee on phone sales of value F, the price and quantity-traded of phones adjust. The new quantity traded Q_f is lower than Q_e, and the new price P_f is higher than P_e.
The producers/consumers combined would lose both the oracle tax and the deadweight loss (lack of opportunities that otherwise would have occured).
But then again, what if phones have a negative externality from a society where no one talks to eachother? The oracle tax might be good for society.
You inverted the sign. The zero sum thing is the prospective transfer to Oracle. If you pay $100 and Oracle receives $100, net across everyone is zero.
Then whatever lack of commerce caused by the higher prices occurs is a deadweight loss with negative sum. You start from zero and go down.
To get a positive sum you need to be creating something with value greater than its creation cost.
After the fee, there's less producer surplus, less consumer surplus, and more Oracle surplus. As a consumer, I don't see which part of the price of the phone goes to the producer (generating metaphysical good) and which part goes to Oracle (generating metaphysical evil). I just see that the phone is worth more than its price by an amount equal to my consumer surplus. My surplus is measured in dollars just like Oracle's surplus.
But it seems that after Oracle imposes the fee, it generates so much Oracle surplus that it could cover the deadweight loss out of its own pocket and leave everyone better off. This is surprising.
I think your comment is mostly correct, but I'm going to try to put it in terms that make more sense to me.
The answer is that the loss of producer/consumer surplus is being calculated incorrectly. Deadweight loss is the triangle described, but the loss of consumer surplus is more than just the consumer-surplus part of the deadweight loss. It also includes the rectangle separating the price the consumer would pay in the absence of the fee, P_e, from the price the consumer does pay, P_f. My mistake isn't that I inverted a sign, it's that I compared the wrong quantities -- I included a benefit to Oracle without accounting for the cost to consumers and producers who are still willing to trade under the new regime. (Where the deadweight loss only includes consumers and producers who were willing to trade under the old regime, but not under the new one.)
(bananamulch and 34624523 both said the same thing I'm saying here.)
I don't think this is necessarily true. Google and/or handset vendors could just eat the additional cost and keep prices the same for consumers.
Cases tend to run back and forth until one party gives up, or goes bankrupt. Lords, even SCO v Linux is still going.
It’s also cheap marketing.
I saw a lawyer's office earlier. Big logo said "We fight for fair". Sure, per minute.
It is infinitely cheaper to develop things in-house or with smaller software shops, But then you won't be able to interface with your factory's material providers' system, or other Banks, etc because they only talk some protocol that is copyrighted/trade secret of those firms.
They are not fighting google. Google just happened to enter in the cross fire and have deep pockets to fire back! What oracle (and others like IBM behind the scenes, via DC Federal Circuit "lobbying") are fighting back, is the freedom of smaller software shops to provide their clients with fully compatible offerings to their money cows.
This is the only time someone conscious of freedom and privacy should be rooting for Google.
Thanks for this summary! I had no idea this was the underlying reason. I feel silly now because I thought it was just some weird obsession of someone in Oracle's C-suite.
The industry's, justified, hate for Oracle is blinding them to the larger underlying concern.
Many people forget that Oracle technically won the legality of the last case, hence why we're here. They just weren't awarded damages. Even the judge didn't buy Google's arguments about open source or compatibility concerns.
That's why all the rulings keep getting overruled. The lower court judge is sane (he's actually awesome, you should check out Alsup) and keeps ruling in accordance with established case law, and the appeals court (who shouldn't even be answering copyright questions) keeps going 'nah, all that case law is stupid'.
Hence why this should go to the supreme court who'll most likely tell the court of appeals for the federal circuit that they can't just go make their own law.
Read the original ruling.
That's not true and doesn't really fit within any legal timeline. That's my point.
Can you point to what part of this ruling sided with Oracle on either technical or legal matters? (With the exception of rangeCheck.) Or can you link to what ruling you mean by "the original ruling"?
That said, it is common wisdom around F/OSS folks that you can't take other people's interfaces and change the license on it, e.g., I can't write and distribute a proprietary Linux kernel module using EXPORT_SYMBOL_GPL functions. I haven't seen a good analysis of whether this case is relevant to that—would a Google victory mean that VMware's use of vmklinux is legal (well, at least in the US), that ZFSonLinux is in the clear, that Nvidia can write proprietary drivers using dma-buf, and that CLISP should have been able to use readline without relicensing itself under the GPL?
Are you contending that interfaces and API's are not software and do not have software licenses around them?
Because that is a severely mistaken belief on both a technical and legal level.
Yes, on a legal level.
From a technical perspective, interfaces in, say, C are mostly compiled out. There is no place in a (stripped) binary where you can point to a structure definition. There is a place you can point to names of functions that are yet to be dynamically linked, but only their names, that place is different from the program code (text section) itself.
None of this is to say interfaces are not an important part of software engineering. Interfaces, APIs, internal zero-cost abstractions, tests, comments, design documents, threat models, bug triage, commit messages, code reviews, operational techniques, runbooks, monitoring and alerting systems, end-user documentation, etc. are all important work products in the discipline of software engineering. They're also all (IMO) something different from the software itself.
That is because by using EXPORT_SYMBOL_GPL functions you are invoking code that is GPL'ed. If you made a clean room implmentation of a kernel that exposed the same interfaces as Linux, you could licence it anyway you want.
So I think there are only two interpretations. One is that EXPORT_SYMBOL_GPL attempts to claim a copyright on the interface, and not the code. The other is that redistributing a GPL-incompatible object that invokes GPL'd code is always infringement, and (possibly) the special exception for userspace in Linux's copyright statement, https://github.com/torvalds/linux/blob/master/LICENSES/excep... , is the only thing that makes normal userspace processes non-infringing, and that regular EXPORT_SYMBOL is basically also an explicit exception (which may or may not even be legally meaningful - during the dma-buf discussion, various copyright holders expressed that they did not interpret EXPORT_SYMBOL as an exception).
What does this have to do with anything? If you think this is a relevant statement you are severely confused about the current subject matter and what is being argued in court.
Please explain how the above statement is relevant to the current case.
My claim is precisely that this is not a relevant statement.
In this situation, a significant new revenue stream ( an Android tax) is definitely worth fighting for. And Ellison loves lawyers; he even sued to compete in the America’s Cup...
New Zealand sued to challenge Dennis Conner off cycle, and when Conner pitted a cat against a mono hull, New Zealand sued again.
Except that there is no hope of that ever happening. Even if Oracle won in a big way, then Google would eat the one-time cost of deprecating the Java API on Android, similar to what Apple did between Objective C and Swift. There is no sustainable revenue stream there.
Then it could be announced that the Java API will be removed in a specific future version (so update your applications now), the Google Play cut of applications using it will now be 50% instead of 30% for those without it, some of the OEMs will immediately start selling phones that don't have it and those phones are less expensive so people will buy them and developers will have to use the new replacement to reach those app customers, etc.
Forcing a transition to happen faster is not fun, but that isn't the same as not possible.
They are maintaining/improving the barrier to entry.
While I think this lawsuit is terrible and I hope Google wins the legal case, from a moral standpoint they kind of acted like assholes back in 2005 when they decided to fragment the Java ecosystem rather than negotiating a licensing deal with Sun. So now we have real Java in multiple JDK / JRE implementations plus this weird pseudo-Java offshoot in Android. The language used by Android looks a lot like Java but it hasn't kept up with improvements in the core language and standard library, so now developers can't reliably reuse code across those platforms. That harms the software industry as a whole.
Probably because Sun went along with it, so why bother?
Now they deserve everything they will get out of this.
There are plenty of commercial 3rd party companies selling alternative JVM implementations, none of them has ever had any issues with either Sun or Oracle.
https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...
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.
> 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?
Now I am likewise confused: how can it be copyrighted if it's been open sourced?
The opposite of a copyrighted work is not an open sourced work: it's a work in the public domain.
I think Android has since switched to OpenJDK, so it seems to me what Oracle and Google are arguing about is whether Google owes Oracle some damages for their previous use of Harmony. And of course, the lawsuit could have larger repercussions as well, if API's are deemed to be copyrightable.
That kind of depends on whether you can apply a different license to an API and its implementation. There's not really any precedent for that kind of question, because it presupposes the validity of a kind of copyright that the industry has grown up assuming is not valid.
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.
Telephone directories also take quite a bit of work to compile, yet (per Feist) can't be copyrighted.
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.
Personally I'm with the perspective that API which has informally become an industry standard should weaken copyright protection.
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.
However the knowledge that Java isn't open-source compatible in mobile environments was known before Google started building their own.
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.
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?
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.
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.
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.
A taxonomy is copyrightable?
What other examples of copyrighted taxonomies are there?
Google on the other hand, has not focussed on developers much. I've been building on android for a few years now and the IDE is derived from IntelliJ ( Earlier you had to use eclipse which was even worse ). They could have easily gone the MS way and used another language or one of their own. Major language features are delayed, the code is incredibly verbose(kotlin tries to solve that to a small extent) and they are fighting a lawsuit which if they lose would be pretty expensive.
I did not find it on the spot, but i remember, there was once a written promise made by the Guava people to remain compatible to a certain API version. And then they broke that promise by changing public signatures or removing methods. Vividly i have the Stopwatch example in my head.
Many projects went on to shade guava.
And thats what it is infamous for.
Java is open source, but copyright is retained by Oracle. Would this affect say, Amazon's ability to rip off the MongoDB API? What about open source x86 emulators? (Intel IP) Hercules IBM emulator? Any of the Nintendo, SNES etc game emulators?
I'm not surprised by Oracle's hypocrisy. I'm surprised anyone with a soul and functioning sense of right and wrong still works there.
Can you elaborate on this point? What license for what copyrightable work did Dalvik violate, and why does Android Runtime not violate that same copyright license?
The caveat for Google is any changes to the OpenJDK itself has to be upstreamed. But the Android Runtime itself doesn't have to be GPL due to the classpath exception.
In all honesty, this is how they should have done it in the first place.
Linux and OS X implement the same APIs as Unix. Windows implements the same (or very similar) APIs as PM in OS/2.
Most modern PCs reimplement the IBM PC "API", hence "PC compatible".
> In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.
(—Copyright Law of the United States[2])
APIs are the idea that binds components together. Even if you come to understand the interface by reading a programmatic description of it (e.g., a function signature), and reimplement it, and your language forces you to use the same exact wording to match the signature (b/c it's an API), there's nothing different here than the same exception given to the way that a the raw listing of ingredients in a recipe is not copyrightable (and this is called out as an example of such by copyright.gov[1]).
The appellate court erred in its application of the law.
Additionally, this was said on one of the amicus briefs,
> reversing the District Court would dangerously undermine the settled expectations of computer scientists and the entire computer industry that rely upon the open nature of APIs
(—Martin Fowler, Bruce Schneier, Bjarne Stroustrup, et al. were signatories to this amicus brief.)
The decision, were the industry to actually pay attention to it, would wreak havoc on the state of software engineering.
OS X doesn’t just implement the same APIs as Unix, OS X is certified Unix by the Open Group.
Therefore, Oracle's argument is that the fair use doctrine does not apply here; that Android is a derivative work of Java, which is not fair use. WINE, for example, is not ruled impermissible by the sort of ruling Oracle seeks.
> Oracle's argument about Android and its use of Java is that Android did not run Java apps; it ran Java code, but it did not implement enough of the Java API surface to let you run Java apps unmodified.
So what? Partial compatibility is still meaningful in software engineering, and should allow libraries to run on both. Are you saying that if Google had fully implemented all of the Java APIs, it would have been fair use?
Further, can you ground the above reasoning (that fair use covers API copying, and that Google's partial implementation is material here) in the actual rulings for the case? I don't remember any of this from when I read them, though I do admit that was some time ago.
> WINE, for example, is not ruled impermissible by the sort of ruling Oracle seeks.
Why not? Simply because you cannot write a .exe that would run in WINE, but not in Windows?
Further, what if the example was instead Linux? Linux implements Unix's APIs, but also adds other APIs. You can use existing "Unix" code in new, Linux-only apps that won't run on other *nix OSs.
Depends on Oracle balance sheet that quarter. Or if they have sold/licensed the patents to other trolls.
Reminds me of the McGreggor vs Khabib fight - "it's only business"
I kept the money and now you're using the gun to get the money I saved.
If we had a second round, this time with a machine gun... What would you do?
I'm still cross with Google. At the time it seemed like the natural home for Java.
Of course, it was maybe just Ellison shrewdly leaping on a opportunity to profit off an undervalued ecosystem (Java) at the time. Going on almost a decade now, things certainly proved to be not so clear cut in Google favor, and might still pay off.
In the gold rush to develop Android apps, their frozen-in-time copy of the Java ecosystem rose to prominence and sought-after Java libraries were held back for years to lag behind official Java's versions. Differences between Android's facsimile of Java and real Java (from plenty of other vendors) caused confusion and divergence to the Java ecosystem, as Oracle's own efforts to leverage Java faltered too. Android's popularity de facto forked Java for years and did so without the permission of the rightsholder. If the copyrightability of APIs isn't the answer we want in the field, what instrument do we need to prevent the same from happening to other products too?
...We don't need such an instrument, because the outcome you mentioned is desirable.
If we had such an instrument, Linux would not have been possible, because it's compatible with the Unix APIs. OSX would not have been possible, for the same reasons.
It would be revisionist to claim that there was no reputational harm done to official Java by Android's lookalike Java -- irrespective of any mismanagement by Oracle of the Java platform. How does one prevent that?
And no, you cannot prevent this sort of scenario without losing the right to interoperate with most software.
Technically, OS X would be possible, because it is not merely Unix compatible. It is a Unix [1].
[1] https://www.opengroup.org/openbrand/register/brand3648.htm
I take it you never had the misfortune of developing for J2ME? The blog is laundering history - by severely understating the horror of how it was before: CLDC/MIDP combined with model-specific vendor extensions (E250 would have different packages from other models by the same manufacturer), add non-standardized screen resolution resulted in your apps compatibility matrix having to be in 4-dimensions, at the very least.
So if Oracle loses, I wonder if that will have the unintended consequence of making WP plugins not inherit the GPL, which currently forces them to be open source. It could have similar effects on other projects.
It doesn’t touch the question of “if I work with a certain software, do I have to follow the licensing terms of such software?”, which is what WP plugin developers must abide by.
The distinction between a modification and a interface is an interesting legally gray area, but it is not relevant to the claim that Oracle is making. They say that the interface itself in Java was artistically made and thus made the header files copyright-able. If the courts agree with Oracle then it makes it impossible to write software that have compatible interface, since it is (almost) impossible to do so without creating copies the interface.
[1] https://www.oyez.org/cases/2018/17-204
[2] https://apps.oyez.org/player/#/roberts10/oral_argument_audio...
int add(int, int); //adds two numbers
Oracle is claiming copyright on a similar bit of text. If Oracle wins, any developer writing a method with that signature is violating Oracle's copyright. It's insanity.If you can copyright the structure and organization of an API, then interoperability becomes impossible. If every API has to be unique enough that it doesn't violate the copyright of anyone else in the same problem space, you can no longer create compatible reimplementations.
It means you can come up with your own API design without infringing on someone else's copyright.
>If you can copyright the structure and organization of an API, then interoperability becomes impossible.
It doesn't become impossible. It simply means that people need to follow the license that the API has. If the Java API was valuable to Google then they can pay the creators a license fee to use it. If the license fee is too expensive or comes with unacceptable terms then don't use it. Write your own or use some other API with a more permissive license.
It's still insane, in my view...
Is there something obvious I'm missing?
You can append to a string. You can prepend to a string. You can reverse a string. And that's all API's are. There definitions of things you can do to a given structure. If the API was "Shazam.PowerBuilder.AwesomeThing()" I'd understand this position. But it wasn't. It was obvious lists of "facts" about given structures.
But in Java I can't add to a string. I can't prefix a string. Nor can I invert a string. So the things you mention aren't mere definitions or facts about things you can do to a string. They're methods specifically chosen by the language designer to be useful and those choices are a big part of what makes Java different from Ruby, for example.
The crucial litmus test is whether there is creative expression involved or not.
So you have to ask yourself this question: are there multiple choices about how to make the interface or not? And the clear answer is, the very definition of an interface is to fix a single way to transmit some information. No other way works to interface to all the existing systems out there. Given there is no other way that works, there is no creative choice involved and copyright has no application.
Now where the argument sets in is that making a binary compatible interface actually doesn't require (in Java) all the variable names to be the same, nor the order of the methods to some extent. Hence all the argument in court about the "sequence and structure" being Oracle's creative expression. And the fact is, Google did copy many of the argument names etc. So you come down to things like, was it creative expression to call the x and y of a Point class 'x' and 'y' or is that part of the interface?
Which is all to say, yes you can argue about this. The OP however said there is no argument. I disagree: there's an argument here with valid perspectives from both sides. If you think there's no argument, you don't understand the nature of copyright law (after all, there's a reason this has made it to the supreme court).
As far as I know a single judge has ruled in favor of Google. Appeals courts have ruled in favor of Oracle on matters of the law and applicability of fair use. (It doesn’t apply.)
But that isn't actually the point. The question is whether the the person creating something compatible with it has scope to exercise creative expression.
It's like the difference between reproducing Van Gogh's chair and stating the fact it that it is yellow. The fact that it is yellow isn't copyrightable, even though the original painting is.
The usual justification for giving courts supplemental or pendant jurisdiction over subjects for which they normally lack subject matter jurisdiction when a case involves both something they do have subject matter jurisdiction over and something they do not is that there they will usually be arising out of the same facts and involve the same witnesses.
If they were heard in separate courts, many witnesses would have to appear to both and that could be a hardship on them.
For appellate cases there aren't witnesses. It's just the lawyers arguing from the record from the trial court.
If the original case involved both patent infringement and something else, the patent aspects of the appeal are going to be handled by patent specialists, and the other aspects are likely to be handled by different lawyers.
Thus, I don't see why the appeals should be bundled together and all sent to CAFC. Why not send the patent appeals to CAFC, and the appeals for other aspects to the ordinary appellate court they would have went to if there weren't also patent appeals?
Furthermore, in the Google vs. Oracle case the second trial was just on the issue of copyright fair use, wasn't it? Apparently even though the trial court there was just dealing with copyright, because the original action why back at the beginning had a patent claim, it goes to CAFC even though there is now nothing involved that they normally handle.
If we are going to have this screwy appeals path, how about allowing CAFC decisions on matters that are normally out of their jurisdiction, such as copyright, to be appealed to the regular Circuit Court of Appeals they would have normally gone to? CAFC is supposed to follow the regular Circuit Court of Appeals for precedent on such matters, so it seems crazy that the appeals path does not go through that court. As a general principle, if court X is supposed to follow court Y's precedent for something, court Y should be in the appeals path of court X.
Economy of justice; otherwise, an appeal of a mixed case would often actually be two separate appeals to separate circuits, each of which would often make some legal decision and remand to the trial court, which would potentially have to wait for both appellate decisions before proceeding, especially if either required a new trial, since those new trials would have overlapping witnesses, etc.
I expect that they won't, if they win at the Supreme Court in this case, since there will be unambiguous controlling precedent that they can't.
I believe it, what about Google has shown otherwise? In many situations where they could have been offensively litigious they have not and I value them for that. Much more than many other tech companies that do use their legal department as an offensive weapon.
They are the same as the ingredient lists in a "100 traditional recipes" book.
Recipes have a name, they have ingredients and they have detailed instructions how to make the end result out of the ingredients.
The detailed instructions are copyrightable but the recipe name and the list of ingredients are not!
Companies must be actively reconsidering their involvement with Java - I know a handful.
Google, on their part, is pushing Kotlin to avoid the Java branding. Next is Flutter to entirely get off Java. There seems to be some evidence that they're also beginning to avoid the Android brand in places.
Just because something takes work doesn't mean you get a government monopoly on it. Sewing patterns and recipies aren't granted copyright for instance.
Needs citation?
I don't know where to start, but no, this case ruling in Google's favor would not make code uncopyrightable. The general idea is that there is only one way to copy a method's signature. There are many ways to implement the actual logic. It's hard to find a direct source since no one else is jumping to this extreme conclusion. So the test is, could you have done it another way? And since you can not have a function with the signature System.out without having a function with the signature System.out, it would be considered fair game.
Why not?
Abstractly, interfaces are the ways you interact with a piece of software. Implementation is how the software works. That seems like a clear distinction.
You don't need to say "the interface is in the header files, the impl in the .cc or .cxx ones", specific facts of specific cases can be left to future courts. But it is absolutely possible to tell, in a generic sense, the difference between code and interface.
Copyrighting api would be so unambiguously bad for tech as a whole that it would be better for society to repeal all copyright rather than accept this interpretation.
The entire industry rests on people making compatible parts. Pretty much all of software and most/all hardware currently used would become illegal in a fashion that would require negotiation with people many of whom are unknown or dead.
Want to reboot the entire tech industry while we shut down pretty much the entire developed world economy that can't operate without it?
We can also effect a global recession in which thousands in the poorer sectors of the world starve.
Or we can pretend this isn't real while the court fixes this.
Say Oracle wins. Now android comes with a price tag.
Doesn't that mean, some open source alternatives like FirefoxOS or PostMarketOS will get more mindshare?
A cursory look at all the open source alternatives, shows that they are all based on Linux. So interoperability could be achievable.
It could be whole new world!
On top of that, Android 7 already switched to OpenJDK. It no longer uses Harmony as a result in addition to their custom rewrites. So even if Oracle wins, Android hasn't been in violation of any API copyright they have for about two years now.
Had they not tried to screw Sun and then left it to die instead of acquiring it, this would never had happened.
"James Gosling Triangulation's Interview on Google vs. Sun"
https://www.youtube.com/watch?v=ZYw3X4RZv6Y&feature=youtu.be...
Even with their switch to OpenJDK, they keep cherry picking standard Java APIs, forcing Java library developers to write two versions of their libraries or make do with minimal common denominator.
Can you give some examples of what Android is missing? I know it doesn't implement various packages like awt, swing, javafx, etc., and of course sun.misc.Unsafe. But I wouldn't consider any of that "core Java", and a lot of it doesn't exist in Java ME either.
Are there any disparities in "core Java" libraries, like java.util?
They also existed in SavaJe OS.
As for examples, just use the API diff tool and search for java.lang* modifications.
https://developer.android.com/sdk/api_diff/<version>/changes
Or play around with the API level on the reference docs.
To be more concrete:
- Locale.Builder, Java 7, introduced in Android 21
- java.lang.invoke package, Java 7, introduced in Android 26
- java.nio.file package, Java 7, introduced in Android 26
So one needs to do API hunting or just target the very latest versions to be on the safe side that an APK won't just blow up on user's device.
> - Locale.Builder, Java 7, introduced in Android 21
> - java.lang.invoke package, Java 7, introduced in Android 26
> - java.nio.file package, Java 7, introduced in Android 26
Should the legal status of Android really depend in any way on whether or not it is done? Is there any practical way to define public policy that allows a work-in-progress reimplementation for competitive purposes but prohibits an incomplete reimplementation that you don't intend to flesh out to 100% compatibility?
Google has created a fork in the Java community.
It was wrong for Microsoft, it is just as wrong for Google.
Implement whatever Android specific APIs they feel like, but just like ISO C or ISO C++, don't fork the Java standard library.
As far as I can tell, Sun sued Microsoft for trademark infringement, and Microsoft settled. Which part of that applies to Google?
It really seems that you've decided you want Google to lose regardless of the legal basis used by Oracle. Whereas I think Google should win because of the legal basis Oracle is attempting to use. I don't actually care whether Google ends up having to pay Oracle some money; I just don't want the entire legal foundations of the software industry to be retconned by this case.
I want Google to loose because they succeed where Microsoft failed, forking Java eco-system, and having a bunch of people that call Microsoft the evil empire, actually supportive of Google's actions.
MariaDB vs mysql fork doesn't matter as long as they execute the same SQL, which isn't in the case in standard Java vs Android Java.
Contrast to C# which is an ISO and an ECMA standard.
C# ECMA standard is not updated since version 5.
Just like Sun/Oracle, MSDN and the .NET Foundation are now the official source for .NET languages references.
Better inform yourself when trying to pass around Google's PR messages.
de facto - "existing in fact, although perhaps not intended, legal, or accepted:", Cambridge dictionary
"A de facto standard is a custom or convention that has achieved a dominant position by public acceptance or market forces (for example, by early entrance to the market). De facto is a Latin phrase that means in fact (literally by or from fact) in the sense of "in practice but not necessarily ordained by law" or "in practice or actuality, but not officially established", as opposed to de jure."
https://en.wikipedia.org/wiki/De_facto_standard
Example taken from the Wikipedia page.
"Microsoft Word DOC (over all other old PC word processors): one of the best known de facto standards. Due to the market dominance of Word, it is supported by all office applications that intend to compete with it, typically by reverse engineering the undocumented file format. Microsoft has repeatedly internally changed the file specification between versions of Word to suit their own needs, while continuing to reuse the same file extension identifier for different versions."
So much for Google's definition of what a de-facto standard is supposed to be.
Stealing Sun's revenue apparently did not help.
But lets ignore that because it doesn't suit Google's PR message.
SavaJe's whole shtick was it allowed full J2SE, and it's full J2SE that's intrinsically a battery hog.
But even if it was the full J2SE, better don't let people understand that implementations get improved, that there are commercial Java vendors with better implementations than Android.
Google's PR message would suffer from everyone understanding that improving a platform does not require forking, after all.
I wish you, and cwyers, would provide better reasoning as to why this is all FUD before decrying it as such.
I'm not seeing how "doesn't harm the ecosystem" is a fair-use defense. What logic are you using to arrive at a fair use argument for Linux's copying of Unix APIs that doesn't apply to Google's case?
I'll pose the same examples to you as I did in another thread: IIRC (it was a long time ago) Window's APIs closely resemble or are exactly like OS/2's PM APIs. Windows, one might argue, definitely harmed OS/2's "ecosystem", since the latter is virtually extinct in the mind of the public. Is that a violation of copyright?
Especially since nobody thought APIs were copyrightable right up until Oracle decided to declare them as such, nobody has put anything regarding them in licenses. Nobody has thought that they even needed a license, much less obtained one, and a lot of effort has been built on top of products that are backwards compatible with things from many decades ago.
As the lesser of two evils, I prefer Google to Oracle. And I hate patent trolls, especially this instance of it. But at the same time I don't want to reduce the legal value of software. If java is not protectable, is a program like Micrsoft Word or Autocad?
Just because something took work, doesn't mean you should get a government backed monopoly on it.
In an open market Google also had the change to buy those intellectual properties but at the time, they thought they are too smart for everyone with silly bids like the Pi bid https://www.theguardian.com/technology/2011/jul/02/google-pi...
If you're serious about an industry, you work to reinvent it like apple has done with their operating system and hardware. If you take shortcuts then you need to face the music and in this instance Google has been out smarted by another industry competitor.
If we support open competition and we believe in Darwin's theory of evolution then Google is the inferior because they took shortcuts & didn't make serious investments in owning the mobile landscape.
I think using an API for the purposes of interoperability should be allowed under fair use.
However! My controversial opinion is that Google's use of the Java API wasn't for interoperability. They didn't use the Java API so that Java programs could run on Android, they used it so that Java developers could transfer their skills to a new platform which is precisely the value of a cleanly designed API -- value that Oracle doesn't want to provide for free.
A creative work that takes skill isn't the definition of what should get copyright. For instance sewing patterns and recipies aren't granted copyright.
> My controversial opinion is that Google's use of the Java API wasn't for interoperability.
Following that logic, then any even slightly incompatible implementation wouldn't be legal. For instance WINE isn't a perfect recreation of Win32 by any means.
There isn't really a definition at all of what makes something eligible for copyright protection. What is and isn't covered is fairly arbitrary and informed more by history than logical derivation. Source code is typically viewed as a literary work and I see no reason API documentation would be viewed any differently.
> Following that logic...
I never said it had to be perfect, just that the reason for using the API is for interoperability -- WINE is exactly that. It allows software that was designed for Windows to run on Linux.
It's not the API documentation that's at dispute here. It's literally the abstract "structure, sequence, and organization" of the API. And there's tons of ninth circuit case law that sso isn't copyrightable.
> I never said it had to be perfect, just that the reason for using the API is for interoperability -- WINE is exactly that. It allows software that was designed for Windows to run on Linux.
What's the test here that a court can use to make that distinction? And just letting you know at one of my former jobs, we modified our codebase to better run on Wine a few times.
You're missing an argument in there that joins your two assertions.
The fact that something is creative or requires skill to produce doesn't mean that it should be copyrighted.
Copyright is a government enforced monopoly. In order for society to enforce that monopoly on behalf of private enterprise, there has to be a quid pro quo. The usual one is to promote creation and distribution of new works.
The question then is: would no APIs exist if they weren't copyrightable?
Unfortunately courts generally can't write laws for the legislature.
This brings to mind something I heard from my legal friends in the early days of this case. Their position was that this wasn't a dispute about APIs, copyright, etc. It was a licensing dispute -- Sun/Oracle wanted to charge for Java on Mobile, and Google didn't want to pay. Google then executed an engineering 'hack' whereby Java JVM bytecode (.class files) was converted to Google's Dalvik VM format (.dex) via a tool (dx), thus avoiding Sun's licensing fees and still being able to take advantage of the Java ecosystem.
Their argument would have been this was a fairly mechanical effort to avoid licensing fees, analogous to reprinting a copyrighted book in Piglatin, and therefore Google was liable to pay licensing fees to Oracle.
This was from ages back though; the case has of course evolved since then. I do wonder however if Google's effort to paint this as a case of straightforward re-implementation of an API may not backfire upon them.
We need a system that rewards those who experiment & innovate, if anything by Oracle winning this case it further highlights the value in Oracle's IP (promoting innovation and competition).
In my impression that when Google chose Java for the purpose, SUN really wanted Java to be a public interface like thing. Things happened afterwards may be unfortunate.
Evolution theory has no bearing whatsoever on critical moral and philosophical concepts like whether you should be allowed to prevent others from conforming to an API.
While it may seem unfair & I'm getting down votes for stating the obvious, weather we like it or not that's how the world operates.