Oracle v Google: API wars
The Oracle v Google lawsuit in the US, which was shaping up to be yet another patent slugfest (albeit an important one), has taken an interesting turn with Oracle adding important detail to its copyright infringement claims. Oracle’s amended statement of claim now alleges the following (full document here):
Android includes infringing class libraries and documentation. Approximately one third of Android’s Application Programmer Interface (API) packages are derivative of Oracle America’s 19 copyrighted Java API packages and corresponding documents.
The infringed elements of Oracle America’s copyrighted work include Java method and class names, definitions, organization, and parameters; the structure, organization and content of Java class libraries; and the content and organization of Java’s documentation.
Examples of this copying are illustrated in Exhibit I to this complaint. In at least several instances, Android computer program code also was directly copied from copyrighted Oracle America code. For example, as may be readily seen in Exhibit J, the source code in Android’s “PolicyNodeImpl.java” class is nearly identical to “PolicyNodeImpl.java” in Oracle America’s Java, not just in name, but in the source code on a line-for-line basis.
Copyright claims are quite a different beast from patent infringement claims. Generally, copyright infringement requires there is (a) a copyright work; and (b) unauthorised copying of a substantial part of that work. While Oracle is alleging outright copying of code, it is the recent addition of more novel categories of “works” highlighted above that sparks interest.
The first question that arises is, does copyright subsist in “works” such as:
- Method and class names
- Parameters of methods
- The “structure, organisation and content” of class libraries
- The “content and organisation” of documentation.
These are quite different concepts from software code itself. Code is recognised as literary work for the purpose of copyright, and is protected as such. But what about related aspects and “concepts” such as the method names?
Copyright attaches to certain “original works” involving some independent intellectual effort. Clearly this will apply to the code comprising most human-authored non-trivial methods. The method could possibly be copyright as an individual work, or (more likely) as a part of a larger work (like a chapter in a novel). The name of the method may be included as part of the copyright work; to borrow the novel analogy again, in the same way as a chapter heading would probably be included as part of the novel’s copyright, albeit a very minor part.
An important distinction with a novel’s chapter headings, however, is that most method names are purely functional. In fact, good software design dictates that methods follow a logical and obvious naming convention. “Creativity” should be kept to a minimum (for the sanity of future developers!) For that reason, an individual method name is unlikely to attract copyright protection on its own, and would only constitute a very “thin” part of the overall work. Another developer, seeing the method name alone and copying it, would probably not have infringed copyright because the method name was not a substantial part of the copyright work.
The Oracle claims are not about copying just one or two method names, but rather about copying all (or most) of the Java methods, classes and parameters in order to replicate the Java API. If one method name is not copyrightable, what about all method names in an API? Compilations of works (or parts of works) are certainly copyrightable, but again there needs to be a minimum level of intellectual effort. And beside method names, does an entire API – consisting of method names, class names, return types, parameter names and types, access levels, namespaces and so on – have copyright protection?
How the US court answers this question could have important implications for developers.
