SlideShare a Scribd company logo
1 of 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 
mhubbard@hubbardip.com
Agenda 
2 
•Java 
•Android 
•District court’s reasoning
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
Java platform 
4
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” 
5 
• 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”
Java class file example 
6 
public class Bicycle { 
// the Bicycle class has 
// three fields 
public int cadence; 
public int gear; 
public int speed; 
// the Bicycle class has 
// one constructor 
public Bicycle(int startCadence, int startSpeed, 
int startGear) { 
gear = startGear; 
cadence = startCadence; 
speed = startSpeed; 
} 
// the Bicycle class has 
// four methods 
public void setCadence(int newValue) { 
cadence = newValue; 
} 
public void setGear(int newValue) { 
gear = newValue; 
} 
public void applyBrake(int decrement) { 
speed -= decrement; 
} 
public void speedUp(int increment) { 
speed += increment; 
} 
} 
Declaration of the class and 
start of body of class 
Declaration of data fields and 
their types for the class 
Constructor “ instantiates” an 
object in memory with initial 
values 
Declaration of method 
Body of Method
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
Java API classes 
Simplified example of package, class, method within 
API 
Part of body of method in class file of an application calling 
method 
8 
int a = java.lang.Math.max (2, 3); 
Calling method “max” with 
arguments “2” and “3” 
package java.lang; 
public class Math { 
public static int max (int x, int y) { 
if (x > y) return x ; 
else return y ; 
} 
} 
Declares package “java.lang” 
Declares class “java.lang.math” 
Declares method “java.lang.math.max” 
Body of method
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 
9
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 
10
Android System Architecture 
11 
Blue = written in Java 
API of core 
packages 
Google’s version 
of the Java virtual 
machine
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? 
12
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”) 
13
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 
14
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 infringement 
15
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 
16
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 
17
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 
18
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 Alsup 
19
Court’s distillation of legal principles 
Idea/Expression dichotomy 
• No idea, procedure, process, system, method of operation, concept regardless of the form 
20 
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).
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’” 
21
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. 
22
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 
23
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 
24
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 
25 
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
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
Holding 2 
Overall system of organization of methods not protectable 
•Arrangement of methods into classes, and classes into packages 
27 
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
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? 
28
Contact Information 
Marc A. Hubbard 
Hubbard Law PLLC 
4848 Greenville Ave, Suite 1490 
Dallas, Texas 75206 
(214) 396-6001 direct 
mhubbard@hubbardip.com 
www.hubbardip.com 
© 2013 Marc A. Hubbard 
29

More Related Content

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

Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016
Manuel Fomitescu
 
1 Project 2 Introduction - the SeaPort Project seri.docx
1  Project 2 Introduction - the SeaPort Project seri.docx1  Project 2 Introduction - the SeaPort Project seri.docx
1 Project 2 Introduction - the SeaPort Project seri.docx
honey725342
 

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

Session 02 - Elements of Java Language
Session 02 - Elements of Java LanguageSession 02 - Elements of Java Language
Session 02 - Elements of Java Language
 
API Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIsAPI Copyrights: New Considerations for Building or Using APIs
API Copyrights: New Considerations for Building or Using APIs
 
Elements of Java Language
Elements of Java Language Elements of Java Language
Elements of Java Language
 
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
 
Google v Oracle: The Future of Software and Fair Use
Google v Oracle: The Future of Software and Fair UseGoogle v Oracle: The Future of Software and Fair Use
Google v Oracle: The Future of Software and Fair Use
 
OOP with Java
OOP with JavaOOP with Java
OOP with Java
 
Java Presentation
Java PresentationJava Presentation
Java Presentation
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
Writing Android Libraries
Writing Android LibrariesWriting Android Libraries
Writing Android Libraries
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
1 java programming- introduction
1  java programming- introduction1  java programming- introduction
1 java programming- introduction
 
