29
Oracle v. Google Deciphering the district court’s decision of no copyright protection for computer APIs American Intellectual Property Law Association 2013 Annual Meeting Marc A. Hubbard Hubbard Law PLLC [email protected]

Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Embed Size (px)

DESCRIPTION

An explanation of the district court's holding in Oracle v. Google that the Google's implementation in Android of a portion of the Java API specification did not infringe the copyright in Sun's/Oracle's implementation because the API was not copyrightable

Citation preview

Page 1: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Oracle v. Google

Deciphering the district court’s decision of no copyright protection for computer APIs

American Intellectual Property Law Association2013 Annual Meeting

Marc A. HubbardHubbard Law [email protected]

Page 2: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

2

Agenda

•Java

•Android

•District court’s reasoning

Page 3: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

What is Java?

An object-oriented programming language

•Write source code in Java and compile into a platform independent object code called “bytecode”

A software platform enabling “write once, run anywhere”•A “virtual machine” (one for each OS/hardware platform) (“JVM”)

•Interprets (executes) programs written in Java, thus providing the abstraction layer necessary to achieve platform independence for applications

•An extensible application programming interface (API)

•Comprised of multiple libraries, referred to as “packages,” of previously written software (classes and interfaces) that provide “core” functions that can be called by applications in written Java and running on a Java virtual machine

3

Page 4: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

4

Java platform

Page 5: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

5

Java object oriented programming

METHOD — a function that can be called by another part of the program or by, for example, another application program is referred to as a “method”

•A method must be a member of a class

CLASS — a blueprint for an “object” that will be created upon execution of the program

•Each object has a “state” = data stored in fields in memory

•Each object exhibits behavior = methods

PACKAGE — related classes organized into namespaces called “packages”

Page 6: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

6

Java class file example

Page 7: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Java API

A library of prewritten programs that perform common tasks or functions likely to be used application developers.

The API’s specification defines how the services of library are called by another program: names, types of inputs, output returned, exceptions, etc.

Very helpful to application programmers

7

Page 8: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

8

Java API classes

int a = java.lang.Math.max (2, 3);

Simplified example of package, class, method within API

Part of body of method in class file of an application calling method

Calling method “max” with arguments “2” and “3”

Page 9: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

9

Oracle’s Java API

In 1996, API had 8 packages

Sun and the Java Community Process developed standard specifications for Java classes and methods

By 2008, API had 166 packages, containing over 600 classes with over 6000 methods

Copyright in API implementation registered as a single work

Page 10: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

10

Android

A complete software stack for mobile devices that is open source and without license fees

•Application programs are written using Java language

•Virtual machine (called “Dalvick”) interprets Java bytecode (.class or .jar file) that has been modified (into a “.dex” file)

•A library written in Java implements 37 of Java’s 166 packages

Page 11: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

11

Android System Architecture

Google’s version of the

Java virtual machine

API of core packages

Blue = written in Java

Page 12: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

12

Replicated elements

Replicated elements freely* chosen by Google —

•Names — names of packages, classes, methods, and arguments generally identical

•Structure or arrangement of methods into classes, and classes into packages

•Functions implemented — including inputs and outputs

*3 packages arguably essential to use of Java language. Other names and organization chosen for convenience of programmers?

Page 13: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

13

Replicated elements

Replicated elements prescribed by Java language —

•Form of declaration statements for packages, classes and methods, and of calls to methods

•“Throw” statements (for generating exceptions)

•Standard terms (e.g. “public,” “private,” “static”)

•Types of values (e.g. “int”, “boolean,” “char,” and “string”)

Page 14: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

14

Dissimilarities

The body of the methods — the “implementation”

•Lines of program instructions that implement actual functionality of the method

Net result:

•3% of the lines in the 37 packages of the Android API are identical to Java API

•97% of the lines are dissimilar

Page 15: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Time line of events preceding lawsuit

1996 — Java released by Sun Microsystems

2005 — Google acquires Android; begins negotiations with Sun to license Java

2007 — Google releases Andriod

2010 (early) — Oracle acquires Sun

2010 (late) — Oracle sues Google in N.D. Calf. (Alsup, J.) for patent and copyright infringement15

Page 16: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

16

Oracle’s position

Allowing copying of specification for the Java API leads allow for “fragmentation” / Balkanization of platforms

API specification protectable under SSO theory (Whelan and Johnson Controls) and as a taxonomy (American Dental Association)

•Structure of packages/classes/methods were creative and expressive

•Organization of methods into classes and packages like a taxonomy

Page 17: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

17

Google’s position

Programmed its own implementation of an API and VM

Any copying was privileged fair use or de minimus

Copied elements of Java API constitute an unprotectable method of operation

Page 18: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

18

Jury trial

(1) Phase 1: copyright infringement

Copyrightability assumed.

