The recent Oracle vs Google case, covered by InfoQ elsewhere, has brought around a significant change in the original complaint. The outcome of the trial has much wider ramifications to the technology industry than a licensing dispute over mobile phones.
Whilst the case was initially based on the assumption that Oracle's patents were valid – now all but demolished – Oracle has switched tack to claim that it is a copyright violation. At heart is the question of whether an API or even a computer language can be copyrightable.
The Android language is a subset of the Java language, and even compiles down to Java classes via the javac
compiler (or other IDE based compiler). This output is then handed to the Android/Dalvik specific DX tool, which translates the output to Dalvik bytecode, for execution on Android's Dalvik VM.
The Java bytecode and Dalvik bytecode are completely different, with Java's bytecode and VM being stack-based and Dalvik's bytecode and VM being register based. At the VM level, the two systems are completely different.
However, the language for both Android and Java is – to most intents – the same. The Android toolchain even uses the same JavaC compiler as a front-end translation tool, although not necessarily as a final destination. As a result, the APIs that are used in Dalvik follow the same language as Java. In order to operate with the JavaC compiler, a specific subset of the Android APIs match with the Java APIs – for example, classes like java.lang.String
.
Most of the implementation in the Android toolchain is based off of the (now-defunct) Apache Harmony project, which was a clean-room implementation of Java which shut down last year on the basis that Oracle would never allow it to run against the Testing Compatibility Kit without a field-of-use restriction for mobile space.
Oracle is now claiming that as designer of the Java APIs, not just its OpenJDK (GPL) implementation is covered by also every implementation ever of the Java APIs are covered by its copyright. Thus, any implementation of the Java APIs – whether they are called Java or not – are violations of Oracle's copyright.
SCO used the same tactic when alleging copyright of a massive scale of Linux against its codebase, despite the fact that most of these were the names of APIs. (That case essentially collapsed when it was ruled that SCO didn't own the copyrights in the first place.)
Florian Mueller of FOSS Patents thinks that it's a slam-dunk case that Google needed a license for Java, not the least of which was the now-famous Lindholm mail in which reports that an engineer's opinion is that they need a license to do what they're doing with Java:
What we've actually been asked to do (by Larry [Page] and Sergey [Brin]) is to investigate what technical alternatives exist to Java for Android and Chrome. We've been over a bunch of these, and think they all suck. We conclude that we need to negotiate a license for Java under the terms we need.
However, this doesn't necessarily state that APIs are covered by copyright, just that if they wanted to use Java as-is they would need a license. Oracle is now claiming even stronger that due to the effort involved in creating the APIs that they should own copyright on it as well. It's also worth noting that Florian is in a consulting relationship with Oracle:
That said, as a believer in transparency I would like to inform you that Oracle has very recently become a consulting client of mine. We intend to work together for the long haul on mostly competition-related topics including, for one example, FRAND licensing terms.
Until now, languages have been considered exempt from copyright. Only the ideas expressed in a specific way are copyrightable; so a specific English text (like Shakespeare's Hamlet) is copyrightable, but the English language itself isn't. If ownership of a language is copyrightable, then potentially Oracle is claiming copyright of every Java program ever written.
If the language isn't copyrightable, what about a specific set of APIs? In this case, Android and Java share 37 APIs (i.e. methods on classes like String
and ClassLoader
). It's also clearly the case that Android doesn't pass itself off as Java – unlike Microsoft's extensions in the late '90s – so doesn't need to be a superset. Microsoft was subsequently forced to change the name of its language to J+ to avoid any future incompatibility claims, but was allowed to continue if it didn't call itself Java.
Creating a good API certainly takes time, and it's a non-trivial effort (witness the ongoing design discussions about the Lambda project, for example). However, is the result of the API copyrightable in and of itself, particularly when it comes to alternative implementations? It is this question which Oracle and Google are divided over.
Google's argument that the method names and type signatures are not themselves copyrightable is based on an argument against a 'Mock implementation' which returns default answers such as 0 or "" for every method. This clearly wouldn't be the same as in Java; would that be considered as a copyrightable claim? If the names and types are not themselves sufficient for copyright protection, what is?
Oracle's argument is that since the API design takes time (and good APIs even longer) that the collection should be considered as a combined work, and thus is copyrightable. However, if this were ruled as true, it would have a significant impact in any programming language as APIs are used by client programs and – in some cases, implemented – by other programs. (Every Java JDBC driver which implemented the Connection
interface, would be violating that copyright, since an implementation of an interface has a de facto copy of the API's signatures.)
Simon Phipps writes in InfoWorld that If Oracle wins, Everyone loses:
… flies in the face of the received wisdom of the software industry. It's so widely accepted that programming interfaces and languages are beyond the scope of copyright that very few cases have ever been brought to court. In those that have, the received wisdom has largely been upheld.
This is a good thing. Without it, the lives of programmers would be much more complex. Header files and function prototypes would all need licensing from their owners, so programming for any operating system would at best require attention to license compatibility and at worst would involve total control of the programming lifecycle by the platform vendor.
Even if Oracle wins, it's not clear that it will help its own customers. If they manage to get a ruling that decries APIs as copyrightable suddenly any APIs that are used in computer programming language might be asserted to be violations. This in turn will make developing software more expensive for everyone, not just in the Google and Oracle case. Phipps argues that this would only affect America:
This would be largely an American phenomenon. In Europe, there is continentwide law asserting that programming languages and interfaces are unlikely to be copyrightable, and even if they are, an exception written into the law allows copyright to be ignored if the purpose of infringing it is for interoperability. Any precedent set by an Oracle win would likely just harm the American technology industry and offer an advantage to its competitors.
Whatever the outcome of the trial, the result will have ripples in the technology industry. The case continues.