Null mumbai-Android-Insecure-Data-Storage-Exploitation
Null mumbai-Android-Insecure-Data-Storage-ExploitationNull mumbai-Android-Insecure-Data-Storage-Exploitation
Null mumbai-Android-Insecure-Data-Storage-Exploitation
 
Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016Manuel - SPR - Intro to Java Language_2016
Manuel - SPR - Intro to Java Language_2016
 
Preparing your code for Java 9
Preparing your code for Java 9Preparing your code for Java 9
Preparing your code for Java 9
 
1 Project 2 Introduction - the SeaPort Project seri.docx
1  Project 2 Introduction - the SeaPort Project seri.docx1  Project 2 Introduction - the SeaPort Project seri.docx
1 Project 2 Introduction - the SeaPort Project seri.docx
 
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat DasNull Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
 
Java notes jkuat it
Java notes jkuat itJava notes jkuat it
Java notes jkuat it
 
Java notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esectionJava notes(OOP) jkuat IT esection
Java notes(OOP) jkuat IT esection
 
利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試利用 Appium + Robot Framework 實現跨平台 App 互動測試
利用 Appium + Robot Framework 實現跨平台 App 互動測試
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and Security
 

Recently uploaded

一比一原版牛津布鲁克斯大学毕业证学位证书
一比一原版牛津布鲁克斯大学毕业证学位证书一比一原版牛津布鲁克斯大学毕业证学位证书
一比一原版牛津布鲁克斯大学毕业证学位证书
E LSS
 
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
一比一原版旧金山州立大学毕业证学位证书
 一比一原版旧金山州立大学毕业证学位证书 一比一原版旧金山州立大学毕业证学位证书
一比一原版旧金山州立大学毕业证学位证书
SS A
 
一比一原版西澳大学毕业证学位证书
 一比一原版西澳大学毕业证学位证书 一比一原版西澳大学毕业证学位证书
一比一原版西澳大学毕业证学位证书
SS A
 
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
anilsa9823
 
COPYRIGHTS - PPT 01.12.2023 part- 2.pptx
COPYRIGHTS - PPT 01.12.2023 part- 2.pptxCOPYRIGHTS - PPT 01.12.2023 part- 2.pptx
COPYRIGHTS - PPT 01.12.2023 part- 2.pptx
RRR Chambers
 
Appeal and Revision in Income Tax Act.pdf
Appeal and Revision in Income Tax Act.pdfAppeal and Revision in Income Tax Act.pdf
Appeal and Revision in Income Tax Act.pdf
PoojaGadiya1
 

Recently uploaded (20)

一比一原版牛津布鲁克斯大学毕业证学位证书
一比一原版牛津布鲁克斯大学毕业证学位证书一比一原版牛津布鲁克斯大学毕业证学位证书
一比一原版牛津布鲁克斯大学毕业证学位证书
 
IBC (Insolvency and Bankruptcy Code 2016)-IOD - PPT.pptx
IBC (Insolvency and Bankruptcy Code 2016)-IOD - PPT.pptxIBC (Insolvency and Bankruptcy Code 2016)-IOD - PPT.pptx
IBC (Insolvency and Bankruptcy Code 2016)-IOD - PPT.pptx
 
How do cyber crime lawyers in Mumbai collaborate with law enforcement agencie...
How do cyber crime lawyers in Mumbai collaborate with law enforcement agencie...How do cyber crime lawyers in Mumbai collaborate with law enforcement agencie...
How do cyber crime lawyers in Mumbai collaborate with law enforcement agencie...
 
Relationship Between International Law and Municipal Law MIR.pdf
Relationship Between International Law and Municipal Law MIR.pdfRelationship Between International Law and Municipal Law MIR.pdf
Relationship Between International Law and Municipal Law MIR.pdf
 
8. SECURITY GUARD CREED, CODE OF CONDUCT, COPE.pptx
8. SECURITY GUARD CREED, CODE OF CONDUCT, COPE.pptx8. SECURITY GUARD CREED, CODE OF CONDUCT, COPE.pptx
8. SECURITY GUARD CREED, CODE OF CONDUCT, COPE.pptx
 
