Why the Oracle/Google Ruling on API Copyrights Should Be Overturned
Judge Aslup ruling on Oracle v Google regarding copyright on an API is up for appeal and in my opinion it should be appealed.
Copyrights and patents are two very different things. Copyrights are there to protect somebody's creative work from being copied wholesale. Any software developer who has ever designed and implemented an SDK knows that the majority of the work goes into designing the API.
An API is comprised of things such as:
- Classes and structures
- Class hierarchies
- Function names
- Function parameters
- Results from functions which in turn are often objects of specific classes with structure
Getting these right and making them sensible in how they work together is hard work. Once you release an SDK you are left with the burden of supporting it. It will govern what can be done easily with a programming language, what can be done with difficulty and what cannot be done at all.
Take Java's I/O package for example (java.io). The original java.io package provided a simple and elegant API for performing I/O functions but the design of the API preventing functionality similar to the POSIX C "select" function which would allow you to do socket multiplexing (e.g.: have a single thread wait on multiple sockets to have data available and then take action when at least one becomes available). With the old java.io API one would have to create a separate thread for each socket one would want to listen on and then have to manage the concurrency. A simple TCP/IP tunnel required two threads under java.io because you had to have one waiting to receive data from each side of the connection before writing it to the other side. This was an unnecessary waste of system resources. With Java 1.4, Sun introduces the java.nio package ("nio" stood for "new I/O"). The API was rethought with new classes and interfaces and new hierarchies. New methods were defined including some that provided backwards compatible with the java.io packages. And of course Sun went through the trouble of implementing the underlying methods which we're actually kinda trivial since their implementations were well known at the native C layer.
This is just one example of why designing an API is often far more work than implementing it. Of course anybody can borrow ideas from what Java did in any of their packages just as somebody can use a certain number of consecutive notes from any song or write their own song that is similar to, but different than another. However, for a court to allow Google to copy the Java SDK wholesale is to say that there is no creative work that goes into designing an API. That is simply wrong and needs to be reversed.