Jury finds that Android API infringed copyright in Java API and rejects defenses of de minimus copying and fair use

(2) Phase 2: no patent infringement

Judge Alsup rules on protectability of replicated elements after trial

Page 19: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Main issue in May 31, 2012 order

“While Google took care to provide fresh line-by-line implementations (the 97 percent), it generally replicated the overall name organization and functionality of 37 packages in the Java API (the 3 percent). The main issue addressed herein is whether this violated the Copyright Act and more fundamentally whether the replicated elements were copyrightable in the first place.”

— Judge Alsup19

Page 20: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

20

Court’s distillation of legal principles

Idea/Expression dichotomy

•No idea, procedure, process, system, method of operation, concept regardless of the form cannot be protected — cites17 U.S.C. §102(b); Baker v. Seldon.

Merger doctrine

•When there is only one or just a few ways to express something, no one can claim ownership of such expression by copyright.

Names and short phrases doctrine

•Names and short phrases are not copyrightable in 9th Circuit — cites 37 C.F.R. 202.1(a); Sega v. Accolade (9th Cir. 1992)

No “sweat of the brow”

•Court should not yield to temptation to find copyrightability merely to reward an investment in a body of intellectual property — cites Feist Publications, Inc. (1991).

Page 21: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

21

Court criticizes structure, sequence, organization (SSO) theory

Now disfavored in 9th and other circuits. See Sega v. Accolade, Inc. (9th Cir. 1992)

Fails to recognize the danger of conferring monopoly by copyright on what Congress had expressly warned should only be granted by patent. Cites Sega

Effectively an assertion of exclusive rights to functional system or method of operation belonging in the realm of patents

Whelan and Johnson Controls took “too narrow a view of the ‘idea’”

Page 22: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

22

Court chooses abstraction, filtration and comparison analysis

Developed in Computer Associates v. Altai (2d Cir 1992); followed by Apple v. Microsoft (9th Cir. 1994)

Abstraction: dissect program according to its varying levels of generality to provide a framework

Filtration: examine each level of generality or abstraction in order to filter out those elements of the program which are unprotectable.

Comparison: compare remaining protectable elements with the allegedly infringing work to determine whether the defendants have misappropriated substantial elements of the plaintiff’s work.

Page 23: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

23

Unprotectable elements that are filtered

Structure based on “practical considerations”

Structures dictated by external factors

•“Standard techniques”

•Extrinsic considerations such a computer hardware, compatibility requirements with other programs, demands of industry being serviced, widely accepted programming practices, hardware standards, software standards, mechanical specifications

Structures already found in public domain

Page 24: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

24

Court’s responses to Oracle’s arguments

Copied elements are an arrangement of packages, classes, names that are a taxonomy, and taxonomies can be protected

•Court: yes, but if the use of the same taxonomy or command structure if necessary to achieve interoperability, it has to be a method of operation

Sequence, structure and organization of a program are protectable in 9th Circuit (Whelan, 1986; Johnson Controls, 1989)

•Court: yes, but not when they constitute a method of operation

Page 25: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

25

Holding 1

Specification for each method is an idea, and anyone may use its own code to implement method specification, including inputs, outputs, etc.

•Names of individual methods, classes and packages not protectable under the short names doctrine

•The declarations of the methods and classes, save for the argument names, are dictated by syntax of Java and therefor must be identical (except choices of argument names). There is only one way to write them.

•The names and declarations account most of the 3% of similar code

Page 26: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

Holding 1

“The method specification was the idea. The method implementation is the expression. No one may monopolize the idea.”

“In sum, Google and the public were and remain free to write their own implementations to carry out exactly the same functions of all methods in question, using exactly the same method specifications and names.”

26

Page 27: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

27

Holding 2

Overall system of organization of methods not protectable

•Arrangement of methods into classes, and classes into packages involved creativity and resembles a taxonomy, but it is nevertheless a command structure or system or method of operation

•Google replicated what was necessary, but not more than necessary, to achieve interoperability

•Oracle’s fears of fragmentation and imperfect interoperability arising from incomplete implementation of API tends to confirm that it is a method of operation

Page 28: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

28

Concluding thoughts

Court was concerned with the extrinsic effects of copyright law protecting elements of software necessary to allow for interoperability

•Preventing two works (software programs) from interacting was tantamount to an exclusive right on method of operation

Specifications for an API, file format, etc. generally exist to achieve interoperability between work and other works.

•All API specifications not protectable?

Page 29: Oracle v. Google: Deciphering the district court’s decision of no copyright protection for computer APIs AIPLA 2013

29

Contact Information

Marc A. HubbardHubbard Law PLLC4848 Greenville Ave, Suite 1490Dallas, Texas 75206(214) 396-6001 direct

[email protected] © 2013 Marc A. Hubbard