Oracle v. Google – Can you Copyright a Computer Language?

In Oracle America, Inc. v. Google Inc., Case No. C 10-03561 (U.S. Dist. Court, Northern District of California, 2012), Oracle sued Google for copyright infringement for “replicating elements of the structure, sequence and organization of the Java application programing interface.”

Like many lawsuits, this one started after negotiations broke down.  Back in 2005 Google attempted to license the Java operating language from Oracle for the Android platform.  When no deal was reached, Google decided to write its own virtual machine which would run programs written in Java.  When Android was released in 2007 Google’s virtual machine on the Android phone was able to run programs written the Java programing language just like Oracle’s virtual machine.  Even though both Oracle’s and Google’s virtual machines have almost identical functions, the underlying source code of each virtual machine is unique.  In essence, Google wrote or acquired new code which performed the same functionality as Oracle’s code.

Comparing the 37 Java and Android packages side by side, only three percent of the lines of code are the same. The identical lines are those lines that specify the names, parameters and functionality of the methods and classes, lines called “declarations” or “headers.” In particular, the Android platform replicated the same package, method and class names, definitions and parameters of the 37 Java API packages from the Java 2SE 5.0 platform. This three percent is the heart of our main copyright issue.

In sum, Oracle sued Google, not for copying its virtual machine, but for copying the structure, sequence, and organization of the Java programing language itself.

All agree that Google was and remains free to use the Java language itself. All agree that Google’s virtual machine is free of any copyright issues. All agree that the six-thousand-plus method implementations by Google are free of copyright issues.  The copyright issue, rather, is whether Google was and remains free to replicate the names, organization of those names, and functionality of 37 out of 166 packages in the Java API, which has sometimes been referred to in this litigation as the “structure, sequence and organization” of the 37 packages.

The lawsuit was broken into phases and for “the first phase, it was agreed that the judge would decide issues of copyrightability and Google’s equitable defenses and that the jury would decide infringement, fair use, and whether any copying was de minimis.”

The jury found that Google infringed nine lines of code which performed a common “rangeCheck” function.  The jury also found that Google infringed the 37 Java API packages, “but deadlocked on whether the use was protected by fair use.”

The nine lines of code which were identical made its way into Google’s implementation of Java when an ex-employee of Oracle went to work for Google.  Most programmers re-use bits of code when writing new software.  If you have already written a subroutine that checks whether a number is in a certain range, there is no reason to re-invent the wheel with every new program. When contributing to Google’s implementation of Java he used the same range check function he had written at Oracle.  The court found the copying of these nine lines of code where de minimis copying which did not rise to the level of copyright infringement.

Because the actual code of Oracle’s Java virtual machine was not literally copied, Oracle instead accused Google of stealing the “structure, sequence, and organization” of its work.  The District Court disagreed with Oracle that Google committed copyright infringement by copying these elements from Oracle’s Java virtual machine.

As long as the specific code written to implement a method is different, anyone is free under the Copyright Act to write his or her own method to carry out exactly the same function or specification of any and all methods used in the Java API. Contrary to Oracle, copyright law does not confer ownership over any and all ways to implement a function or specification, no matter how creative the copyrighted implementation or specification may be.  The Act confers ownership only over the specific way in which the author wrote out his version. Others are free to write their own implementation to accomplish the identical function, for, importantly, ideas, concepts and functions cannot be monopolized by copyright.

The Court noted that although the design of the methods in an API is a creative endeavor, the result was something purely functional and therefore not protected by copyright law.

 To repeat the Second Circuit’s phrasing, “there might be a myriad of ways in which a programmer may . . . express the idea embodied in a given subroutine.” Computer Associates, 982 F.2d at 708. The method specification is the idea. The method implementation is the expression. No one may monopolize the idea.8

. . .

The declaration requires precision. Significantly, when there is only one way to write something, the merger doctrine bars anyone from claiming exclusive copyright ownership of that expression. Therefore, there can be no copyright violation in using the identical declarations. Nor can there be any copyright violation due to the name given to the method (or to the arguments), for under the law, names and short phrases cannot be copyrighted.

The next issue addressed by the Court was whether Google violated copyright law by grouping and organizing its Java implementations under the same classes and packages that Oracle used in its virtual machine.  Oracle pointed out that methods could be grouped together in many different ways and in many different classes.  While the Court agreed that this was Oracle’s best argument, the Court still found that Google’s copying of the structure did not amount to copyright infringement.

Oracle’s best argument, therefore, is that while no single name is copyrightable, Java’s overall system of organized names — covering 37 packages, with over six hundred classes, with over six thousand methods — is a “taxonomy” and, therefore, copyrightable under American Dental Association v. Delta Dental Plans Association, 126 F.3d 977 (7th Cir. 1997). There was nothing in the rules of the Java language that required that Google replicate the same groupings even if Google was free to replicate the same functionality.10

The main answer to this argument is that while the overall scheme of file name organization resembles a taxonomy, it is also a command structure for a system or method of operation of the application programming interface.

. . .

Section 102(b) states that “in no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation . . . regardless of the form . . . .” That a system or method of operation has thousands of commands arranged in a creative taxonomy does not change its character as a method of operation. Yes, it is creative. Yes, it is original. Yes, it resembles a taxonomy. But it is nevertheless a command structure, a system or method of operation — a long hierarchy of over six thousand commands to carry out pre-assigned functions. For that reason, it cannot receive copyright protection — patent protection perhaps — but not copyright protection.

To emphasize the functionality of the method structure the court also noted that if Google changed the structure of its implementation of Java, then source code written for Oracle’s version of Java would no longer work on Android.

Surely, millions of lines of code had been written in Java before Android arrived. These programs necessarily used the java.package.Class.method() command format. These programs called on all or some of the specific 37 packages at issue and necessarily used the command structure of names at issue. Such code was owned by the developers themselves, not by Oracle. In order for at least some of this code to run on Android, Google was required to provide the same java.package.Class.method() command system using the same names with the same “taxonomy” and with the same functional specifications.

The Court concluded the opinion by emphasizing that this case, like all legal cases is very fact specific and different facts in a future case may lead to a very different result.

This order does not hold that Java API packages are free for all to use without license. It does not hold that the structure, sequence and organization of all computer programs may be stolen. Rather, it holds on the specific facts of this case, the particular elements replicated by Google were free for all to use under the Copyright Act.

This case highlights the differences between patent law and copyright law.  While patent law protects “inventions” and “functionality” copyright law protects artistic expression.  As a general rule, if it is functional it is not protected by copyright.  In some instances such as software piracy copyright law sufficiently protects computer code as the copying is true copying — that is, making an identical copy.  In other instances, however, where a lot of creative effort went into developing something functional, the protection is lacking.