|
Back in the 1980s, everyone used the Lotus 1-2-3 spreadsheet on their PCs. In 1989, Borland released a competitor, Quattro Pro. It used the same menu commands as 1-2-3 so that users could import their 1-2-3 spreadsheets with keyboard macros. Lotus sued Borland, and after a loss in the district court, Borland won on appeal, arguing that the keyboard commands are a “method of operation” and not subject to copyright. Lotus appealed to the Supreme Court, which deadlocked 4-4 (one justice was recused) in 1996. That meant the appeals court decision was affirmed, but it did not set a formal precedent. Since then, everyone assumed that settled the matter; you can’t copyright the way a program works or its interfaces.
Well, everyone except one guy in Hawaii.
That guy, of course, was Larry Ellison of Oracle.
Google’s Android operating system is programmed in Java, created by Sun Microsystems. After attempts to negotiate a license for the Java software failed, Google went ahead and wrote their own implementation of Java. They copied the “declaring code” that defines the API, Application Program Interface, that programmers use to call Java methods from their own code and reimplemented everything else. Oracle, which had bought Sun, filed a huge lawsuit in 2010 full of patent and copyright claims against Google.
The case took an extremely tortuous route through the courts before arriving at the Supreme Court. Along the way, Oracle dropped the patent claims. (I was Google’s expert for a few of the patents, which were all quite low quality.) The appeal was heard by the Court of Appeals for the Federal Circuit (CAFC) which normally hears patent appeals, even though the patent parts were long gone when it reached the CAFC. The CAFC made interim decisions and sent it back to the trial court twice. One of those times, a jury decided that Google’s use of the declaring code was fair use, based on the facts, but later the CAFC decided that the jury was wrong and it wasn’t fair use as a matter of law, about which more in a minute.
The case that Google presented to the Supreme Court had two prongs: one was that the API code wasn’t copyrightable at all, because it is a “method of operation” which the copyright law excludes, the other that Android’s use of the declaring code was protected by fair use. The court punted the first question and went to a detailed analysis of the fair use claim.
Fair use is a peculiar but important part of U.S. copyright law. U.S. courts have been applying fair use in their decisions since 1841, but it wasn’t formally made part of the copyright law until 1976. Rather than trying to define what fair use is, the law codified the rules that judges had been using, listing four factors for courts to use: 1) the purpose and character of the use, 2) the nature of the work, 3) the amount used, and 4) the effect on the market for the work. In practice, courts have given much more weight to the second and fourth factors, particularly if the use is “transformative” under the second factor, and created a large body of case law as courts have found that various cases are or are not fair use. In some cases, the factors are clear enough that a court can decide one way or another based just on the law; in others it has to present the case to a jury to weigh the detailed facts of the specific case. As noted above, in this case, the district court’s jury found fair use based on facts, while the CAFC said no, based on the law, it isn’t.
After a long summary of the history of the case, the decision starts by noting that U.S. copyright law grants rights to authors “not as a special reward, but in order to encourage the production of works that others might reproduce more cheaply.” That is, the U.S. basis of copyright is entirely utilitarian, unlike some other countries where it is intended to protect the inherent rights of authors.
It then agreed with the CAFC that fair use here depends on the law and went through the four factors in detail. It found that first factor, the nature of the work, favored fair use because Google took only the declaring code it needed to implement the API, not the entire Java implementation. For the second factor, it found that the Android platform was different from Sun’s Java implementation and reiterated the utilitarian goal, in this case creating a new platform that programmers could and did use. For the third factor, like the first, Google took no more than it needed. (They said the absolute amount is not important, citing as a counterexample, a very short story that reads, in full, “When he awoke, the dinosaur was still there,” where using that one sentence would often be too much.)
The analysis of the fourth factor is quite long. Oracle argued that Android had ruined the market for Java on smartphones, but the court was unconvinced how much of that was Android’s fault and how much that Android phones were different from the ones that run Java. It also called out “the harm to the public” of forcing programmers who had invested their time and effort to learn Java to learn something different, noting that wasn’t Oracle’s asset to protect.
So they concluded:
We reach the conclusion that in this case, where Google reimplemented a user interface, taking only what was needed to allow users to put their accrued talents to work in a new and transformative program, Google’s copying of the Sun Java API was a fair use of that material as a matter of law.
To put it mildly, this is a wonderful decision. It confirms what we programmers have been assuming for decades, that reimplementing APIs is legal, and it does it in a clear and strong way. The decision was not close, 6 votes to 2. (Justice Thomas wrote an unfortunate dissent, wrongly saying that you can’t separate the API code from the rest of the program and concluding that fair use of software doesn’t exist.)
By finding for Google as a matter of law, that makes it much easier for lower courts to dismiss similar cases in the future without the expense and uncertainty of a jury trial. It removes legal clouds over vast amounts of software we use every day. Linux reimplemented the Unix API, and while the owners of the old Unix code probably wouldn’t have had a case, considering the stakes, who knows?
I have to note that Oracle’s cynicism, in this case, is quite impressive. The entire company started by building a database that implemented IBM’s SQL language, including the exact terms used in IBM’s version, without getting or asking for IBM’s permission. (IBM has a long and farsighted history of not trying to protect its languages, dating back to FORTRAN in the 1950s, correctly believing that compatible software increases the entire market.) More recently, as noted elsewhere, Oracle copied the API of Amazon’s S3 cloud storage, again including the exact commands and keywords that Amazon used.
Sponsored byRadix
Sponsored byVerisign
Sponsored byIPv4.Global
Sponsored byVerisign
Sponsored byDNIB.com
Sponsored byWhoisXML API
Sponsored byCSC