It’s a basic fact of copyright law that you can’t copyright methods or procedures for doing things. You might be able to copyright particular expressions for things—like an evocative description of how to combine and prepare ingredients in a recipe—but you can’t copyright the basic facts behind it—the ingredients, their amounts, and the order in which you combine them.
The same is true of blank accounting forms, the rules of games, or any other situation where you need a set of structures in order to interface with an underlying system. What you’re doing is creating a set of ideas of how to interact with a system, and ideas in themselves aren’t copyrightable. You might copyright the book on accounting that contains your blank forms and explains them; you might copyright the booklet that contains your particular description of the rules of your new board game. But the underlying ideas that those things describe—the forms and the rules—can be used by others without your permission.
The same thing should be true for APIs. An API, or “application programming interface,” is a framework used to communicate with a given computer system. If I want an application to perform a particular calculation on a couple of variables and send me the result, I need a way to structure that request. Just as with the rules of the game, the particular name of that request, and the order in which it takes its inputs, and how it spits back its result, are all parts of a process and method—an idea. But a case decided by the Federal Circuit this past May threw that into confusion.
Oracle v. Google
Oracle bought the rights to the programming language Java. Google created its own programming language for Android. To make sure that Java programmers could easily learn to code in Android, Google used the same names and structures as Java for different commands. So, for instance, in both Java and Android, there’s a line of “declaring code” that says this:
public static int max(int x, int y)
That line is a template for the function “max,” which takes as an input two different numbers, x and y, and gives as an output whichever is bigger. And it’s the collection of functions and procedures like this—not even the code underneath them that actually does the work—that Oracle claims a copyright in. The Federal Circuit agreed with Oracle. We don’t, and we’re asking the Supreme Court to reverse that decision.
It’s generally easy for work to qualify as copyrightable—you need to set down an original work of creative expression in a tangible medium. And while all of us do that all the time, those things that are copyrighted do need to meet all of those characteristics. Creative and original ideas themselves aren’t copyrightable—just the forms in which they’re expressed.
But this is one of the mistakes the Federal Circuit made. It decided that, since the developers of Java were creative in coming up with particular names for their functions and collections of them (“max” could just have easily been called “maximum” or “biggernumber,” for instance), that these selections are copyrightable. But creativity and originality are only two of the necessary qualifications for copyright. The thing also has to be an expression, and not an idea.
Consider a stoplight. Red means stop; green means go. When stoplights were invented, this was a completely arbitrary choice. Once someone had exercised the originality and creativity to pick that particular color scheme, it became the standard. Asking other makers of stoplights to come up with their own color scheme (or pay for the right to use red for stop and green for go) would be at best wasteful and at worst dangerous. That convention or rule is too much of an abstract idea to be copyrightable, no matter how creative it might have been.
The role of patents
It’s natural to look at a company trying to restrict the use of a process or method and say that, clearly, it shouldn’t be copyrighted, since that’s the realm of patents. Which is generally true, but doesn’t by itself say why software shouldn’t be copyrighted.
And, in fact, we’re not arguing that software in general can’t be copyrighted. But the particular elements of software at issue here—APIs—sit so far on the “idea” side of the idea-expression dichotomy that they don’t get the same protection as, say, Destiny.
We have a tendency to look at a particular computer program—or any other product—as a single unified thing. But that’s not necessarily how the law looks at it. A lamp, for instance, can have copyrightable expression in it (for instance, if its base is shaped like a statue of a human), but there are parts of the lamp that aren’t copyrightable, like its sockets, wiring, and so on. There are also possibly inventions in that lamp—maybe it uses a new structure of wiring to conduct electricity from the plug to the bulb. But all of the parts of the lamp that don’t contribute to that invention aren’t going to be covered by a patent.
So while it’s accurate enough to say “lamps can be patented” and “lamps can be copyrighted,” that doesn’t actually tell you anything about which particular parts of the lamp is subject to what.
Just so with software. There can be copyrights in software; there are copyrightable parts of software, just as clearly, there are non-copyrightable, idea-only parts of software. There are inventions that likely can be embodied in software and thus subject to patent. But an API is not “software” generally; it’s a particular set of rules and structures contained within some software.
And, as we’ve seen, to those rules are just ideas, they’re not copyrightable. Are those ideas patentable? Maybe, but that’s not the question. There’s a boundary between copyrights and patents, sure, but that boundary is not the only limit on either of them. Just as there are things that can have both copyrights and patents applied to them, there are things that fall into the realm of neither. Abstract ideas, works of nature, and natural phenomena all fall outside of IP. And, in the interest of the progress of science and the useful arts, it should stay that way.
Image credit: Wikimedia Commons user Bobbygammill