Google LLC v. Oracle America, Inc., 593 U.S. 1 (2021), is a landmark decision of the Supreme Court of the United States related to the nature of computer code and copyright law. The dispute centered on the use of parts of the Java programming language's application programming interfaces (APIs) in Google's Android operating system and unlicenced use of source code that implemented some of these APIs in early versions of Android. Google contested both claims on grounds of fair use.
Oracle initiated the suit arguing that the APIs were copyrightable, seeking US$8.8 billion in damages from Google's sales and licensing of the earlier infringing versions of Android. While two District Court-level jury trials found in favor of Google, the Federal Circuit court reversed both decisions, holding that APIs are copyrightable in 2014 and that Google's use does not fall under fair use in 2018. Google successfully petitioned to the Supreme Court to hear the case in the 2019 term, focusing on the copyrightability of APIs and subsequent fair use; the case was delayed to the 2020 term due to the COVID-19 pandemic. In April 2021, the Supreme Court ruled in a 6–2 decision that Google's use of the Java APIs served an organizing function and fell within the four factors of fair use, bypassing the question on the copyrightability of the APIs. The decision reversed the Federal Circuit ruling and remanded the case for further review.
The case has been of significant interest within the tech and software industries, as numerous computer programs and software libraries, particularly in open source, are developed by recreating the functionality of APIs from commercial or competing products to aid developers in interoperability between different systems or platforms.
Background
Java development
Java was originally developed at Sun Microsystems starting in December 1990. It included a new programming language, a virtual machine, and a set of libraries for use with the language. These libraries are documented for programmers via application programming interfaces (APIs), which tell programmers what information to provide to library functions and what results to expect back, eliminating any need for the programmer to know how the library they are using does what it does. These libraries together provide the "Java virtual machine" which programmers write programs to use (run upon). The common way in which a common set of libraries are used across all "Java virtual machines" allows for interoperability, or as marketed by Sun, "Write once, run anywhere"; a programmer need only create one version of their software which, because of the single group of APIs common to all Java virtual machines, can thus be run on any computing platform that supports Java.
The Java language was released to the public in 1995, under the Sun Community Source License, making the source code freely available but requiring that products using the code were maintained to the Java standard, and that any commercial derivative works were licensed by Sun. While anyone could program in the language itself, Sun maintained the Java Platform, Standard Edition (Java SE) and Mobile Edition (Java ME) libraries, provided to users as pre-compiled Java bytecode, and their respective APIs, as well as the Technology Compatibility Kits (TCKs) that tested an implementation against the Java standard. Over 2006 and 2007, due to pressure from developers, Sun changed the license of the various Java packages to use the GNU General Public License with a "classpath exception", allowing developers the access necessary to make derivative works and the ability to release applications under a different license. This led to the OpenJDK (Open Java Development Kit), first released in 2007. Sun retained strong control over the language and standards itself, licensing the necessary elements like TCKs for commercial users. At this time, Sun's business model changed to focusing on licensing of the Java platform to embedded devices, particularly mobile phones, and had already made licensing deals with Nokia, Motorola, and Research In Motion.
Android development
Android, Inc. was founded in 2003 by Andy Rubin, Rich Miner, Nick Sears, and Chris White to develop a mobile phone platform. Google purchased Android in 2005 and continued developing the Android operating system. During the development of Android, Google wanted to incorporate the Java SE libraries. Google's executive chairman Eric Schmidt had approached Sun's president Jonathan I. Schwartz about licensing the Java libraries for use in Android. Sun offered a licensing deal of between US$30 and 50 million. Schmidt said Google would have paid for that license, but they were concerned that Sun had also requested some shared control of Android along with the fee. Google states that they wanted more control in order to open source the language and allow third parties to take better advantage of its code; Oracle states that Sun refused because Google's intention was essentially to fork Java to a Google version of the language, and to prevent it being inter-operable with other versions, an idea which was "anathema" to the "write once run anywhere" basis of the language. Because of these differences of view, the negotiations failed to reach a deal and Sun refused Google a license for Java.
At this point in time, the OpenJDK implementation offered by Sun was not as mature or complete as the Java Standard Edition. Instead of licensing Java, Google chose to develop a cleanroom version of the Java Standard Edition libraries, developing the libraries from a completely fresh start without any access to Sun's code. This became the engine behind Android's Dalvik virtual machine, a core part of the new system. Part of the virtual machine included 37 API calls and around 11,500 lines of code deemed central to Java, which were taken from Apache Harmony, an open-source cleanroom Java implementation developed by the Apache Software Foundation (ASF). Prior to this, the ASF had tried to obtain necessary licenses from Sun to support the Apache Harmony project as to call it an official Java implementation, but could not, in part due to incompatible licensing with Java's GNU General Public License and ASF's Apache License, nor could it gain access to the Java TCKs to validate the Harmony project against Sun's implementation. Though Google stated they used this code to ensure interoperability with the Java Standard Edition for other programmers, during the second appeal hearing, Google stated that it had used this code for commercial reasons to rapidly complete Android and to avoid the "drudgery" of recreating the code. ASF ceased maintaining Apache Harmony in 2011, leading Google to take over maintenance of these libraries.
Google released a beta of the Android platform on November 5, 2007 then, one week later, the software development kit (SDK) which they noted included some Java technologies. Sun's president Schwartz congratulated Google the same day, saying they had "strapped another set of rockets to the community's momentum – and to the vision defining opportunity across our (and other) planets." During the trial, Schwartz said that at that time of Android's release, despite knowing Google may have bypassed their licensing requirements, "We decided to grit our teeth and support it so anyone supporting it would see us as part of the value chain".
Oracle announced it would purchase Sun in April 2009 for US$7.4 billion, and completed the acquisition in January 2010. Besides allowing them to enter the hardware business, Oracle's CEO Larry Ellison called the Java language "the single most important software asset we have ever acquired". Oracle continued to develop Java and pursue licensing opportunities following its acquisition of Sun.
By the release of Android Lollipop (v5.0) in 2014, Google removed the Dalvik virtual machine and replaced it with the Android Runtime, which had been built within Google without any of the Java source code.
However, Android continued to use the JavaSE APIs through the extent of the case's litigation up until Android Nougat when it was fully replaced by OpenJDK.
First phase: API copyrightability and patents
The first phase of the case lasted from 2010 to 2015. Oracle successfully established that APIs are copyrightable, but their claims of patent infringement were rejected.
First District Court trial
On August 13, 2010, Oracle sued Google for copyright and patent infringement in the District Court for the Northern District of California. Oracle asserted Google was aware that they had developed Android without a Java license and copied its APIs, and that Google therefore infringed Oracle's copyright. Oracle also cited seven Oracle-owned prior patents related to the Java technology created by Sun that Google should have been aware of as they had hired former Sun developers that worked on Java. Oracle sought both monetary damages and an injunction to stop Google from using the allegedly infringing materials.
The case was assigned to Judge William Alsup, who split the case into three phases: copyright, patent, and damages.
The copyright phase started on April 16, 2012, and consisted of several distinct claims of infringement: a nine-line rangeCheck function, several test files, the structure, sequence and organization (SSO) of the Java (API), and the API documentation.
Oracle alleged infringement of 37 separate Java APIs which had derived from the Apache Harmony project. After two weeks of testimony, the jury found on May 7, 2012, that Google had infringed on the copyright related to the code, SSO, and documentation of the APIs as well as the rangeCheck function, but were deadlocked on whether these uses fell within fair use. The jury also found that Google had sufficient reason to believe based on Sun's and Oracle's conduct that they did not need to license Java from Sun or Oracle, but did not rely on this when developing Android. Oracle requested a judgement as a matter of law (JMOL) that the case dismiss any fair use defense since the jury was split, as well as to overturn the jury's decision on eight security-related files that they had reviewed and found non-infringing but which Google had stated they copied verbatim; Alsup concurred. Google asked for a similar JMOL related to rangeCheck, but Alsup denied this request.
The patent phase began on May 7, 2012, with the same jury. By the time of trial, Oracle's patent case comprised claims from two patents, 6,061,520 (Method and system for performing static initialization), (the '520 patent) and RE38104 (Method and apparatus for resolving data references in generated code). (the '104 patent). Google pursued a non-infringement defense. For the '520 patent, they argued that they were using parsing for optimizing static initialization, rather than "simulating execution" as the claim required. For the '104 patent, they argued that the instruction did not include a symbolic reference. On May 23, 2012, the jury found non-infringement on all patent claims.
Judge Alsup issued the final verdict for both these phases on May 31, 2012. While the jury had found for Oracle regarding copyright infringement of the APIs, Alsup determined that the APIs were not copyrightable in the first place:
So long as the specific code used to implement a method is different, anyone is free under the Copyright Act to write his or her own code to carry out exactly the same function or specification of any methods used in the Java API. It does not matter that the declaration or method header lines are identical.
Alsup had a background in programming and was therefore personally knowledgeable regarding the nuance of code. Alsup did agree with the jury that the rangeCheck function and eight security files were a copyright infringement, but the only relief available was statutory damages up to a maximum of US$150,000
As a result of these rulings and a stipulation, there was no jury damages phase. The parties agreed to zero dollars in statutory damages for the small amount of copied code by June 2012.
First appellate ruling
Shortly following the conclusion of the District Court case, both parties attempted to file additional JMOLs on elements of the ruling which Alsup dismissed, leading to Oracle appealing the decision and Google filing a cross-appeal on the literal copying claim. Because the case involved claims related to patents, the appeal was automatically assigned to the United States Court of Appeals for the Federal Circuit. The hearing was held on December 4, 2013, and the judgment was released on May 9, 2014.