Google v. Oracle America is a current legal case within the United States related to the nature of computer code and copyright law. The dispute centers on the use of parts of the Java programming language’s application programming interfaces, which are owned by Oracle, within early versions of the Android operating system by Google.
The long ongoing, but not for too much longer, dispute between Oracle and Google about the use of code from the Java SDK in Android has reached a new stage. Oracle has outlined its case to the Supreme Court and it seems to be a strong one.
Every programmer knows the importance of an API. We understand what they are for, how they are constructed and how they are used. More to the point, most of us know how to re implement an API without stealing code, but if Oracle wins we might well be deemed guilty of stealing code even if that conclusion seems unreasonable.
An API specification lets a client call functions to get jobs done. It is a specification of function names and parameters and, if you are lucky, some idea what the function will do and what its limits are. It is a bit like saying that a car has a gas pedal and a brake pedal. If you want to build your own car no one is going to accuse you of copyright infringement if you implement the same two pedals.
The problem here is that it is possible to draw comparisons between implementing an API and other things to suit your purpose. Pick the right comparison such as Oracle’s:
By Google’s logic, a plagiarist could define J.K. Rowling’s idea as “a story about Harry Potter, Ron Weasley, and Hermione Granger who attend Hogwarts” and steal the characters and their back stories.
Clearly a lot is being stolen here, not just names. The fact that it is so easy to make parallels, that either backup or rubbish the idea that an API is a creative work expressed in human readable language and hence copyrightable, is the main difficulty in coming to a logical decision.
Oracle has gone to some length to make the Java API seems complex and a work of great achievement. A particular function definition is used to make the point:
public boolean verify (PublicKey verificationKey,
throws InvalidKeyException, SignatureException
Yes, it looks complicated and creative to the non-programmer, but we know that this is just a function that does a particular job and accepts the almost essential parameters to get that job done. Oracle makes it sound as if it was a handcrafted thing of great creativity, more like a poem. If a different method had been picked, say:
public int length()
which returns the number of characters in a string, the argument might not be as effective – what non-trivial alternative is there?
The point is that programming languages are not natural languages and copyright doesn’t mean the same thing when applied to them. Some code is almost inevitable and a very shallow expression of creativity.
Now, you might ask, why are we all doomed?
The reason for the alarmist headline is that the Oracle submission is very persuasive. It almost won me over and I know it is out of touch with reality. It is an excellent argument and it seems to put the technical ideas across in “plain English”. From what it claims it seems inevitable that Google stole something valuable and the product of Oracle’s, or rather Sun’s, creativity.
The point is that explaining to a non-programmer what an API specification or a function prototype is, no matter how understandable the explanation, doesn’t convey the obviousness, or the essential necessity, of the prototype. You need a function to do a particular job, which in turn almost determines the form of the function prototype, almost irrespective of how the job is actually done. There is little creativity, even if there are better or worse ways of ordering and naming the essential parameters.
Oracle also argues that allowing Google to have its reinterpretation of the law would damage businesses which would no longer be in a position to protect their intellectual property. Development would cease because the API world was open to everyone. This is clear nonsense. If I invent an API, of course I want it to be copyright. If I use an API then the last thing I want is for it to be copyright. I want others to look at it and reimplement it, extend it and offer me as a user the security of a second source, the promise of innovation and the prospect of lower costs.
One thing that is obvious is that asserting that APIs are copyright would be a disaster. There are so many cases of companies reimplementing APIs or systems that conform to an interface that my guess that copyright troll would become a lucrative job. It would be ironic if Oracle was the first to be sued for reimplementing other people’s APIs, but I’m sure that they would be in the list at some position. With a rational approach even Oracle would not want this outcome.
It is clear that copyright should not apply to code that simply defines the operating conditions of some system. It isn’t even clear that copyright should apply to code of any sort.
After reading Oracle’s submission I am of the opinion that the document is good enough to persuade a non-programmer that an API is a wondrous creation of extraordinary effort and akin to the deepest expression of natural language. This is wrong, but I think it will stand and I think we have to prepare for API lockdown.