589308994-interpretation-of-statutes-notes-law-college.pdf
589308994-interpretation-of-statutes-notes-law-college.pdf589308994-interpretation-of-statutes-notes-law-college.pdf
589308994-interpretation-of-statutes-notes-law-college.pdf
 
CAFC Chronicles: Costly Tales of Claim Construction Fails
CAFC Chronicles: Costly Tales of Claim Construction FailsCAFC Chronicles: Costly Tales of Claim Construction Fails
CAFC Chronicles: Costly Tales of Claim Construction Fails
 
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
Russian Call Girls Rohini Sector 6 💓 Delhi 9999965857 @Sabina Modi VVIP MODEL...
 
WhatsApp 📞 8448380779 ✅Call Girls In Nangli Wazidpur Sector 135 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Nangli Wazidpur Sector 135 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Nangli Wazidpur Sector 135 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Nangli Wazidpur Sector 135 ( Noida)
 
一比一原版旧金山州立大学毕业证学位证书
 一比一原版旧金山州立大学毕业证学位证书 一比一原版旧金山州立大学毕业证学位证书
一比一原版旧金山州立大学毕业证学位证书
 
Essentials of a Valid Transfer.pptxmmmmmm
Essentials of a Valid Transfer.pptxmmmmmmEssentials of a Valid Transfer.pptxmmmmmm
Essentials of a Valid Transfer.pptxmmmmmm
 
Introduction to Corruption, definition, types, impact and conclusion
Introduction to Corruption, definition, types, impact and conclusionIntroduction to Corruption, definition, types, impact and conclusion
Introduction to Corruption, definition, types, impact and conclusion
 
一比一原版西澳大学毕业证学位证书
 一比一原版西澳大学毕业证学位证书 一比一原版西澳大学毕业证学位证书
一比一原版西澳大学毕业证学位证书
 
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Singar Nagar Lucknow best sexual service
 
Human Rights_FilippoLuciani diritti umani.pptx
Human Rights_FilippoLuciani diritti umani.pptxHuman Rights_FilippoLuciani diritti umani.pptx
Human Rights_FilippoLuciani diritti umani.pptx
 
COPYRIGHTS - PPT 01.12.2023 part- 2.pptx
COPYRIGHTS - PPT 01.12.2023 part- 2.pptxCOPYRIGHTS - PPT 01.12.2023 part- 2.pptx
COPYRIGHTS - PPT 01.12.2023 part- 2.pptx
 
Appeal and Revision in Income Tax Act.pdf
Appeal and Revision in Income Tax Act.pdfAppeal and Revision in Income Tax Act.pdf
Appeal and Revision in Income Tax Act.pdf
 
The Active Management Value Ratio: The New Science of Benchmarking Investment...
The Active Management Value Ratio: The New Science of Benchmarking Investment...The Active Management Value Ratio: The New Science of Benchmarking Investment...
The Active Management Value Ratio: The New Science of Benchmarking Investment...
 
PPT- Voluntary Liquidation (Under section 59).pptx
PPT- Voluntary Liquidation (Under section 59).pptxPPT- Voluntary Liquidation (Under section 59).pptx
PPT- Voluntary Liquidation (Under section 59).pptx
 
