Google LLC v. Oracle America, Inc.

141 S.Ct. 1183 (2021)

Facts

Sun Microsystems, Inc. (Sun) developed the Java 'platform' for computer programming and released it in 1996. Java ran on a virtual machine. This was important as it enabled software developers to write programs that were able to run on different types of computer hardware without having to rewrite them for each different type. The Java programming language itself-which includes words, symbols, and other units, together with syntax rules for using them to create instructions-is the language in which a Java programmer writes source code, the version of a program that is 'in a human-readable language.' Instructions must be converted (or compiled) into binary machine code (object code) consisting of 0s and 1s understandable by the particular computing device. In the Java system, 'source code is first converted into 'bytecode,' an intermediate form before it is then converted into binary machine code by the Java virtual machine' that has been designed for that device. The Java platform includes the 'Java development kit (JDK), javac compiler, tools and utilities, runtime programs, class libraries (API packages), and the Java virtual machine.' Sun wrote a number of ready-to-use Java programs to perform common computer functions and organized those programs into groups called 'packages.' These packages, which are the application programming interfaces at issue in this appeal, allow programmers to use the prewritten code to build certain functions into their own programs, rather than write their own code to perform those functions from scratch. Sun called the code for a specific operation (function) a 'method.' It defined 'classes' so that each class consists of specified methods plus variables and other elements on which the methods operate. To organize the classes for users, then, it grouped classes (along with certain related 'interfaces') into 'packages.' 'Each package is broken into classes and those in turn [are] broken into methods.' P's collection of API packages is like a library, each package is like a bookshelf in the library, each class is like a book on the shelf, and each method is like a how-to chapter in a book. The original Java Standard Edition included 'eight packages of pre-written programs.' Three of those packages-java.lang, java.io, and java.util-were 'core' packages, meaning that programmers using the Java language had to use them 'in order to make any worthwhile use of the language.' By 2008, the Java platform had more than 6,000 methods making up more than 600 classes grouped into 166 API packages. There are 37 Java API packages at issue in this appeal, three of which are the core packages identified by the district court. These packages contain thousands of individual elements, including classes, subclasses, methods, and interfaces. Every package consists of two types of source code-(1) declaring code; and (2) implementing code. Declaring code is the expression that identifies the prewritten function and is sometimes referred to as the 'declaration' or 'header.' The expressions used by the programmer from the declaring code command the computer to execute the associated implementing code, which gives the computer step-by-step instructions for carrying out the declared function. P owns the copyright on Java SE and the API packages, it offers three different licenses to those who want to make use of them. The first is the General Public License, which is free of charge and provides that the licensee can use the packages-both the declaring and implementing code-but must 'contribute back' its innovations to the public. This arrangement is referred to as an 'open source' license. The second option is the Specification License, which provides that the licensee can use the declaring code and organization of P's API packages but must write its own implementing code. The third option is the Commercial License, which is for businesses that 'want to use and customize the full Java code in their commercial products and keep their code secret.' P owns the copyright on Java SE and the API packages, it offers three different licenses to those who want to make use of them. The first is the General Public License, which is free of charge and provides that the licensee can use the packages-both the declaring and implementing code-but must 'contribute back' its innovations to the public. This arrangement is referred to as an 'open source' license. The second option is the Specification License, which provides that the licensee can use the declaring code and organization of P's API packages but must write its own implementing code. The third option is the Commercial License, which is for businesses that 'want to use and customize the full Java code in their commercial products and keep their code secret.' D acquired Android, Inc. in 2005 as part of a plan to develop a smartphone platform. D and Sun began discussing the possibility of D 'taking a license to use and to adapt the entire Java platform for mobile devices.' The parties were unable to reach an agreement. D refused to make the implementation of its programs compatible with the Java virtual machine or interoperable with other Java programs. P refused to grant D a license to use the Java API packages. D decided to use the Java programming language to design its own virtual machine-the Dalvik virtual machine. D developed the Android platform, which grew to include 168 API packages-37 of which correspond to the Java API packages at issue. D copied the declaring source code from the 37 Java API packages verbatim, inserting that code into parts of its Android software. It thus copied all the names of methods, classes, interfaces, and packages-the 'overall system of organized names-covering 37 packages, with over six hundred classes, with over six thousand methods.' D wrote its own implementing code, except with respect to: (1) the rangeCheck function, which consisted of nine lines of code; and (2) eight decompiled security files. D provides the Android platform free of charge to smartphone manufacturers and receives revenue when customers use particular functions on the Android phone. It is undisputed that Android is not generally Java compatible. The jury returned a verdict finding that D infringed P's copyright in the 37 Java API packages and in the nine lines of rangeCheck code, but returned a noninfringement verdict as to eight decompiled security files. The jury hung on D's fair use defense. The district court issued the primary decision that the replicated elements of the Java API packages-including the declarations and their structure, sequence, and organization (SSO)-were not copyrightable. As to the declaring code, the court concluded that 'there is only one way to write' it, and thus the 'merger doctrine bars anyone from claiming exclusive copyright ownership of that expression.' It held that the declaring code was not protectable because 'names and short phrases cannot be copyrighted.' The court determined that 'there can be no copyright violation in using the identical declarations.' The acknowledged that the overall structure of P's API packages is creative, original, and 'resembles a taxonomy,' the district court found that 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'-that is not entitled to copyright protection under Section 102(b) of the Copyright Act. It held that of the 37 Java API packages at issue, '97 percent of the Android lines were new from D and the remaining three percent were freely replicable under the merger and names doctrines.' The court dismissed P's copyright claims. Both parties appealed. The Federal Circuit said, the question of whether the facts of the case constitute a “fair use” is a question of law. Deciding that question of law, the court held that D’s use of the Sun Java API was not a fair use. It wrote that “There is nothing fair about taking a copyrighted work verbatim and using it for the same purpose and function as the original in a competing platform.” D appealed.