[Copyrighted Material Omitted]
[Copyrighted Material Omitted]
[Copyrighted Material Omitted]
[Copyrighted Material Omitted]
[Copyrighted Material Omitted]
[Copyrighted Material Omitted]
Appeals from the United States District Court for the Northern District of California in No. 10-CV-3561, Judge William H. Alsup.
E. JOSHUA ROSENKRANZ, Orrick, Herrington & Sutcliffe LLP, of New York, New York, argued for plaintiff-appellant. With him on the brief were MARK S. DAVIES, ANDREW D. SILVERMAN, KELLY M. DALEY; and ANNETTE L. HURST, GABRIEL M. RAMSEY, and ELIZABETH C. MCBRIDE, of San Francisco, California. Of counsel on the brief were DORIAN E. DALEY, DEBORAH K. MILLER, MATTHEW SARBORARIA, and ANDREW C. TEMKIN, Oracle America, Inc., of Redwood Shores, California; and DALE M. CENDALI, DIANA M. TORRES, SEAN B. FERNANDES, and JOSHUA L. SIMMONS, Kirkland & Ellis LLP, of New York, New York. Of counsel were SUSAN M. DAVIES, Kirkland & Ellis LLP, of New York, New York; MICHAEL A. JACOBS, Morrison & Foerster LLP, of San Francisco, California; and KENNETH A. KUWAYTI, of Palo Alto, California.
ROBERT A. VAN NEST, Keker & Van Nest LLP, of San Francisco, California, argued for defendant-cross-appellant. With him on the brief were CHRISTA M. ANDERSON, STEVEN A. HIRSCH, MICHAEL S. KWUN, and DANIEL E. JACKSON. Of counsel on the brief were IAN C. BALLON and HEATHER MEEKER, Greenberg Traurig, LLP, of East Palo Alto, California; RENNY HWANG, Google Inc., of Mountain View, California; and DARYL L. JOSEFFER and BRUCE W. BABER, King & Spalding LLP, of Washington, DC.
MARCIA B. PAUL, Davis Wright Tremaine LLP, of New York, New York, for amicus curiae Ralph Oman. With her on the brief were LACY H. KOONCE, III and DEBORAH A. ADLER.
WILLIAM A. RUDY, Lathrop & Gage LLP, of Kansas City, Missouri, for amici curiae Picture Archive Council of America, Inc., et al. With him on the brief were CAROLE E. HANDLER and BRIANNA E. DAHLBERG, of Los Angeles, California.
GREGORY G. GARRE, Latham & Watkins, LLP, of Washington, DC, for amici curiae Microsoft Corporation, et al. With him on the brief was LORI ALVINO MCGILL. Of counsel on the brief were PAUL T. DACIER, KRISHNENDU GUPTA, EMC Corporation, of Hopkinton, Massachusetts; and DOUGLAS LUFTMAN, NETAPP, Inc., of Sunnyvale, California.
JARED BOBROW, Weil, Gotshal & Manges LLP, of Redwood Shores, California, for amici curiae Eugene H. Spafford, Ph.D., et al. With him on the brief was AARON Y. HUANG.
MATTHEW S. HELLMAN, Jenner & Block LLP, of Washington, DC, for amicus curiae BSA/The Software Alliance. With him on the brief was PAUL M. SMITH.
STEVEN T. COTTREAU, Clifford Chance U.S. LLP, of Washington, DC, for amici curiae, Scott McNealy, et al.
MEREDITH JACOB, Program on Information Justice and Intellectual Property, American University, Washington College of Law, of Washington, DC, for amici curiae Intellectual Property Law Professors.
JULIE P. SAMUELS, Electronic Frontier Foundation, of San Francisco, California, for amici curiae Computer Scientists. With her on the brief was MICHAEL BARCLAY. Of counsel on the brief was JASON M. SCHULTZ, NYU Technology Law and Policy Clinic, NYU School of Law, of New York, New York.
JONATHAN BAND, Jonathan Band PLLC, of Washington, DC, filed a brief for amicus curiae Computer & Communications Industry Association. With him on the brief was MATTHEW SCHRUERS, Computer & Communications Industry Association, of Washington, DC.
CHAD RUBACK, The Ruback Law Firm, of Dallas, Texas, filed a brief for amici curiae Rackspace US, Inc., et al.
JENNIFER M. URBAN, Samuelson Law, Technology and Public Policy Clinic, U.C. Berkeley School of Law, of Berkeley, California for amici curiae Software Innovators, et al.
Before O'MALLEY, PLAGER, and TARANTO, Circuit Judges.
O'Malley, Circuit Judge.
This copyright dispute involves 37 packages of computer source code. The parties have often referred to these groups of computer programs, individually or collectively, as " application programming interfaces," or API packages, but it is their content, not their name, that matters. The predecessor of Oracle America, Inc. (" Oracle" ) wrote these and other API packages in the Java programming language, and Oracle licenses them on various terms for others to use. Many software developers use the Java language, as well as Oracle's API packages, to write applications (commonly referred to as " apps" ) for desktop and laptop computers, tablets, smartphones, and other devices.
Oracle filed suit against Google Inc. (" Google" ) in the United States District Court for the Northern District of California, alleging that Google's Android mobile operating system infringed Oracle's patents and copyrights. The jury found no patent infringement, and the patent claims are not at issue in this appeal. As to the copyright claims, the parties agreed that the jury would decide infringement, fair use, and whether any copying was de minimis, while the district judge would decide copyrightability and Google's equitable defenses. The jury found that Google infringed Oracle's copyrights in the 37 Java packages and a specific computer routine called " rangeCheck," but returned a noninfringement verdict as to eight decompiled security files. The jury deadlocked on Google's fair use defense.
After the jury verdict, the district court denied Oracle's motion for judgment as a matter of law (" JMOL" ) regarding fair use as well as Google's motion for JMOL with respect to the rangeCheck files. Order on Motions for Judgment as a Matter of Law, Oracle Am., Inc. v. Google Inc., No. 3:10-cv-3561 (N.D. Cal. May 10, 2012), ECF No. 1119. Oracle also moved for JMOL of infringement with respect to the eight decompiled security files. In granting that motion, the court found that: (1) Google admitted to copying the eight files; and (2) no reasonable jury could find that the copying was de minimis. Oracle Am., Inc. v. Google Inc., No. C 10-3561,
(N.D. Cal. May 11, 2012) (" Order Granting JMOL on Decompiled Files " ).
Shortly thereafter, the district court issued its decision on copyrightability, finding that the replicated elements of the 37 API packages--including the declaring code and the structure, sequence, and organization--were not subject to copyright protection. Oracle Am., Inc. v. Google Inc., 872 F.Supp.2d 974 (N.D. Cal. 2012) (" Copyrightability Decision " ). Accordingly, the district court entered final judgment in favor of Google on Oracle's copyright infringement claims, except with respect to the rangeCheck code and the eight decompiled files. Final Judgment, Oracle Am., Inc. v. Google Inc., No. 3:10-cv-3561 (N.D. Cal. June 20, 2012), ECF No. 1211. Oracle appeals from the portion of the final judgment entered against it, and Google cross-appeals from the portion of that same judgment entered in favor of Oracle as to the rangeCheck code and eight decompiled files.
Because we conclude that the declaring code and the structure, sequence, and organization of the API packages are entitled to copyright protection, we reverse the district court's copyrightability determination with instructions to reinstate the jury's infringement finding as to the 37 Java packages. Because the jury deadlocked on fair use, we remand for further consideration of Google's fair use defense in light of this decision. With respect to Google's cross-appeal, we affirm the district court's decisions: (1) granting Oracle's motion for JMOL as to the eight decompiled Java files that Google copied into Android; and (2) denying Google's motion for JMOL with respect to the rangeCheck function. Accordingly, we affirm-in-part, reverse-in-part, and remand for further proceedings.
A. The Technology
Sun Microsystems, Inc. (" Sun" ) developed the Java " platform" for computer programming and released it in 1996. The aim was to relieve programmers from the burden of writing different versions of their computer programs for different operating systems or devices. " The Java platform, through the use of a virtual machine, enable[d] software developers to write programs that [we]re able to run on different types of computer hardware without having to rewrite them for each different type." Copyrightability Decision, 872 F.Supp.2d at 977. With Java, a software programmer could " write once, run anywhere."
The Java virtual machine (" JVM" ) plays a central role in the overall Java platform. 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." Id. For the instructions to be executed, they 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. Id. 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." Id. at 977 n.2.
Sun wrote a number of ready-to-use Java programs to perform common computer
functions and organized those programs into groups it 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. They are shortcuts. 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." See id. at 982 (describing organization: " [e]ach package [i]s broken into classes and those in turn [are] broken into methods" ). The parties have not disputed the district court's analogy: Oracle'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. Id. at 977.
The original Java Standard Edition Platform (" Java SE" ) included " eight packages of pre-written programs." Id. at 982. The district court found, and Oracle concedes to some extent, that 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." Id. 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--what the parties call (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." As the district court explained, the " main point is that this header line of code introduces the method body and specifies very precisely the inputs, name and other functionality." Id. at 979-80. The expressions used by the programmer from the declaring code command the computer to execute the associated implementing code, which gives the computer the step-by-step instructions for carrying out the declared function.
To use the district court's example, one of the Java API packages at issue is " java.lang." Within that package is a class called " math," and within " math" there are several methods, including one that is designed to find the larger of two numbers: " max." The declaration for the " max" method, as defined for integers, is: " public static int max(int x, int y)," where the word " public" means that the method is generally accessible, " static" means that no specific instance of the class is needed to call the method, the first " int" indicates that the method returns an integer, and " int x" and " int y" are the two numbers (inputs) being compared. Copyrightability Decision,
872 F.Supp.2d at 980-82. A programmer calls the " max" method by typing the name of the method stated in the declaring code and providing unique inputs for the variables " x" and " y." The expressions used command the computer to execute the implementing code that carries out the operation of returning the larger number.
Although Oracle owns the copyright on Java S.E. 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 Oracle'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." Appellant Br. 14. Oracle offers the Commercial License in exchange for royalties. To maintain Java's " write once, run anywhere" motto, the Specification and Commercial Licenses require that the licensees' programs pass certain tests to ensure compatibility with the Java platform.
The testimony at trial also revealed that Sun was licensing a derivative version of the Java platform for use on mobile devices: the Java Micro Edition (" Java ME" ). Oracle licensed Java ME for use on feature phones and smartphones. Sun/Oracle has never successfully developed its own smartphone platform using Java.
B. Google's Accused Product: Android
The accused product is Android, a software platform that was designed for mobile devices and competes with Java in that market. Google acquired Android, Inc. in 2005 as part of a plan to develop a smartphone platform. Later that same year, Google and Sun began discussing the possibility of Google " taking a license to use and to adapt the entire Java platform for mobile devices." Copyrightability Decision, 872 F.Supp.2d at 978. They also discussed a " possible co-development partnership deal with Sun under which Java technology would become an open-source part of the Android platform, adapted for mobile devices." Id. The parties negotiated for months but were unable to reach an agreement. The point of contention between the parties was Google's refusal to make the implementation of its programs compatible with the Java virtual machine or interoperable with other Java programs. Because Sun/Oracle found that position to be anathema to the " write once, run anywhere" philosophy, it did not grant Google a license to use the Java API packages.
When the parties' negotiations reached an impasse, Google decided to use the Java programming language to design its own virtual machine--the Dalvik virtual machine (" Dalvik VM" )--and " to write its own implementations for the functions in the Java API that were key to mobile devices." Id. Google developed the Android platform, which grew to include 168 API packages--37 of which correspond to the Java API packages at issue in this appeal.
With respect to the 37 packages at issue, " Google believed Java application programmers would want to find the same 37 sets of functionalities in the new Android system callable by the same names as used in Java." Id. To achieve this result, Google copied the declaring source code from the
37 Java API packages verbatim, inserting that code into parts of its Android software. In doing so, Google copied the elaborately organized taxonomy of 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." Copyrightability Decision, 872 F.Supp.2d at 999. The parties and district court referred to this taxonomy of expressions as the " structure, sequence, and organization" or " SSO" of the 37 packages. It is undisputed, however, that Google 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.
As to rangeCheck, the court found that the Sun engineer who wrote it later worked for Google and contributed two files he created containing the rangeCheck function--" Timsort.java" and " ComparableTimsort" --to the Android platform. In doing so, the nine-line rangeCheck function was copied directly into Android. As to the eight decompiled files, the district court found that they were copied and used as test files but " never found their way into Android or any handset." Id. at 983.
Google released the Android platform in 2007, and the first Android phones went on sale the following year. Although it is undisputed that certain Android software contains copies of the 37 API packages' declaring code at issue, neither the district court nor the parties specify in which programs those copies appear. Oracle indicated at oral argument, however, that all Android phones contain copies of the accused portions of the Android software. Oral Argument at 1:35, available at http://www. cafc.uscourts.gov/oral-argument-recordings/2013-1021/all. Android smartphones " rapidly grew in popularity and now comprise a large share of the United States market." Copyrightability Decision, 872 F.Supp.2d at 978. Google provides the Android platform free of charge to smartphone manufacturers and receives revenue when customers use particular functions on the Android phone. Although Android uses the Java programming language, it is undisputed that Android is not generally Java compatible. As Oracle explains, " Google ultimately designed Android to be incompatible with the Java platform, so that apps written for one will not work on the other." Appellant Br. 29.
C. Trial and Post-Trial Rulings
Beginning on April 16, 2012, the district court and the jury--on parallel tracks--viewed documents and heard testimony from twenty-four witnesses on copyrightability, infringement, fair use, and Google's other defenses. Because the parties agreed the district court would decide copyrightability, the court instructed the jury to assume that the structure, sequence, and organization of the 37 API packages was copyrightable. And, the court informed the jury that Google conceded that it copied the declaring code used in the 37 packages verbatim. The court also instructed the jury that Google conceded copying the rangeCheck function and the eight decompiled security files, but that Google maintained that its use of those lines of code was de minimis. See Final Charge to the Jury (Phase One), Oracle Am., Inc. v. Google Inc., 3:10-cv-3561 (N.D. Cal. Apr. 30, 2012), ECF No. 1018 at 14 (" With respect to the infringement issues concerning the rangeCheck and other similar files, Google agrees that the accused lines of code and comments came from the copyrighted material but contends that the amounts involved were so negligible as to be de minimis and thus should be excused." ).
On May 7, 2012, the jury returned a verdict finding that Google infringed Oracle'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 Google's fair use defense.
The parties filed a number of post-trial motions, most of which were ultimately denied. In relevant part, the district court denied Oracle's motion for JMOL regarding fair use and Google's motion for JMOL as to the rangeCheck files. Order on Motions for Judgment as a Matter of Law, Oracle Am., Inc. v. Google Inc., No. 3:10-cv-3561 (N.D. Cal. May 10, 2012), ECF No. 1119. The district court granted Oracle's motion for JMOL of infringement as to the eight decompiled files, however. In its order, the court explained that: (1) Google copied the files in their entirety; (2) the trial testimony revealed that the use of those files was " significant" ; and (3) no reasonable jury could find the copying de minimis. Order Granting JMOL on Decompiled Files, at *6.
On May 31, 2012, the district court issued the primary decision at issue in this appeal, finding that the replicated elements of the Java API packages--including the declarations and their structure, sequence, and organization--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." Copyrightability Decision, 872 F.Supp.2d at 998. The court further found that the declaring code was not protectable because " names and short phrases cannot be copyrighted." Id. As such, the court determined that " there can be no copyright violation in using the identical declarations." Id.
As to the overall structure, sequence, and organization of the Java API packages, the court recognized that " nothing in the rules of the Java language . . . required that Google replicate the same groupings even if Google was free to replicate the same functionality." Id. at 999. Therefore, the court determined that " Oracle's best argument . . . 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." Id.
Although it acknowledged that the overall structure of Oracle'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. Id. at 999-1000. In reaching this conclusion, the court emphasized that, " [o]f the 166 Java packages, 129 were not violated in any way." Id. at 1001. And, of the 37 Java API packages at issue, " 97 percent of the Android lines were new from Google and the remaining three percent were freely replicable under the merger and names doctrines." Id. On these grounds, the court dismissed Oracle's copyright claims, concluding that " the particular elements replicated by Google were free for all to use under the Copyright Act." Id.
On June 20, 2012, the district court entered final judgment in favor of Google and against Oracle on its claim for copyright infringement, except with respect to the rangeCheck function and the eight decompiled files. As to rangeCheck and the decompiled files, the court entered judgment for Oracle and against Google in the amount of zero dollars, per the parties' stipulation. Final Judgment, Oracle Am., Inc. v. Google Inc., No. 3:10-cv-3561
(N.D. Cal. June 20, 2012), ECF No. 1211. Oracle timely appealed from the portion of the district court's final judgment entered against it and Google timely cross-appealed with respect to rangeCheck and the eight decompiled files. Because this action included patent claims, we have jurisdiction pursuant to 28 U.S.C. § 1295(a)(1).