KEY NOTE- IBC(INSOLVENCY & BANKRUPTCY CODE) DESIGN- PPT.pptx
KEY NOTE- IBC(INSOLVENCY & BANKRUPTCY CODE) DESIGN- PPT.pptxKEY NOTE- IBC(INSOLVENCY & BANKRUPTCY CODE) DESIGN- PPT.pptx
KEY NOTE- IBC(INSOLVENCY & BANKRUPTCY CODE) DESIGN- PPT.pptx
 

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

  • 1. 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 mhubbard@hubbardip.com
  • 2. Agenda 2 •Java •Android •District court’s reasoning
  • 3. 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
  • 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” 5 • 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”
  • 6. Java class file example 6 public class Bicycle { // the Bicycle class has // three fields public int cadence; public int gear; public int speed; // the Bicycle class has // one constructor public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; } // the Bicycle class has // four methods public void setCadence(int newValue) { cadence = newValue; } public void setGear(int newValue) { gear = newValue; } public void applyBrake(int decrement) { speed -= decrement; } public void speedUp(int increment) { speed += increment; } } Declaration of the class and start of body of class Declaration of data fields and their types for the class Constructor “ instantiates” an object in memory with initial values Declaration of method Body of Method
  • 7. 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
  • 8. Java API classes Simplified example of package, class, method within API Part of body of method in class file of an application calling method 8 int a = java.lang.Math.max (2, 3); Calling method “max” with arguments “2” and “3” package java.lang; public class Math { public static int max (int x, int y) { if (x > y) return x ; else return y ; } } Declares package “java.lang” Declares class “java.lang.math” Declares method “java.lang.math.max” Body of method
  • 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 9
  • 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 10
  • 11. Android System Architecture 11 Blue = written in Java API of core packages Google’s version of the Java virtual machine
  • 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? 12
  • 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”) 13
  • 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 14
  • 15. 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 infringement 15
  • 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 16
  • 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 17
  • 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 18
  • 19. 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 Alsup 19
  • 20. Court’s distillation of legal principles Idea/Expression dichotomy • No idea, procedure, process, system, method of operation, concept regardless of the form 20 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).
  • 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’” 21
  • 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. 22
  • 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 23
  • 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 24
  • 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 25 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
  • 26. 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
  • 27. Holding 2 Overall system of organization of methods not protectable •Arrangement of methods into classes, and classes into packages 27 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
  • 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? 28
  • 29. Contact Information Marc A. Hubbard Hubbard Law PLLC 4848 Greenville Ave, Suite 1490 Dallas, Texas 75206 (214) 396-6001 direct mhubbard@hubbardip.com www.hubbardip.com © 2013 Marc A. Hubbard 29

Editor's Notes

  1. An object-oriented programming language Write source code in Java and compile into a platform independent object code called “bytecode” A software platform for “write once, run anywhere” A “virtual machine” (one for each OS/hardware platform) (“JVM”) Interprets (executes) programs written in Java Provides 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
  2. Every Java program must have one class with one method A class may implement more than one method A package is a namespace that organizes which related classes and interfaces
  3. American Dental Association v. Delta Dental Plans Association (7th Cir. 1997)
  4. Baker v. Seldon (1879) Book on new system of double-entry accounting, which included blank form Infringer made use of method of bookkeeping, but used different forms. Section 102 (b) of title 17: In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work. “Words and short phrases such as names, titles, and slogans; familiar symbols or designs; mere variations of typographic ornamentation, lettering or coloring; mere listing of ingredients or contents; Sega Enterprises Ltd. v. Accolade, Inc., 977 F.2d 1510 (9th Cir. 1992), (a competitor’s use of Sega’s initialization code, consisting of merely of 20 bytes of initialization code plus the letters S-E-G-A, was of de minimis length and therefore likely a “word” or “short phrase” that is not protected)
  5. Originally developed in the Computer Assocs. Int’l, Inc. v. Altai, Inc., 982 F.2d 693 (2nd Cir. 1992) as an aid to analyze to distinguish between unprotectable ideas and protectable expression when comparing software programs for substantially similarity.
  6. Court admits that overall system of organized names of Java API is a taxonomy. American Dental Association v. Delta Dental Plans Association (7th Cir. 1997) (Taxonomy protectable) It is also a command structure for a system or method of operation. Calling a taxonomy does not change this fact. ADA court found that codes in dispute where not a system; they were accompanied by instructions. Whelan Associates, Inc. v. Jaslow Dental Laboratory, Inc., 797 F.2d 1222 (3d Cir. 1986) (structure of program for managing a dental office was copyrightable because there were many different ways to structure a program to manage a dental laboratory) Johnson Controls, Inc. v. Phoenix Control Sys., Inc., 886 F.2d 1173, 1175 (9th Cir. 1989)(affirming under abuse of discretion standard finding that SSO of program was protectable expression on grounds that there was evidence that there was room for creativity in expression of functions.)