views:

560

answers:

5

Is copying an API a breach of copyright?

Say for example that a proprietary spreadsheet software exposes a programmatic interface with a nice, easy to use and learn, flexible yet deep API.

Can I implement the same API to another spreadsheet program? Or to csv files or database tables, or whatever? Or would the API (with a completely different implementation and back end) be considered derivative work or copyright infringement or what?

A: 

IANAL but I don't think it's copyright infringement (though their API documentation is presumably copyrighted): e.g. back in the day competitors created BIOS clones.

ChrisW
Indeed. I believe Columbia Data Products and Phoenix Technologies' efforts are the most famous historic cases. In the case of IBM's architecture's extensive documentation, that documentation actually came with legal restrictions to be only used for informative and programming purposes, so as a reverse engineer you had to be able to legally prove you never read those docs.
Coding With Style
+2  A: 

I think patents would have more to do with that than copyright law.

Look up WINE, the Win32 implementation for Linux. See if there are any similarities between it and what you're thinking of.

Omega
+8  A: 

First let me say that I am not a lawyer, and you should not, under any circumstances, rely on me for legal advice. I am also assuming you are in the United States, where most everything computer-related falls under the DMCA. Now that the disclaimer is out of the way, on to my answer.

As others have stated in the comments, you should consult an attorney.

That said, you might find the FAQ section of DigitalConsumer.org helpful. Specifically, you should read the question titled But I thought the DMCA had a special exemption for reverse engineering?. I have pasted an excerpt below for your convenience.

Section 1201(f) of the DMCA states that "a person who has lawfully obtained the right to use a copy of a computer program may circumvent a technological measure that effectively controls access to a particular portion of that program for the sole purpose of identifying and analyzing those elements of the program that are necessary to achieve interoperability of an independently created computer program with other programs." Doesn't this solve the reverse-engineering problem?

This exemption is inadequate for several reasons. First, reverse-engineering has many legitimate uses beyond strict interoperability that are not allowed by the DMCA. Significantly, one might reverse-engineer in order to build a competitive product, but such reverse-engineering is not permitted. Other legitimate uses that are not exempted include: verifying proper operation of a program; discovering undocumented features; or correcting bugs in the external specifications of an application.

Second, "interoperability" is narrowly defined by the DMCA as meaning "the ability of computers to exchange information, and of such programs mutually to use the information which has been exchanged." By restricting interoperability to information exchange, the DMCA excludes other legitimate types of interoperability such as API-level replacements for computer libraries...

Also keep in mind the potential bias of a site named DigitalConsumer.org. They are bound to give you a somewhat skewed interpretation of what limitations the DMCA places on developers. That gets me back to my original advice: consult an attorney.

William Brendel
+1  A: 

First: IANAL!

Is the API publically available? Did you need to sign or click-through a EULA, NDA or contract to access it? If so, read them. If not, then I don't see many problems.

You're not copying their code, nor their documentation so it's not copyright infringement. An API in itself cannot be patented so you're good there too. That only leaves trademarks and I'm pretty sure they don't apply either.

Do note that aspects of an implementation of an API can be patented though. That's what patent licenses in standards are all about. Read some of the Mono flamefest to see how that works. Basically, an API can be written in such a way that in order to implement it correctly, you need to infringe a certain software or algorithm patent. For example, the API may specify that a certain data blob is encrypted with a certain encryption method. If that encryption method is patented then you cannot correctly implement the API without violating the patent.

Sander Marechal
+1  A: 
Coding With Style