One Last Push To Save The API

A group of computer experts – including me – asked a US court to think again about fair use of APIs this month.

Tomás Saraceno artworks at SF MOMA: Stillness in Motion—Cloud Cities

It was an unlucky fact that Oracle’s case against Google over Android started with patents. Their initial case fell apart almost immediately, with almost all the patent claims invalidated. The implausable backstop copyright case Oracle made against Android’s use of language-essential definitions in the Java APIs (and thus against the freedom of developers everywhere) carried on though. The initial patent case meant that the appeal when Oracle soundly lost ended up at the Court of Appeals for the Federal Circuit (CAFC) — the specialist patent appeals court in the USA — and not at a court competent to dispense copyright justice. 

The result has been two reversals by CAFC of lower court outcomes that seemed correct to most of us who understand the issues involved. In the most recent reversal, CAFC even overturned a strong and apparently sound jury verdict — exceptional behaviour. In response to that reversal, a large group of experts collectively representing hundreds of years of experience of inventing, implementing and instantiating software solutions has once again put signatures to a new amicus statement to help the courts understand the technical nuances of the case, especially the fact that an API is not the same thing as code.

This time the goal is to have CAFC rehear en banc the appeal that (in our opinion) erroneously overturned the jury verdict. In summary, we believe that the most recent decision by CAFC “disregards the technical realities of software APIs and directly conflicts with Ninth Circuit law.”

To unpack that a little: since CAFC is a court with specialist expertise in patent cases, its job in a copyright case is to second-guess the decision that the correct venue — in this instance the Court of Appeals for the 9th Circuit — would have made in the case if they were hearing it. The brief explains how CAFC appears to have guessed wrong this time. It also explains how CAFC has not understood the nature of APIs and thus has applied the wrong comparisons to determine if Android’s use of the essential core of Java is fair use. To me, the most iconic statement is the footnote on page 5:

Throughout this brief, amici use only the term “declarations” instead of “declaring code,” which was sometimes used in the panel opinion. “Declaring code” is not a term of art, and is not used in the industry, in part because declarations are not code: they cannot be executed by a computer and their only function is to dictate how code communicates with other code.

This was the point I explained to the judge during the hearing and appears to be the crux of the misunderstanding at CAFC – they appear to think think APIs are the same thing as code. Hopefully this brief will clarify things for them, get them to rehear the appeal en banc and partially mitigate the disaster Oracle is bringing on developers everywhere.

I’m told the outcome of this case doesn’t create useful case law, so if this doesn’t work out, we will have to wait for the next API lawsuit to come along to set the right precedents (and hope it isn’t also subject to the same patent gaming). That could take years — this case is already nearly 8 years old — so a correction in Oracle vs Google would be preferable.

2 thoughts on “One Last Push To Save The API

  1. “declarations are not code: they cannot be executed by a computer and their only function is to dictate how code communicates with other code”

    I really don’t think this point is true in any meaningful sense. Most compiled languages make declarations seem more special then they are, but if you look at something like Python, def foo() : [...] is actually an instruction that the interpreter executes when it encounters it (adding a new entry in the global list of functions). Would you say that APIs in Java are fundamentally different from APIs in Python? Should, in your opinion, APIs in Python be copyrightable, since they are code, while APIs in Java are not? [Note: the equivalent Java declaration, void foo() {[...]} is actually exactly as much executable code as the Python one – it’s just that it’s an instruction to the Java compiler, not the Java runtime; you could argue that it’s not code, it’s data, but by that measure Prolog, or even Haskell, code could be said to be data].

    Now, I believe that the fair use discussion is much more interesting, especially in the context of reverse-engineering and so on. But to my mind, the court seems to have understood the nature of APIs very well.

    • Declarations are “glue” like footnote numbers in a book, and thus are not the element of the work that rises to the standard of copyrightability, especially when abstracted from the implementation or documentation. How the computer processes them is not really the point.

Comments are closed.