To understand Oracle's motivations it is necessary to review what Bryan Cantrill said about the company:
"As you know people, as you learn about things, you realize that these generalizations we have are, virtually to a generalization, false. Well, except for this one, as it turns out. What you think of Oracle, is even truer than you think it is. There has been no entity in human history with less complexity or nuance to it than Oracle. And I gotta say, as someone who has seen that complexity for my entire life, it’s very hard to get used to that idea. It’s like, ‘surely this is more complicated!’ but it’s like: Wow, this is really simple! This company is very straightforward, in its defense. This company is about one man, his alter-ego, and what he wants to inflict upon humanity — that’s it! …Ship mediocrity, inflict misery, lie our asses off, screw our customers, and make a whole shitload of money. Yeah… you talk to Oracle, it’s like, ‘no, we don’t fucking make dreams happen — we make money!’ …You need to think of Larry Ellison the way you think of a lawnmower. You don’t anthropomorphize your lawnmower, the lawnmower just mows the lawn, you stick your hand in there and it’ll chop it off, the end. You don’t think ‘oh, the lawnmower hates me’ — lawnmower doesn’t give a shit about you, lawnmower can’t hate you. Don’t anthropomorphize the lawnmower. Don’t fall into that trap about Oracle." [1]
Nothing that Oracle does makes sense without understanding this.
1. Oracle is basically arguing about APIs being copyrightable and if APIs are deemed to be copyrightable, we're fucked as an industry ;-)
2. Oracle, because of the Sun acquisition, has many, many interesting patents related to programming languages and virtual machines. Consider that Sun was involved in the research for making Smaltalk VMs fast and they also developed Self. The IP for all the fancy techniques used in Java's HotSpot VM? Well Sun owned it. Do you think Go is safe because it's not based on Java, or because it doesn't have a Java-like VM? Think again, at the very least it has a garbage collector ;-)
Thing is, if Google would have cloned OpenJDK, they would have been safe because of the GPL license. But they didn't, they used Apache Harmony instead, a project that never passed the Java TCK because Sun never allowed it to.
In the US, in Europe where we are somewhat more sane on this issue I'd look forward to a boom in software development the like of which we've never seen.
The implications for the US software industry are pretty horrify though, it makes software patents look mild.
In practice this is unlikely for a number of reasons, in particular the fact that Europe is way too expensive for the industry that spearheaded third-world "offshoring".
The only way to avoid US law is to not trade in the US at all, otherwise someone should have told Samsung and SAP before they paid hundereds of millions to Apple and Oracle respectively.
These are large primarily sales driven organizations so first world transport links and infrastructure matter.
The "Don't be ridiculous, nobody is going to sue you for using/implementing Java/C#/whatever" attitude was always frustrating, but I have to admit I didn't actually expect it to really happen :-P
But I disagree "we're fucked as an industry", though there could be some inconvenience. The Sega etc. cases still hold, and they essentially say that copying interfaces for binary compatibility / interoperability is fine. As far as statically compiled languages are concerned, that's all we need. If some API creator sues, we can always create / adopt a different API and map it to the binary instructions in the SPI.
Their decisions on patents set precedent, but for copyright they are supposed to follow the precedent of the numbered circuit that the trial court is in, which would be the 9th in this case. Future copyright cases in the 9th will still be appealed to the 9th Circuit, not the Federal Circuit, unless they are also a patent case.
I think there needs to be a change to the way appeals work in cases like this. In federal trial courts, there is a thing called supplemental jurisdiction which allows a court to hear claims that they would normally not have subject matter jurisdiction to hear if they are part of a case with other claims that they do have jurisdiction to hear.
For example, suppose a business deal goes bad, and ends up spawning a lawsuit involving federal copyright claims and state contract claims. Copyright claims must be heard in federal court. Federal courts normally would not have jurisdiction to hear state contract cases, but because of supplemental jurisdiction the federal court will hear the state contract claims too. If the case was just a state contract case, it could not be brought in federal court.
The idea behind supplemental jurisdiction is that in case like my hypothetical business deal gone bad it really is one case that just happened to generate issues that fell under different jurisdictions. If tried separately there would be much overlap in witnesses, documents, and other evidence. It would be an inefficient use of judicial resources and unduly burdensome on the parties and the witnesses.
At the appellate level, the court is examining the trial court's application of the law, not the trial court's determination of the facts. The appeals court works off the transcript and documents from the trial court, and the only people that have to appear physically are the lawyers arguing for the parties.
I think it would make a more sense to let appeals from multi-issue cases to go to multiple appeals courts, each appeals court only getting those issues for which it sets precedent. So in a case like Oracle vs. Google, tried in the 9th Circuit, copyright issue appeals should go to the 9th Circuit Court of Appeals, and patent issue appeals should go to the Federal Circuit. In cases like my hypothetical copyright and state contract case, if tried in the 9th Circuit, appeals on copyright issues should go to the 9th Circuit Court of Appeals, and state contract issues should go to a state appellate court.
...which was not invented by Sun. GC is like twenty years older.
It's also the main language taught at universities, which helps with hiring. I've heard that Google's public use of Python is more for PR. If you want to change this then the way is to change what educators are teaching.
Java is probably one of the reasons why they acquired Android. Possibly even one of the reasons Android is written in Java.
I once knew a senior Java architect who turned down a job at Google. This was back in the "who needs another Yahoo!" days. Needless to say they regretted that decision.
The problem isn't rewriting Dalvik in Go or language X,Y,Z.The problem is the APIs used by Google -- and Oracle copyright claims on them.
Furthermore Dalvik supports most languages of the JVM so do you really want to impose a single language in place of Java, Clojure, Kotlin, Scala, Jruby, Jython and many more ? do you think all the programmers using these languages would be happy if forced to migrate to Go ?
Ask yourself that question.
I'd say it's time they dumped that lawnmower and came up with something to replace it.
And who's going to write a Java/Clojure/Scala/Jyton/JRuby/Kotlin/ to Go compiler ? when Google couldn't even write their own language for the android plateform at first place ?
Rich Hickey has complained about the lack of composite value types for instance, and I can imagine that many language creators would love to use green threads based concurrency without actually having to write the low level code for it.
Go is a minimalist language. Many people want more sophisticated type systems and other modern features. So there's a great opportunity for other languages to stand out without having to compete with Go itself. Every time Java adds some functional programming support, the Scala community has to defend its raison d'etre. There would be no such issues with Go and that alone would be a real incentive for language designers to put work into a compiler.
I don't know what you're talking about.
You can use Go to write android apps already so let the people that like other languages already supported by Android do the same. Nobody's going to rewrite Java or Scala in Go. As I said earlier, if Google wanted to do that it would have done that 5 years ago. They are clearly not interested in betting all their mobile strategy on a niche language.
And no, you can not write Android SDK apps entirely in Go today. What you can do is write a library or command line tool and call it from a Java app.
If the CEO's money is a metric in measuring this, maybe. But maybe that's also what's wrong with that attitude.
Contrived example: "Yes, the guy did rape and murder 7 little girls, but he's also taking champagne baths in a tub larger than the city I live in, so he has to be doing something right".
I note this not to defend Oracle so much as point out that the history of computing is long and a lot of important stuff happened before this latest Android/Twitter/Facebook era.
In order to do that, in pure Ellison style, they will use any tactic, no matter how ruthless or disparaging. Ellison does not care about style or manners, he only cares about winning and cashing in; in many ways he's very similar to his great friend Jobs (who did not care about anything but his products, basically).
(Not that Google comes out squeaky-clean, from all this. They clearly piggybacked on the java ecosystem while explicitly avoiding to grant any attribution...)
Google "uses" Java in the toolchain, for some definition of "use." But They don't sell anyone any Java. It will be tough sledding for anyone trying to show there is Java IP inside Android.
... but all apps are "written in Java", in practice, and one could argue that Android would not have obtained such a large ecosystem without this play. This is all but admitted in Google emails from the Sun days. Whether this means Google has to somehow credit Oracle/Sun, it's for the courts to decide, and as of now, the score is 1-1, so not really clear-cut.
> It will be tough sledding for anyone trying to show there is Java IP inside Android.
This has already been considered in the original trial and the appeal. IIRC, a few secondary files were reused or copied verbatim at some point; regardless, Oracle's position is that the API itself is copyrightable, and as such any implementation has to acknowledge the original rights.
(Note: I don't think Oracle should win, I just acknowledge that neither party really has any higher ground, moral or otherwise.)
That's not strictly true. And if it is or not, it can't be relevant. If you take a JVM language like Scala, compile it to Java bytecode, and run it on a Java(tm) runtime you downloaded from oracle.com, does Oracle have any IP rights in Scala? In the toolchain? In your code?
What if you wrote it in Java? Same answers.
What if you translate that code to Dalvik bytecodes? Same answers.
When I say "There is no Java in Android" I mean the runtime in Android is not Java. Everything else is code that was written in Java and translated to Dalvik and runs in those runtimes that are themselves not Java.
So either Oracle has IP rights all over the place, in everything that is in source code that a Java compiler compiles, or that at some point in the toolchain is in Java bytecode, including stuff like Scala, or not.
Google, and Android, make and sell none of the things in which Orcale has plausible IP rights.
That's what the courts have been asked to decide. You can argue with me until we're both dead and this will not change.
> If you take a JVM language like Scala, compile it to Java bytecode, and run it on a Java(tm) runtime you downloaded from oracle.com, does Oracle have any IP rights in Scala?
No. But if you build a like-for-like JVM exposing the same API calls as the official runtime, Oracle's position is that you are infringing their IP rights (unless you do stuff for binary compatibility and yadda-yadda-Sega), since your are "copying" the "intellectual work" that the API design is.
At least one court agreed with them, and the US Supreme Court "refused to disagree", so it can't be so out-of-this-world as a concept.
Say you design a language called Foobar, and build a great runtime for it. It gets wildly popular and you even release it as GPL. Google decides that it really likes the language, and really needs all those developers who use it, but "screw you and screw the GPL": they implement a brand new runtime that will run your Foobar programs mostly unchanged. They refuse to acknowledge any of your work and will not work with you on anything -- it's not Foobar anymore, it's "Googlebaz".
Wouldn't you be a bit pissed off? Isn't that actually copying stuff?
Unfortunately, this sort of "emulation" is often necessary in our industry, and for the best of reasons; now, just because Google acted like total assholes (note how they made their choice when Sun was still alive -- I strongly doubt they would have done it with Ellison on the other side), we risk losing the right to it.
How did Google act like assholes? Android has the same Apache license as the base class and other library implementations they used, which had been open source for many years at that time.
I am not assuming the answer to what's being litigated. I am pointing out that if Oracle has an IP interest in something inside an Android device, it also has exceptionally dangerous and disruptive IP claims all over the place, including things like Scala and all code written in the Java language.
Regarding your example about runtime environments: No, I don't see how inventing a language, which is generally not protectable, and someone inventing a different runtime for a language should make anyone think their IP has been ripped off.
2. As was noted in various trials (Oracle, MS antitrust) "Java" is not one thing, it's multiple. It can refer to the language, the dev environment, the runtime or the API. This case is specifically about the API. Similarly, Android is not just the software that runs on the handset, it also includes the dev environment needed to make that software.
So Oracle should go after Eclipse and other IDEs? Or Apache Harmony?
> *" This completely undermines some of Google's legal arguments as a defense for API copyrightability, because the cases they cited (Sega etc) explicitly held that copying certain things was OK for maintaining binary interoperability."
That binary compatibility is required by javac, which is in the toolchain. Then the Java bytecode gets translated to Dalvik bytecode and packaged as an APK.
One way translation of byte code is not interoperability. Android apps cannot interoperate with "real" Java apps.
Google got a much better deal out of Java. Sun/Oracle got nothing in return.
Android was bought before the iPhone existed