Hey, White House! APIs Are Not Copyrightable.
There’s been an interesting case winding it’s way through the court system in the United States over the past few years. The outcome of the case is hinging on one small question: Can you copyright an API?
The Supreme Court is deciding whether or not it’s going to hear the case, and it asked the White House to chime in with what it thought should happen. This happens all the time. The Judicial branch asks the Executive branch it’s opinion. In this particular case, the side that the White House has adopted seems really strange.
The White House has said, yes, you can copyright an API. That’s a small decision with huge ramifications for the software world, and it’s important to spend a few minutes talking about why.
There’s a bunch of background that needs to be covered, first. Like for starters…
What’s an API?
API stands for Application Programming Interface. It’s one of the primary methods of interoperability between software systems. If you build a software system that you want people to use, then you publish how to do so in the form of an API. If you want to use a software system that someone else has built, then you consume the published API.
APIs come in all kinds of shapes and sizes.
Some APIs live on the web. Twitter has an API that you can use to send tweets from a computer program. Facebook has an API that you can use to write a program to determine how many people like the content that you’ve posted.
Some APIs live inside the operating system on your computer. When a program wants to read from a file on your hard drive, it uses an API that’s published by the company that made your operating system. When a program wants to send a file over the Internet, it uses an API that helps it figure out the IP address to send the file to, and it uses a different API to actually send the file.
Some APIs live in your phone. APIs allow your favorite iPhone game use the Facebook app on your phone to log you in. That keeps you from having to remember yet another password, and it keeps the programmer from writing yet another block of code to make sure you’re who you say you are.
Some APIs are packaged along with programming languages. The C++ language is packaged with the Standard Library which is just a bunch of different APIs that let programs do all sorts of common tasks, like write text to the screen, or store a bunch of data in an efficient, but complicated, format, like a Red-Black Tree (yes that’s a real thing).
Why does this matter?
The Java programming language is also packaged with a bunch of different APIs. These let programs that are written in Java do common tasks. When Google was building their Android operating system for smart phones, they were inspired by the success and portability of Java. They decided to build a system that functioned a lot like Java, but wasn’t exactly Java. They called this system Dalvik. (Names in computer science are weird.)
They wanted the system to be so similar to Java that tools built work with Java would also work with Dalvik. These tools were built to talk to APIs that shipped with the Java programming language. Accomplishing this is simple enough, if the purpose of the API is well understood. A version of the API is written and packaged with Dalvik, and now any Java tool that knows about that particular API is now able to work with the Dalvik version. The tool being used does not have to change at all.
That’s a pretty powerful idea. You can write your own version of an API, and the system connecting to it is able to function just like it was connecting to the original version.
What would an analog of an API look like in the physical world?
Software is a very abstract thing. You can’t touch it, and you can’t look directly at it. This makes it very hard to talk about. So instead, we have to imagine what it would look like if it was made out of physical things.
Physical APIs are everywhere. A screw uses a bolt’s API to fasten two things together. The lamp on your night table uses the power company’s API to to get power from your wall. Your remote control uses your television’s API to tell it to change channels. Your sprinkler system uses the water utility’s API to spray water on your lawn. Your set of Lego brand building bricks uses the same API to connect two bricks together that your Mega Block brand build bricks use. That means you can mix and match bricks that were made by both companies to build a toy rocket with your daughter.
What’s the role of copyright?
Copyright is a very old concept. It was old when the United States constitution was drafted, and it’s specifically mentioned as one of Congress’s powers. It’s purpose is to make it possible for people to make a living by generating creative works. The idea is that if the creator of a work has an exclusive monopoly over copies of that work, then the creator is able to derive a living by selling those copies. So the creator has a right to the copies, thus copyright.
What’s a copy?
That gets complicated. In United States copyright law, copyright is actually a collection of several different rights. (There’s an awesome MIT OpenCouresWare course that covers copyright in depth. If you’d like to learn more, check it out.) Each of these rights is meant to describe different kinds of copies. The short version is that it’s complicated.
What does this have to do with APIs again?
The company that owns the Java language, Oracle, sued Google, the creator of Dalvik for copyright violation. Specifically, when Google built the Dalvik version of the Java APIs, Oracle claims that their copyright over the API was violated.
What can be copyrighted?
Most things that are the result of a creative process can be copyrighted. When you write a love letter to your partner, you own the copyright on that love letter. When you pound on a piano’s keys in a department store (and record it on your cell phone), you own the copyright on that specific cacophony of noise. When your son attacks the hallway with a purple permanent marker, he owns the copyright on that collection of lines.
What can’t be copyrighted?
The layout of a webpage can’t be copyrighted. 3 columns each one an equal width apart. The first person to think of that arrangement has no copyright claim. What about 2 columns, the first one taking up about 70% of the width. Nope. Not that one, either.
What about a color? Nope. You can’t copyright a color. Or the name you give a color. And if you want to limit how others use a specific shade of magenta, then you can apply for trademark protection. But even then, you won’t have a copyright on that color.
What about a mathematical expression? Nope. You’re not violating anyone’s copyright when you write out
2 + 2 = 4. If you want to protect how you use that equation in a manufacturing process, then you can file for patent protection. But you still won’t have a copyright on the math. That’s because facts can’t be copyrighted.
Names and headlines can’t be copyrighted, either. If you write the next big best seller, you own the copyright on the content, not the title. Again, if you wanted to limit the ability of others to use that same title, then you could apply for trademark protection.
Simple recipes can’t be copyrighted. Your grandmother’s cookie recipe may be the best that you’ve ever tasted, but she has no copyright over the simple list of ingredients and the steps needed to combine them to produce a baking sheet full of sugary goodness.
So can an API be copyrighted?
I say no. An API is a factual description of how one system is interacting with another. While it may result of from the performance of a creative process, the facts about the result are no more copyrightable, than the color of purple your son used to ruin your hallway. The documentation that describes how to use an API is copyrightable. But the simple list of operations, the information they require, and the information they provide are not copyrightable.
What’s the harm? Why should anyone care?
Answering this is going to be tough. Software is hard because you can’t see or touch it, remeber. So let’s switch to metaphor mode for a second.
Remember the outlet on your wall that was mentioned earlier? It’s the API that you use to get power from the power company. But what if you don’t want the power company’s power anymore? What if you want to start generating your own? You could go out and get some solar panels or build a small wind farm or take advantage of the heat that’s stored deep below ground. There are a lot of options. And I’ve only mentioned the “green” ones so far.
Striving to have the greenest house on the block isn’t the only reason you might want to generate your own electricity. Imagine that there’s been a complicated service disruption between your house and the power station. Perhaps there’s been a flood, or a car has knocked over a pole carying the power line to your house, or a tree has fallen. You could hook up a generator to your house to produce the electricity that you need.
In these cases, you’re implementing the same API that the power company uses. The same rules for electricity production in your area are the ones that your new power generation system is going to follow, and none of the lights, devices or appliances in your home are going to care that the electricty didn’t come from miles away.
What would happen if that API was copyrightable? You’d have to get permission from the power company anytime to wanted to generate your own power. If they won’t give you that permission (because there’s nothing saying that they have to), then you’ll have to figure out a different way to get power to your devices. You won’t be able to use the same API, the same plug that you’ve been using, because the power company owns the copyright on the rules of that govern that connection.
This would get a little crazy around your house. You’d have outlets on your wall for the electrical company and then completely different outlets for your solar panels. And each one of your appliances would need to have two different plugs. One plug that can plug into power company’s outlet and one that can plug into the solar panel outlet. If you happen to have a device with only power company’s plug, then you’ll have to either go without using that device when using solar power, or you’ll have to buy a new device.
If this scenario sounds far fetched and ridiculous, good. That’s the whole point. That would be a very difficult world to interact with, and it’s very similar to what the software world would look like if programmers had to get permission to use and implement APIs that were built by others.
And that’s the software world that the White House has asked the Supreme Court to uphold. A world where you have to get permission to create a device that plugs into something else.
What can we do?
There’s not a whole lot that we can do at this point. The Supreme Court is the final decision on what our written law means. Once we find out what they decide, if we’re unhappy about it, then we need to work to get the law changed. And that’ll require reaching out to our members of Congress in the House of Representatives and the Senate. So start typing up your letters to your representatives to let them know how important the answer is to a small simple little question: Can APIs be copyrighted? Let them know that the answer should be no.