decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books
Your contributions keep Groklaw going.
To donate to Groklaw 2.0:

Groklaw Gear

Click here to send an email to the editor of this weblog.


Contact PJ

Click here to email PJ. You won't find me on Facebook Donate Paypal


User Functions

Username:

Password:

Don't have an account yet? Sign up as a New User

No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Friday, April 13 2012 @ 03:07 PM EDT

We're getting down to the wire now, with the Oracle v. Google trial starting on April 16th, and thanks to the judge pushing them both to be more specific and answer his questions about the parties' positions on copyright, both Google and Oracle amplify considerably. As Oracle puts it, this is new law it is asking for, with no case yet on the topic of the copyrightability of computer languages:
The parties agree no case addresses directly whether the Copyright Act protects a computer programming language. However, the most analogous case law, general copyright principles, and the statutory purposes of the Copyright Act support protection. More importantly, none of the arguments advanced for denying protection to a programming language apply to the API specifications and class libraries at issue here.
Well, Google would say that even if you could copyright a language -- and it argues you can't, because, for one reason, "a language cannot be fixed" -- the APIs still would have no protection, in that they are functional. Oracle in its Proposed Findings:
The specifications and implementations of the APIs are not a method of operation or system.
In short, Oracle is taking a very extreme position. It wants to own it all, even if it has to ask the court to make new law extending copyrightability. But it's a position that is so extreme, it's just silly, as I think you'll agree when you read Google's equivalent filing, #897, which is so strong and clear and sensible, you can't help but feel embarrassed for Oracle:
Computer programming languages are not copyrightable, and neither are Oracle’s APIs. Oracle accuses Google of infringement for doing what the Oracle API specifications describe. That is a classic attempt to improperly assert copyright over an idea rather than expression. The Court should hold that the structure, selection and organization of the APIs are uncopyrightable.
Oracle's position, to me, is like an admission that the elaborate license rules about Java aren't in harmony with copyright law, and never were, and never will be unless Oracle can get the court to change the law. Some of us always thought that the rules were not sustainable, by the way.

Oracle also provides a list of what it views as the allegedly infringed materials. Oracle's list starts out with accusing Google's *documentation* of the Android class files that implement the accused 37 API packages (which they list here by name), go on to include the actual Android source code and object code that implement the 37 API packages, and several files that are not part of the 37 API packages. Is that the list you thought they were talking about? Or does it seem to have grown?

Also the parties have filed their trial briefs, presumably the final ones. Note that the court says there will be limited seating on the first day, while they pick the jury, so you may not be able to enter until that process is over. Also the judge has ordered that the parties "please place five copies of each admitted exhibit in the press room after trial adjourns each day. This applies only to hard-paper copies. Exceptions can be made in extraordinary circumstances." That's a lovely idea.

Jump To Comments

Here are the filings:

04/12/2012 - 897 - TRIAL BRIEF Google's 4/12/12 Copyright Liability Trial Brief by Google Inc.. (Van Nest, Robert) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 898 - Statement re 877 Order Google's Proposed Findings of Fact Regarding the Copyrightability of the Structure, Selection and Organization of the 37 APIs by Google Inc.. (Van Nest, Robert) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 899 - NOTICE by Oracle America, Inc. re 854 Order Submission of Oracle's Statement of Issues Regarding Copyright (Attachments: # 1 Exhibit A - Oracle statement of copyright issues)(Peters, Marc) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 900 - Brief re 852 Trial Brief ORACLES APRIL 12, 2012 BRIEF REGARDING COPYRIGHT ISSUES filed by Oracle America, Inc.. (Related document(s) 852 ) (Jacobs, Michael) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 901 - Statement re 854 Order Google's Proposed Statement of Issues Regarding Copyright by Google Inc.. (Van Nest, Robert) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 902 - Proposed Findings of Fact by Oracle America, Inc.. (Jacobs, Michael) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 903 - NOTICE TO PRESS AND PUBLIC RE LIMITED SEATING ON FIRST DAY. Signed by Judge Alsup on April 12, 2012. (whalc1, COURT STAFF) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 904 - ORDER FOR PARTIES TO ACCOMMODATE THE PRESS. Signed by Judge Alsup on April 12, 2012. (whalc1, COURT STAFF) (Filed on 4/12/2012) (Entered: 04/12/2012)

04/12/2012 - 905 - STIPULATION WITH PROPOSED ORDER Second Stipulation and Proposed Order Regarding Trial Procedures filed by Oracle America, Inc.. (Muino, Daniel) (Filed on 4/12/2012) (Entered: 04/12/2012)

Here's the notice from the court about limited seating:
One half of the public seating will be needed for the venire during jury selection. When the other half fills up, the marshals and court security officers will not permit the press or public to enter the courtroom until adequate space opens up. There will be no overflow courtroom with video or audio. Once the jury is sworn, there should be adequate room for all. The press and public should plan accordingly.
That process could take a couple of hours. Reuters is reporting that Michael Jacobs will be doing the opening statement for Oracle. David Boies is busy with the Oracle litigation against SAP. Reuters also says Oracle is seeking billions, but that's not the case. It also quotes a lawyer as saying most of the pretrial motions have gone Oracle's way, but I'd disagree with that. I think it's the opposite, actually, particularly as we got closer to trial.

David Boies is quoted as stating why Oracle is asking for an injunction:

Oracle is seeking an injunction not to shut Android down, Boies said, but to force Google to pay for a license and make Android compatible with the rest of Java. Google spokesman Jim Prosser said Oracle's claims are without merit.
So that may explain some of the extreme positions, trying to muscle a company that doesn't respond to bullying favorably.

We'll work on getting more of these documents into text form for you -- and I'd appreciate any help, if you can, because I have to read them and think before I explain them to you [Update: we're done] -- but for now, to get things started, here's Google's 4/12/2012 Copyright Liability Trial Brief [#897], then Oracle's equivalent, Oracle's April 12, 2012 Brief Regarding Copyright Issues [#900], followed by each parties' proposed findings of fact, where they debate the API issue more specifically, as text.

So, Google's first, #897, minus the Table of Contents and Cases, which I'll add later -- meanwhile look to the PDF:

KEKER & VAN NEST LLP
ROBERT A. VAN NEST - #84065
[email]
CHRISTA M. ANDERSON - #184325
[email]
[address, phone, fax]

KING & SPALDING LLP
SCOTT T. WEINGAERTNER (Pro Hac Vice)
[email]
ROBERT F. PERRY
[email]
BRUCE W. BABER (Pro Hac Vice)
[email]
[address, phone, fax]

KING & SPALDING LLP
DONALD F. ZIMMER, JR. - #112279
[email]
CHERYL A. SABNIS - #224323
[email]
[address, phone, fax]

IAN C. BALLON - #141819
[email]
HEATHER MEEKER - #172148
[email]
GREENBERG TRAURIG, LLP

Attorneys for Defendant
GOOGLE INC.

UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
SAN FRANCISCO DIVISION

_________________

ORACLE AMERICA, INC.,

Plaintiff,

v.

GOOGLE INC.,

Defendant.

___________________

Case No. 3:10-cv-03561-WHA

GOOGLE’S 4/12/12 COPYRIGHT
LIABILITY TRIAL BRIEF

Dept.: Courtroom 8, 19th Floor Judge: Hon. William H. Alsup

I. INTRODUCTION

The Court has asked for a “firm yes or no position on whether computer programming languages are copyrightable.” Order [Dkt 874] at 1. No, computer programming languages are not copyrightable. Google has never taken any other position. In addition, as requested, Google offers below a summary of some of the evidence it intends to present at trial relating to the copyrightability issues the Court has identified. See Order [Dkt. 865] at 1.

II. ARGUMENT

A. Computer programming languages are not copyrightable.

The Copyright Act defines a computer program as “a set of statements or instructions to be used directly or indirectly in a computer in order to bring about a certain result.” 17 U.S.C. § 101. A computer programming language is thus simply a language one can use to create a set of statements or instructions to be used directly or indirectly in a computer in order to bring about a certain result.1 Without a computer programming language, the set of statements or instructions cannot be understood by the computer. As such, a computer language is inherently a utilitarian, nonprotectable means by which computers operate.

This commonsense approach to the statute makes the very distinction Congress itself drew: the protectable material is the computer program (the set of statements or instructions); the unprotectable material is the method or system (the language). So understood, original computer programs may be protected, but the medium for expression in which they are created is not.

1. Computer programming languages are systems for expression, or
methods of operation for communication.

The Copyright Act bars copyright protection for an “idea, procedure, process, system, method of operation, concept, principle, or discovery,” even if it is in an “original work of authorship.” 17 U.S.C. § 102(b). This is what the Supreme Court meant when it stated that “no one would contend that the copyright of the treatise would give the exclusive right to the art or manufacture described therein.” Baker v. Selden, 101 U.S. 99, 102 (1879); see also Publications

1

Int’l v. Meredith Corp., 88 F.3d 473, 481 (7th Cir. 1996) (“The recipes at issue here describe a procedure by which the reader may produce many dishes featuring Dannon yogurt. As such, they are excluded from copyright protection as either a ‘procedure, process, [or] system.’”) (quoting 17 U.S.C. § 102(b)).

In the case of computer programs, this means that a given set of statements or instructions may be protected, but the protection does not extend to the method of operation or system—the programming language—by which they are understood by the computer. In copyright terms, the set of statements or instructions is the expression and the language used to make that expression intelligible to the machine is the method of operation or system. See Google 4/3/12 Br. [Dkt. 852] at 6, 14 (explaining that the APIs are a “system that can be used to express,” and that computer languages are uncopyrightable for the same reason).2 In its reply brief, Oracle did not—and could not—dispute this point. See Oracle 4/5/12 Br. [Dkt. 859] at 3-4, 8. Oracle’s expert, too, agrees: “Programming languages are the medium of expression in the art of computer programming.” JOHN C. MITCHELL, CONCEPTS IN PROGRAMMING LANGUAGES (Cambridge Univ. Press, 2003), Trial Ex. 2507 at 3 (emphasis added).

Oracle has no response to the common sense conclusion that a computer language is a system for expression, except to argue that Section 102(b) must mean something else when it says “system.”3 Oracle’s own expert, however, has described programming languages as abstractions.

2

See id. at ix (“Programming languages provide the abstractions, organizing principles, and control structures that programmers use to write good programs.”) (emphases added).4 Thus even Oracle’s own expert places programming languages firmly on the unprotectable “idea” side of the idea/expression dichotomy.

2. By the same token, the APIs are not copyrightable.

The APIs at issue are integral to and part of the Java programming language. See infra Part II.B. But whether that is the case, or whether they can be separated from the Java programming language (as Oracle argues), it is undeniable that these APIs extend the language by increasing its vocabulary. See Steele at 7 (“A true library does not change the rules of meaning for the language; it just adds new words.”). Whether the collective set is called “the Java programming language” (adopting Google’s view) or perhaps “the Java programming language supercharged” (adopting Oracle’s view), it is, to use Guy Steele’s definition, “a vocabulary and rules for what a string of words might mean to a person or a machine that hears them.” Steele at 2. The whole of this collective set is thus as uncopyrightable as any programming language. The APIs, as a subset of this uncopyrightable whole, are themselves uncopyrightable. See 17 U.S.C. § 102(b).

In its April 5th brief, Oracle argues that the opinion of the ECJ Advocate General suggests that “interfaces” can be copyrighted, at least in some circumstances. See Advocate General’s Opinion, SAS Institute Inc. v. World Programming Ltd., Case C-406/10, ¶ 85 (Nov. 29, 2011). The opinion, however, uses “interface” in two senses, first referring to a file format (which it concludes is an uncopyrightable idea) and later referring to specific source code in a computer program, authored by the developer, that implements a file format (which it concludes may be copyrighted). This is entirely consistent with Google’s position.

3

The opinion first calls the file format used by SAS for data files a “logic interface.” See id. ¶¶ 77-78. “Those formats may be regarded as blank forms which are to be filled with the customer’s data by the SAS System and which contain specific locations in which particular information must be written in order for the system to be read and write the file correctly.” Id. ¶ 79. Blank forms are per se uncopyrightable under the Copyright Act. Baker, 101 U.S. at 107; 37 C.F.R. § 202.1(c).

Next, the opinion discusses how this logic interface—the file format—could be made part of a computer program, explaining that “interface” could also refer to “the elements which create, write and read the format of said SAS data files” which are “expressed in source code in the program.” SAS, Case C-406/10, op. at ¶ 82. The opinion concludes that the SAS source code that implements the file format could be protected by copyright. See id. ¶¶ 81, 82. The Advocate General opines that under EU law, WPL was nonetheless allowed to decompile this code to reverse engineer the file format, so long as WPL wrote its own code to implement the file format. See id. ¶¶ 83-90. In short, the opinion is consistent with Google’s view, and distinguishes between the idea represented by an interface, which is not copyrightable, and the source code implementing an interface, which may be protected by copyright.

That these APIs are an uncopyrightable idea, system or method of operation becomes clearer still when one focuses on precisely what Oracle claims is copyrightable: the structure, selection and organization of the APIs. A set of nonsensical APIs could be created that had exactly the same structure, selection and organization as the Oracle APIs, but that did different things. For example, the sqrt() method could always return zero—indeed, every method that returns a number could always return zero, while those that return text could always return the letter a, those that return true or false could always return true, and so on, with a default result being used for every variable type. This set of APIs would serve no useful purpose, but would have exactly the same structure, selection and organization as the Oracle APIs. No reasonable jury could ever conclude that the “expression” in this hypothetical set of APIs is substantially similar to the “expression” in the Oracle APIs, notwithstanding the “copied” structure, selection and organization. Thus, Oracle’s infringement theory fails unless it accuses not just the structure,

4

selection and organization, but also the purpose of the APIs. In other words, Oracle’s infringement claim fails unless it is allowed to copyright ideas, which it cannot do. 17 U.S.C. § 102(b); see also Anti-Monopoly, Inc. v. General Mills Fun Group, 611 F.2d 296, 300 n.1 (9th Cir. 1979) (“business ideas, such as a game concept, cannot be copyrighted”); Chamberlin v. Uris Sales Corp., 150 F.2d 512, 513 (2d Cir. 1945) (“Precisely, however, because it is the form of expression and not the idea that is copyrightable, we hold that the defendant did not infringe on the plaintiff’s statement of the rules. The similarities of the two sets of rules derive from the fact that they were necessarily drawn from the same source.”); Whist Club v. Foster, 42 F.2d 782 (S.D.N.Y. 1929) (“In the conventional laws or rules of a game, as distinguished from the forms or modes of expression in which they may be stated, there can be no literary property susceptible of copyright.”).

Indeed, Oracle now—on the eve of trial—candidly states that it claims Google’s implementing source code is a derivative work of Oracle’s English-language descriptions because Google’s source code does the things that the English descriptions describe. See Oracle 4/5/12 Br. [Dkt. 859] at 10 (Oracle is claiming infringement based on “Google’s creation of derivative works from the English-language descriptions of the elements of the API specifications”). That is nothing but an assertion that Google’s expression infringes Oracle’s ideas. Oracle thus stands as an exception to the Supreme Court’s statement that “no one would contend that the copyright of the treatise would give the exclusive right to the art or manufacture described therein.” Baker, 101 U.S. at 102.

While Oracle argues the “extremity” of Google’s position, the truly extreme position would be to allow a party to devise a system (the Java language APIs), and then enforce copyrights in descriptions of that system (Oracle’s specifications) and implementations (expressions) of that system (Oracle’s libraries) to preclude others from practicing the system. Oracle’s approach is barred by Baker v. Selden:

To give to the author of the book an exclusive property in the art described therein, when no examination of its novelty has ever been officially made, would be a surprise and a fraud upon the public. That is the province of letters-patent, not of copyright. The claim to an invention or discovery of an art or manufacture must be subjected to the examination of the Patent Office before an exclusive right

5

therein can be obtained; and it can only be secured by a patent from the government.
101 U.S. at 102. It is barred by Mazer v. Stein: “Unlike a patent, a copyright gives no exclusive right to the art disclosed; protection is given only to the expression of the idea—not the idea itself.” 347 U.S. 201, 217 (1954). It is barred by Sega Enters. Ltd. v. Accolade, Inc., under which “functional requirements for compatibility” with a system described by or implemented in a copyrighted work cannot be protected by copyright law. 977 F.2d 1510, 1522 (9th Cir. 1992).

3. Google has never taken the position that a computer programming
language can be copyrighted.

Google has never taken the position, before a court or agency or otherwise, that a programming language was or is copyrightable. Google does believe that computer source code implementing a language can be copyrighted. Google has, for example, created programming languages called “GO” and “Dart.” Google has encouraged others to use these languages for free, and has also provided an open source license for others to use Google’s source code and object code that implements these languages. This is consistent with the positions Google has taken in this case.

Google notes that Sun (now known as Oracle America) organized, formed and led the American Committee for Interoperable Systems (“ACIS”),5 the chairperson of which was Sun’s Deputy General Counsel, Peter M.C. Choy. In a press release after the First Circuit’s decision in Lotus v. Borland, Mr. Choy “noted that the decision will make it more difficult for vendors to attempt to lock out competitors and lock in consumers by asserting proprietary rights in certain ‘building blocks’ of software, such as programming languages, program interfaces, and the functional aspects of user interfaces.” First Circuit Lotus v. Borland decision supports interoperability, Business Wire, Mar. 10, 1995 (emphasis added).6 Mr. Choy was also counsel of record for an ACIS amicus brief filed with the Supreme Court, urging the Court to affirm the First Circuit’s judgment that the Lotus menu hierarchy was not copyrightable. ACIS argued that “[t]he

6

decisive issue in [the Lotus] case is whether copyright law can protect the rules that enable two elements of a computer system to work together.” 1995 WL 728487, at *3. ACIS further argued:
The 1-2-3 command structure is more than a user interface; it is the interface between the Lotus program and programs—referred to as “macros”—that are written by users at their own considerable expense for execution in connection with the 1-2-3 program. Because the 1-2-3 command structure provides the template for the macros and because the macros are the key to compatibility, the First Circuit, consistent with holdings in other circuits, ruled that those elements necessary to macro compatibility are not protected by copyright.
Id. (emphases added). Thus, while not directly taking a position on whether programming languages can be copyrighted, the brief implies that they cannot.

B. The APIs are integral to the Java programming language.

As Google has previously noted, Java’s own books describing the APIs state that they are available “to all Java programs . . . .” Trial Ex. 980 at xviii. Those books describe four of the APIs (out of eight that then existed) as “the foundation of the Java language.” Id. (back cover).

1. Without the APIs, the Java programming language is deaf, dumb and
blind.

The APIs are so fundamental that without them the Java programming language has no ability to provide any output to the user. Similarly, without the APIs, the Java programming language has no ability to accept input from the user.7 When Mark Reinhold, Oracle’s Chief Architect of the Java Platform, was asked why the Java language APIs exist, he testified:
Well, if there were no APIs, we would only have a language. You would be able to write basic computations that never did any IO, had any communication with the outside world or the underlying platform.

You could write—you know, you could do computations on numbers and strings and generate them, but you wouldn’t be able to do anything with them.

Reinhold 8/5/11 Depo. at 115:10-17.8 He further explained, “But even doing that, even just to manipulate a string requires the string API, so you’re—you’re, actually, pretty much just limited to numbers, which are pretty boring.” Id. at 115:19-22.

7

In this respect, the Java language APIs are similar to libraries associated with some older languages in the history of programming. In C, for example, input and output facilities are part of what the designers of the C language called “the standard library, a set of functions that provide input, output, string handling, storage management, mathematical routines, and a variety of other services for C programs.” BRIAN W. KERNIGHAN & DENNIS M. RITCHIE, THE C PROGRAMMING LANGUAGE (Prentice Hall, 2d ed., 1988), Trial Ex. 3002 at 151.9 Even the basic “hello, world”10 C program in their book requires using the standard library in order to display the words “hello, world” to the user. See id. at 6.11 Similarly, Oracle’s “hello, world” program in the Java programming language includes the following source code:
System.out.println("Hello World!");12
“System” refers to a class that is part of the java.lang API package, and “out” is a field defined in the System class. The System class defines the “out” field as belonging to the “PrintStream” class, which is part of the java.io API package. Thus, even implementing this most basic of programs in the Java programming language requires using two of the accused APIs.

2. The APIs are fundamental to the Java programming language.

In its April 5th brief, Oracle conceded that the Java language specification requires the defineClass() method from the ClassLoader class in the java.lang package. See Oracle 4/5/12 Br. [Dkt. 859] at 7. In J2SE 5.0, the defineClass() method is an “overloaded” method; there are four versions of the defineClass() method, the fourth of which has the following method declaration:
protected Class defineClass(String name, ByteBuffer b, ProtectionDomain
protection Domain)

8

As indicated in the parentheses, the method accepts three arguments, of types “String,” “ByteBuffer” and “ProtectionDomain.” String, ByteBuffer and ProtectionDomain are classes defined, respectively, in the java.lang, java.nio and java.security APIs. Implementing this single example of a single required class thus requires implementing elements of three of the 37 APIs.13

This is only a single example—a single example that Oracle chose to highlight. Due to the interdependencies between classes in the APIs, expressly requiring one element often will necessarily require many others, just as the defineClass() method implicates the String, ByteBuffer and ProtectionDomain classes from java.lang, java.nio14 and java.security. Based on the classes expressly required by the Java language specification and interdependencies in the APIs, thousands of elements from the accused APIs are required in order to implement the Java programming language.15 In fact, the first edition of the Java language specification devotes over 300 pages to documentation for the java.lang, java.io and java.net packages. See Trial Ex. 4027 at 455-765. The documentation of the APIs was removed from later editions of the Java language specification only for space reasons. See Trial Ex. 984 at xxvi (“The specifications of the libraries are now far too large to fit into this volume, and they continue to evolve. Consequently, API specifications have been removed from this book.”).

9

In addition, witnesses at trial will testify that developers expect the APIs to be available when they program in the Java programming language, that the APIs are routinely taught in beginning courses regarding use of the language, and that no developer can credibly claim to be proficient in the Java programming language unless he or she knows the APIs. And, in addition to statements highlighted in prior briefs, Sun also stated, for example, that the java.lang API “provides the classes and interfaces that form the core of the Java language and the Java Virtual Machine,” and that several objects defined in java.lang are “closely intertwined with the Java language definition.” Trial Ex. 980 at xix. Oracle’s expert has testified that the Java programming language cannot be implemented without including at least some of the APIs.

Indeed, Sun described the Java programming language as follows:

The Java programming language is a general-purpose concurrent class-based object-oriented programming language, specifically designed to have as few implementation dependencies as possible. It allows application developers to write a program once and then be able to run it everywhere on the Internet.
Trial Ex. 984 at xxi (emphasis added). Because any useful program in the Java programming language requires the APIs, “the Java programming language” only allows a developer to write a program once and run it everywhere if the “language” is understood to include the APIs.

III. CONCLUSION

Computer programming languages are not copyrightable, and neither are Oracle’s APIs. Oracle accuses Google of infringement for doing what the Oracle API specifications describe. That is a classic attempt to improperly assert copyright over an idea rather than expression. The Court should hold that the structure, selection and organization of the APIs are uncopyrightable.

______________
1 Guy Steele, an early member of the Java team at Sun, and now an Oracle Software Architect, defines a language as “a vocabulary and rules for what a string of words might mean to a person or a machine that hears them.” Guy Steele, Growing a Language (Sun Microsystems, Oct. 1998) (“Steele”) at 2, available at http://labs.oracle.com/features/ tenyears/volcd/papers/14Steele.pdf.

2 Similarly, fictional languages such as Na’vi and Dothraki cannot be copyrighted. While the film Avatar and the television series Game of Thrones are copyrightable (including the portions in the fictional Na’vi and Dothraki languages), and while, for example, a dictionary or grammar textbook for either language would be copyrightable, the languages themselves are not. Oracle asks why copyright should not protect such languages, see Oracle 4/5/12 Br. [Dkt. 859] at 9; the answer is that Section 102(b) says that they are not protected. Moreover, there is no reason to believe that allowing copyright owners to control who can express themselves in these languages would further the aims of copyright law.

3 Oracle also argues that a computer language can be “original, text-based, and capable of fixation,” and thus that it must be copyrightable. See Oracle 4/5/12 Br. [Dkt. 859] at 9. First, Section 102(b) bars copyright protection for “original works of authorship” that fall within its enumerated classes of exclusion. See 17 U.S.C. § 102(b). Thus, the fact that a system is original, text-based and fixed does not mean that Section 102(b) does not apply.

Second, a language cannot be fixed. Certainly, a description of a language (e.g., a specification) can be fixed. A computer program written using the language (e.g., the Gmail application on Android phones) or an implementation of a language (e.g., a compiler or interpreter) can be fixed. But none of those things is “the language,” any more than a dictionary “is” English, Das Boot “is” German, or a C compiler “is” the C programming language. See Baker, 101 U.S. at 102 (“But there is a clear distinction between the book, as such, and the art which it is intended to illustrate. The mere statement of the proposition is so evident, that it requires hardly any argument to support it.”); cf. René Magritte, La trahison des images.

4 Oracle’s expert has further described designing a programming language as requiring decisions regarding what ideas to leave out. See id at 3 (“A single application also helps with one of the most difficult parts of language design: leaving good ideas out.”). And he has described studying programming languages as requiring “the study of conceptual frameworks for problem solving, software construction, and development.” Id. at 5 (emphasis added).

5 The organization had the same mailing address as Sun’s headquarters. At the time of the Lotus case, the ACIS website was located at http://www.sun.com/ACIS/.

6 Available via LEXIS-NEXIS. Sun also distributed this press release by other means. See, e.g., http://www3.wcl.american.edu/cni/9503/4860.html.

7 There is one minor exception. A Java language program can be written to accept arguments from the “command line” at runtime. Even this facility, however, is limited to accepting a single set of arguments at the beginning of the program.

8 This testimony is subject to an objection, but only that the testimony is outside the scope of the Rule 30(b)(6) topics for which Dr. Reinhold was designated.

9The “Standard Template Library” is a similar library that has been incorporated into the standard C++ specification.

10 The authors explain that a “hello, world” program—a program that prints the words “hello, world”—is typically the first program a developer writes when learning a language. See id. at 5.

11 The authors state that “[i]nput and output facilities,” which are part of the standard library, “are not part of the C language itself . . . .” Id. 151. Even the basic “hello, world” C program they introduce, however, requires the standard library. All that is meant by their distinction between the “language” and the library is that “higher-level mechanisms must be provided in explicitly- called functions.” Id. at 2. That is, they require APIs. Notably, the authors discuss the C standard library as part of their book about the “C programming language.”

12 See http://docs.oracle.com/javase/tutorial/ getStarted/application/index.html.

13 In its April 5th brief, Oracle also suggests that one could implement the defineClass() method without implementing the rest of the ClassLoader class. See Oracle 4/5/12 Br. [Dkt. 859] at 7. Oracle has repeatedly claimed that it is being irreparably harmed by alleged “fragmentation” because Google did not fully implement all of the J2SE API packages. Here, however, it appears to argue that to implement the free and open Java programming language, one should implement only part of the APIs. To the extent that Android “fragments” Java at all—and witnesses at trial will dispute this point—the approach Oracle appears to suggest would “fragment” Java far more. Further, the evidence at trial will show that Java, and particularly Java ME, was “fragmented” long before Android, and that Sun condoned this “fragmentation.”

14 Oracle argues that because some of the accused packages were not part of the initial release of Java, they cannot be fundamental or integral to the Java programming language. Languages, however, are not static. See Trial Ex. 984 at xxv (“This specification defines the language as it exists today. The language is likely to continue to evolve.”); Steele at 5 (“I now think that I, as a language designer who helps out with the design of the Java programming language, need to ask not ‘Should the Java programming language grow?’ but ‘How should the Java programming language grow?’”).

15 Oracle argues that when the Java language specification refers to APIs that are fully defined elsewhere, that means that the referenced definitions are not part of the language. See Oracle 4/12/12 Br. [Dkt 859] at 7. This is backwards. When the Java language specification “does not provide a complete specification” but refers the reader to the APIs for details, see Trial Ex. 984 at 6, the only fair conclusion is that the language specification is incorporating material by reference from the API specifications.

And here's Oracle's April 12, 2012 Brief Regarding Copyright Issues [#900], as text:

MORRISON & FOERSTER LLP
MICHAEL A. JACOBS (Bar No. 111664)
[email]
KENNETH A. KUWAYTI (Bar No. 145384)
[email]
MARC DAVID PETERS (Bar No. 211725)
[email]
DANIEL P. MUINO (Bar No. 209624)
[email]
[address]
[phone]
[fax]

BOIES, SCHILLER & FLEXNER LLP
DAVID BOIES (Admitted Pro Hac Vice)
[email]
[address]
[phone]
[fax]
STEVEN C. HOLTZMAN (Bar No. 144177)
[email]
[address]
[phone]
[fax]

ORACLE CORPORATION
DORIAN DALEY (Bar No. 129049)
[email]
DEBORAH K. MILLER (Bar No. 95527)
[email]
MATTHEW M. SARBORARIA (Bar No. 211600)
[email]
[address]
[phone]
[fax]

Attorneys for Plaintiff
ORACLE AMERICA, INC.

UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
SAN FRANCISCO DIVISION

ORACLE AMERICA, INC.
Plaintiff,
v.
GOOGLE INC.
Defendant.

Case No. CV 10-03561 WHA

ORACLE'S APRIL 12, 2012 BRIEF
REGARDING COPYRIGHT ISSUES

Dept.: Courtroom 8, 19th Floor
Judge: Honorable William H. Alsup

(1)

I. THE COPYRIGHT ACT PROTECTS A COMPUTER PROGRAMMING
LANGUAGE THAT MEETS THE ORIGINALITY REQUIREMENT

The parties agree no case addresses directly whether the Copyright Act protects a computer programming language. However, the most analogous case law, general copyright principles, and the statutory purposes of the Copyright Act support protection. More importantly, none of the arguments advanced for denying protection to a programming language apply to the API specifications and class libraries at issue here.

The cases that have considered works most similar to a computer programming language are those involving codes or compilations of symbols. Courts have upheld copyright protection for codes or compilations of symbols that meet the originality requirement.

In Reiss v. National Quotation Bureau, Inc., 276 F. 717 (S.D.N.Y. 1921), Learned Hand upheld copyright protection for a code book containing coined words that could be given an agreed meaning for the purpose of cable correspondence. Judge Hand compared the code to a language — "a set of words or symbols to form a new abstract speech, with inflections, but as yet with no meaning, a kind of blank Esperanto." 276 F. at 718. He saw "no reason" why the code's set of coined words could not be a "writing" protected by copyright simply "because they communicate nothing," given that "[t]hey may have their uses for all that, aesthetic or practical, and they may be the productions of high ingenuity, or even genius." Id. at 719; see also Lotus Dev. Corp. v. Paperback Software Int., 740 F. Supp. 37, 72 (D. Mass. 1990) (rejecting argument "[t]hat not only languages such as English and French but all other languages as well — including Esperanto, and Reiss' coined words, 276 F. at 718, and Pascal — are automatically ineligible for copyright protection").

Similarly, in Hatfield v. Peterson, 91 F.2d 998, 1000 (2d Cir. 1937), the Second Circuit upheld copyright protection for a telegraphic code that was a compilation of non-original words and phrases, holding "the copyright is valid because of the originality of the combination."

Courts have denied copyright protection to codes or systems of symbols only where they lack originality, not because they are inherently uncopyrightable. In Toro Company v. R & R Products, 787 F.2d 1208 (8th Cir. 1986), the Eighth Circuit rejected protection for a machine

(2)

parts numbering system because of lack of originality. But far from finding a set of symbols or a language per se an uncopyrightable system, the court explained that: "A system that uses symbols in some sort of meaningful pattern, something by which one could distinguish effort or content, would be an original work." 787 F.2d at 1213. Similarly, in Brief English Systems, Inc. v. Owen, 48 F.2d 555 (2d Cir. 1931), the court rejected a claim for exclusive right to use a published system of shorthand not because a code or language is inherently not copyrightable but only because "[t]here is no literary merit in a mere system of condensing written words into less than the number of letters usually used to spell them out." 48 F.2d at 558.

Like the code of coined words in Reiss, a computer language may qualify for copyright protection if it is sufficiently original. Indeed, to a much greater degree than the Reiss coined words, it may and typically does represent very substantial creative work of exactly the kind that copyright is intended to protect and promote, with "enough definite expression so that one may distinguish authorship." Toro, 787 F.2d at 1212.

Google argues that a programming language is "an uncopyrightable system or method of operation," "an idea, not expression." Google 4/3 Br. at 14-15. But a work that represents only one of many ways to perform a function is "the expression of a particular idea, not the idea itself." Toro, 787 F.2d at 1212; see Apple Computer, Inc. v. Franklin Computer Corp., 714 F.2d 1240, 1253 (3rd Cir. 1983) ("If other programs can be written or created which perform the same function as Apple's operating system program, then that program is an expression of an idea and hence copyrightable.") As the Eighth Circuit explained in Toro:

All that the idea/expression dichotomy embodied in § 102(b) means in the parts numbering context is that appellant could not copyright the idea of using numbers to designate replacement parts. Section 102(b) does not answer the question of whether appellant's particular expression of the idea is copyrightable.

787 F.2d at 1212.

The fundamental "idea" of a computer programming language is to permit the user to create an arrangement of symbolic commands that will direct a computer to perform specified tasks. There may be lower-level ideas that are unprotectable as well, like a programming language directed to a special purpose, or the idea of an object-oriented language. But these ideas

(3)

can be expressed in a wide variety of specific forms. While copyrighting a computer language cannot prevent others from designing programming languages that serve the same functions, the detailed vocabulary and written expression of the computer language should be protectable elements if sufficiently original and creative.

Adobe, for example, has asserted copyright protection for its PostScript computer language, and explains:

The general idea of using a page description language is in the public domain. Anyone is free to devise his or her own set of unique commands that constitute a page description language. However, Adobe Systems Incorporated owns the copyright for the list of operators and the written specification for Adobe's Post-Script language. Thus, these elements of the PostScript language may not be copied without Adobe's permission.

Adobe Systems Inc., POSTSCRIPT LANGUAGE REFERENCE xiii and 9 (3d ed. 1999), available at http://www.scribd.com/doc/202357/PostScript-Language-Reference-Third-Edition. In asserting its copyright, Adobe has stated that one of its objectives is to "[m]aintain the integrity of the PostScript language standard." Id. at 9.

Google relies primarily on preliminary opinions in a pending English case recently referred to the European Court of Justice ("ECJ"). The ECJ has not yet responded to that referral. SAS Institute, Inc. v. World Programming Ltd., [2010] EWHC (Ch) 1829. The ECJ will not interpret the U.S. Copyright Act; it will decide the case under the extensive relevant provisions of European treaty law and the EEC Software Directive and related case law (id. at ¶¶ 149-95), as well as the legislative history of the Directive and its adoption by the European Parliament (see id. at ¶¶ 211-227). The English court referred the programming language question to the ECJ for the very reason that its resolution was not "acte clair," that is, free from reasonable doubt.

Google relies, in particular, on the opinion to the ECJ by Advocate General Opinion. Opinion of Advocate General Bot, SAS Institute v. World Programming Ltd., Case C-406/10 ("SAS Advocate General Opinion"). Google cites the following passage:

It seems to me, therefore, that programming language is a functional element which allows instructions to be given to the computer. As we have seen with SAS language, programming language is made up of words and phrases known to everyone and lacking originality. In my opinion, programming language must be regarded as comparable to the language by the author of a novel. It is therefore the means which permits expression to be given, not the expression itself.

(4)

Id. at ¶ 71 (emphasis added). This analysis ignores the obvious difference that the language used by a novelist, unlike an original computer language, is not itself the author's work of original creative expression. The novelist does not create the language in which she writes.

In concluding that a computer language is "lacking originality," Advocate General Bot's opinion is also at odds with U.S. case law. Even "[a] factual compilation is eligible for copyright if it features an original selection or arrangement of facts." Feist Publications, Inc. v. Rural Tel. Serv. Co., 499 U.S. 340, 350 (1991). Copyright protection is denied based on lack of originality only to "a narrow category of works in which the creative spark is utterly lacking or so trivial as to be virtually nonexistent." Id. at 359. Unlike the white pages at issue in Feist, a typical computer programming language represents creative work in its selection and arrangement of symbols that may be sufficient to meet the "originality" requirement.

Moreover, and of more significance to this case, despite opining that a computer programming language may not be copyrightable, Advocate General Bot concluded that an interface may be. He found that the Directive "does not exclude interfaces from copyright protection" and that "if the expression of the interface constitutes a substantial part of the expression of the computer program . . . it is eligible for protection under the Directive." SAS Advocate General Opinion, at ¶¶ 81-82; see also id. at ¶ 60 (elements of a program enjoy protection "provided that they contain some of the elements which are the expression of the intellectual creation of the author of the work").

Copyright protection of a computer language is also consistent with the Copyright Act's statutory purpose to "promote the creation and publication of free expression" by rewarding authors. Eldred v. Ashcroft, 537 U.S. 186, 219 (2003) (emphasis in original). Developing an original, never-before-written language — whether a computer programming language or a newly coined language for a dramatic production such as Na'vi (from the film Avatar) and Dothraki (from the HBO series Game of Thrones) — may represent years of creative work. Copyright protection rewards and promotes those creative efforts. The estate of J.R.R. Tolkien, for example, has asserted copyright protection for Elvish and other languages used in his works. http://www.theodoramichaels.com/articles/fan-fic.php#Languages

(5)

The policy balance to apply to the idea/expression dichotomy was described by the Ninth Circuit in CDN Inc. v. Kapes, which affirmed copyrightability of a collectable coin pricing guide:

As Judge Hand noted, the difference between idea and expression is one of degree. This circuit has held that "[t]he guiding consideration in drawing the line is the preservation of the balance between competition and protection reflected in the patent and copyright laws." Rosenthal, 446 F.2d at 742. In this case, the prices fall on the expression side of the line. CDN does not, nor could it, claim protection for its idea of creating a wholesale price guide, but it can use the copyright laws to protect its idea of what those prices are. . . . Drawing this line preserves the balance between competition and protection: it allows CDN's competitors to create their own price guides and thus furthers competition, but protects CDN's creation, thus giving it an incentive to create such a guide.

197 F.3d 1256, 1262 (9th Cir. 1999) (citations omitted). Protecting the expression embodied in a computer language while allowing competitors to create their own languages with parallel purpose and function preserves the balance between competition and protection.

As demonstrated above, the best view of U.S. copyright law is that an original and creative computer language is subject to copyright protection as an "original work[] of authorship." 17 U.S.C. § 102. As far as Oracle has been able to determine, neither Oracle nor Sun has taken a contrary position on the copyrightability of computer languages.

II. HISTORY OF API DEVELOPMENT

Modern APIs owe their origins to the development of modular programming. Subroutines, first invented in 1951, divided programs into units with specific tasks. The first software libraries were collections of common, general-purpose subroutines that could be re-used in different programs. These libraries were not considered part of the language in which they were written. They were sets of reusable program modules, expressed in particular languages.

The use of an API as a specification of how software modules interact arose during the 1970s. One example from that time is prototypes written in the C programming language. Prototypes are fragments of code describing the sets of parameters to be passed to different subroutines and the types of their return values. Developers combined these code fragments with English prose specifying the behavior of the subroutines, creating API specifications similar to those written today. Other developers could learn from the API specifications how different libraries worked without having to study their underlying implementations.

(6)

The techniques of modular program development are more relevant today than ever. Professor Mitchell will testify that today's software systems are among the most complex products ever created by human beings, and APIs are the core structuring concepts software designers use to manage this complexity. (Mitchell Opp. Rep., ECF No. 397-1 ¶ 18.) Software developers often collaborate on projects from different cities or countries. (Id. ¶ 25.) They use APIs to understand the potential dependencies between different sections of code without having to know how the code for an entire project works. A developer in San Francisco, for example, can design an API for a library and then design and implement the library. A colleague in Paris need only consult the API in order to make use of that library; there is no need to know the inner workings of the library.

III. THE JAVA APIS ARE NOT PART OF THE PROGRAMMING LANGUAGE

A. A programming language and an API are distinct things with different
purposes

The evidence will show that a programming language and an API are two very different things. A programming language is an artificial language used to create programs that control the behavior of a machine. An API implementation (often referred to as a "class library") is a computer program component that consists of pre-written code. The API specification is the blueprint to the class library. It is a detailed written description of the programs that explains how the programs are structured, how they are to be used, and what they will do. For example, a library implementing a database API will provide database functions, a library implementing a networking API will provide networking functions, a library implementing a mathematics API will provide arithmetic and trigonometric functions, and so forth.

Google was never confused about the distinction between an API and a programming language when this case began or for long afterwards. Google is now straining to change course to take a position it knows is factually incorrect. At the outset, Google acknowledged that the class libraries are distinct from the Java programming language. (See ECF No. 51 at 13-14.) Google's expert stated that the Java programming language and the Java APIs are "very different things." (Astrachan Opening Rep., ECF No. 262-1 ¶ 7.) He defined an API as "a particular set of

(7)

rules and specifications that software programs can follow to communicate with each other. It serves as an interface between different software programs and facilitates their interaction, similar to the way the user interface facilitates interaction between humans and computers." (Id. ¶ 24.)

One area where the parties' experts agree is that there are very few classes within the Java APIs that must be present for the Java language to function. Oracle's expert will testify that "it was not necessary to include any particular class or package (beyond perhaps a very few classes like Object and Class that are tied closely to the Java language) for the Java language to function." (Mitchell Opp. Rep., ECF No. 397-1 ¶ 20.) Google's expert testified in deposition that he agrees:

Q. Paragraph 20. And Dr. Mitchell says, in around the middle of the paragraph, "It is important to realize that while the robust and elegant API specification and class libraries that implement them have been important to Java's success, it was not necessary to include any particular class or package beyond perhaps a very few classes like object and class that are tied closely to the Java language for the Java language to function." And maybe that's the missing piece here. I mean, do you have an opinion on what classes were required to be included in order for the Java language to function?

A. I think this accurately reflects what the Java language needs to function.

(9/9/11 Astrachan Dep. 230:19-231:8.)

The Java Language Specification defines what is in the Java programming language. That definition includes those few classes, but otherwise does not include these 37 API packages.

B. The Java APIs Are Deliberately Maintained Separately From The
Java Programming Language

The Java APIs are deliberately from the Java programming language. This was done very deliberately. They should not be regarded as part of the language.

One example of how the Java APIs are distinct from the Java programming language is that, while the Java programming language has changed very little since it was first released in 1996, the Java APIs have grown explosively. In 1996, there were only 7 API packages. There are now 209 API packages for Java Standard Edition ("SE") alone.

Since developers could program in Java from the time of its first release, it is obvious that these additional 202 APIs are not required to use the programming language. Many of these APIs contain highly specialized functions that would be neither expected nor, in many cases, desirable

(8)

in a general purpose programming language. This is true of most of the 37 API packages at issue in the case. Javax.net, for example, concerns a group of methods relating to creating a secure web connection. Javax.crypto, javax.crypto.interfaces, and javax.crypto.spec all relate to methods of encrypting and decrypting data. Java.text is an API package containing methods to help make a computer program usable in multiple natural languages.

The Java APIs are kept separate from the programming language for good reasons. When a programming language is created no one can predict all the ways it will be used. No one can foresee all the APIs that will be needed, and it is a mistake to build too much into the language. For example, there is no reason to build a database API into a general-purpose language like Java. As database technology improves and evolves, developers can create new APIs as needed, but the language should not also have to evolve. The C programming language is one of the most powerful and widely used languages, and it is still recognizable to programmers who used it in the 1970's, even though the uses to which the language is put have changed dramatically.

If a particular API were part of the language, then every change or addition to the API would have a ripple effect through everyone who uses or depends on the language, and would be required to implement the new features. It is for this reason that the Java language has changed only three times since it was first released and the process for changing the language is extremely deliberate and slow. Changes to the language require a super-majority vote of the entire Executive Committee of the Java Community Process and have only occurred after a lengthy public approval process. Changes to API's can be made much more quickly.

Another reason why the Java APIs are kept separate from the programming language is that Java is used to write programs for devices of very different capabilities, from powerful servers to embedded microcontrollers in single chips. Trying to implement all API elements as part of the Java language would require a heavyweight Java Virtual Machine capable of implementing every part of their functionality regardless of the device. In addition, the same API may provide different functions on different device form factors, and making every API part of the base language would make this impossible. The solution instead is to select, develop, and specify different sets of APIs suitable for different environments. This is exactly what Sun did in

(9)

the early days of Java when it divided Java into the language on the one hand and different collections of APIs on the other — Java SE (for desktops and servers), Java EE (for large scale enterprise applications), Java ME (for mobile and embedded devices).

Oracle may properly claim copyright protection over the Java APIs even if the Java programming language is freely available. The evidence at trial will show that copyright notices were prominently and consistently displayed on the API specifications. Hundreds of the world's largest companies pay to license the Java platform. Google was well aware of the requirement to license the specifications. Andy Rubin took a license to the Java specifications when he was at his predecessor company, Danger. Sun expressly rejected the notion that Danger did not require a license because Rubin had created an independent implementation, and therefore Danger paid. Rubin wrote in an internal email at Google and confirmed in his deposition that he was aware that Sun claimed copyright protection for the APIs. (TX0018; 7/27/11 Rubin Dep. 149:18-150:13.)

C. The Existence Of Java APIs And Class Libraries Besides The APIs At Issue
Shows That APIs Are Not Inherently Part Of The Language And Why
Google's Copyrightability Position Is Incorrect

The evidence will also show that there are many Java-language APIs and class libraries, available from a wide variety of sources, that are also not considered part of the Java programming language.

A good example is Android itself. Android has many APIs besides the 37 packages that give rise to copyright liability in this case. Many of them have the same purpose as some of the Java SE APIs Google did not copy.1 Google provides compatibility test suites for its licensees to confirm that they are compatible with its APIs using those test suites. But this does not mean that any given Android API is part of the Java programming language. Oracle's Java APIs should not be analyzed differently.

Beyond Android, the world is full of Java APIs and libraries. None are considered to be part of the Java language either. The website freecode.com lists over 1,100 different Java

(10)

libraries. See http://freecode.com/tags/java-libraries. Many third parties provide class libraries and APIs for specialized Java applications like financial trading. For example, competitors IBM and BEA jointly developed a series of API specifications to create a common data programming environment for their competing server products. And scores of other companies create their own libraries and APIs internally so they can re-use code.

Google's position is that none of these APIs could ever be copyrighted because "APIs are not copyrightable, regardless of the programming language." (See ECF No.778 at 6-7 ("all API specifications, by design, describe precisely the elements of APIs that are needed for compatibility between implementations of the APIs, and with programs that use the APIs").) This does not make sense or comport with the law. The class libraries are copyrightable as a computer program, and their selection, arrangement and structure is copyrightable if sufficiently original and creative. The written description of those class libraries is copyrightable as well.

IV. HOW APIS ARE VIEWED IN OTHER LANGUAGES

The class libraries and APIs in other computer languages are generally not viewed as part of the programming language, even when a core set of APIs is specified in the same document as the programming language specification. The size and richness of these libraries varies widely. For example, C++, an object-oriented programming language similar in some ways to Java, was associated with a much smaller set of libraries. As a result, several different entities have created more comprehensive libraries and APIs, including the Standard Template Library and the Boost C++ Libraries. The Perl programming language also comes with a small set of libraries, called subroutine modules. However, over 100,000 additional modules are available separately in the CPAN Archive. See http://www.cpan.org/index.html. The Python software platform took the opposite approach and comes with an extensive set of libraries even larger than Java's, yet the Python documentation is clearly divided into separate descriptions of the language and the libraries. Even with such a large set of built-in libraries, over 20,000 additional packages are available at the Python Package Index. http://pypi.python.org/pypi.

(11)

Dated: April 12, 2012

MORRISON & FOERSTER LLP

By: /s/ Michael A. Jacobs

Attorneys for Plaintiff
ORACLE AMERICA, INC.

(12)

1 This shows the Java APIs are expression, not ideas, since there are corresponding APIs that implement the same idea (e.g., a library to handle screen displays and user interactions) but have different designs.

And here is Oracle's Proposed Findings [#902], the meat of it, minus the header and footer, as text:

Oracle submits the following proposed findings relating to the issue of the copyrightability of the selection, organization, and structure of the API specifications and associated implementations in class libraries for the 37 packages at issue in this case (collectively “APIs”). (See ECF No. 877).

Proposed Findings

1. The APIs include thousands of individual elements, organized into packages, classes, interfaces, exceptions, constructors, methods, and fields. There is an intricate relationship of hierarchies and dependencies among elements within and across packages.

2. The detailed selection, organization, and structure in the API specifications is mirrored in the source code and object code implementation in the Java class libraries.

3. The APIs represent years of creative design. The selection, organization, and structure of the elements and names in the APIs are each highly original and creative.

4. Oracle had many choices for what elements and names to include in the APIs. Other than a few classes, Oracle was not required to include any particular element or name.

5. There were many different ways to organize and structure the APIs.

6. A primary purpose of the selection, organization, and structure of the APIs is to make them more comprehensible and easier to use for programmers.

7. The selection, organization, and structure of the APIs is the detailed expression of an idea, not an idea itself. An idea for an API package may be to have a library of pre-written computer code relevant to the area of programming to which the package relates.

8. That selection, organization, and structure is not commonplace, and was not an indispensable or standard way of expressing any idea.

9. Other than a few classes, Google was not required to copy the selection, organization, and structure of the APIs to be compatible with the Java programming language.

10. It was not technically necessary for Google to copy the APIs. Google designed many of its own APIs for Android.

11. Android is not compatible with Java. Many programs written for one will not run on the other.

12. The specifications and implementations of the APIs are not a method of operation or system.

And here's Google's Proposed Findings, [#898], similarly headless and footless:
1. An API consists of a set of names that can be used to access features of a library, together with specified conventions about their use.

2. API specifications, by design, describe the structure, selection and organization (“SSO”) of API elements needed for compatibility between implementations of the APIs, and with programs using the APIs.

3. The 37 APIs are fundamental to the Java language.

4. Developers learn the 37 APIs when they learn the Java language.

5. Developers treat the 37 APIs as part of the Java language.

6. The Java language cannot be implemented without many of the 37 APIs.

7. Without the 37 APIs, the Java language cannot perform basic tasks, e.g., receiving input from and providing output to the user, or processing text strings.

8. The 37 APIs and their SSO are how developers access the implementing code in the 37 API packages, and thus the functionality provided by that code.

9. Developers cannot use the 37 APIs without relying on their SSO.

10. The SSO of the 37 APIs are functional requirements for compatibility with the 37 APIs.

11. The 37 APIs cannot be implemented without their SSO.

12. Code using different APIs with different SSO than the 37 APIs will not be compatible with the 37 APIs.

13. The design of the 37 APIs and their SSO is constrained by external factors including functionality, efficiency and ease of use.

14. The 37 APIs and their SSO build on previous programming languages and long-accepted conventions.

15. The 37 APIs and their SSO are a system of expression developers use when programming in the Java language.

16. For years before this litigation, Sun was aware of, and did not object to, use of the 37 APIs and their SSO in GNU Classpath, Apache Harmony and Android.

And here's the Oracle list of what it is and isn't accusing Google of infringing, its Exhibit A, attached to filing #899:

MORRISON & FOERSTER LLP
MICHAEL A. JACOBS (Bar No. 111664)
[email]
KENNETH A. KUWAYTI (Bar No. 145384)
[email]
MARC DAVID PETERS (Bar No. 211725)
[email]
DANIEL P. MUINO (Bar No. 209624)
[email]
[address]
[phone]
[fax]

BOIES, SCHILLER & FLEXNER LLP
DAVID BOIES (Admitted Pro Hac Vice)
[email]
[address]
[phone]
[fax]
STEVEN C. HOLTZMAN (Bar No. 144177)
[email]
[address]
[phone]
[fax]

ORACLE CORPORATION
DORIAN DALEY (Bar No. 129049)
[email]
DEBORAH K. MILLER (Bar No. 95527)
[email]
MATTHEW M. SARBORARIA (Bar No. 211600)
[email]
[address]
[phone]
[fax]

Attorneys for Plaintiff
GOOGLE INC.

UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
SAN FRANCISCO DIVISION

_________________

ORACLE AMERICA, INC.,

Plaintiff,

v.

GOOGLE INC.,

Defendant.

___________________

Case No. CV 10-03561 WHA

ORACLE’S STATEMENT OF ISSUES
REGARDING COPYRIGHT

Date: April 16, 2011
Dept.: Courtroom 8, 19th Floor Judge: Hon. William H. Alsup

Pursuant to the Court’s request (ECF No. 854), Oracle America, Inc. hereby provides the following summary of its copyright infringement allegations to be tried:

What Oracle accuses of copyright infringement are:

1. The Android documentation for the 37 API packages listed below, including the selection, arrangement, and structure of all API elements (including names) in that documentation. Oracle alleges that Google copied an estimated 103,400 lines1 from the Java API specifications into Android’s documentation.

1. java.awt.font
2. java.beans
3. java.io
4. java.lang
5. java.lang.annotation
6. java.lang.ref
7. java.lang.reflect
8. java.net
9. java.nio
10. java.nio.channels
11. java.nio.channels.spi
12. java.nio.charset
13. java.nio.charset.spi
14. java.security
15. java.security.acl
16. java.security.cert
17. java.security.interfaces
18. java.security.spec
19. java.sql
20. java.text
21. java.util
22. java.util.jar
23. java.util.logging
24. java.util.prefs
25. java.util.regex
26. java.util.zip
27. javax.crypto
28. javax.crypto.interfaces
29. javax.crypto.spec
30. javax.net
31. javax.net.ssl
32. javax.security.auth
33. javax.security.auth.callback
34. javax.security.auth.login
35. javax.security.auth.x500
36. javax.security.cert
37. javax.sql
2. The selection, arrangement, and structure of all API elements (including names) of the Android class library source code and object code that implements the 37 API packages.

3. The declarations of the API elements in the Android class library source code and object code that implements the 37 API packages.

4. The Android class library source code and object code that implements the 37 API packages as derivative works of the Java API specifications, including the English-language descriptions.

5. Two Android source code files (and corresponding object code), TimSort.java and ComparableTimSort.java, which are part of Android’s implementation of the 37 API packages.

2

6. Eight Android source code files (and corresponding object code), AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java, PrincipalImpl.java, PolicyNodeImpl.java, AclEnumerator.java, which are not part of Android’s implementation of the 37 API packages.

7. Comments contained in two Android source code files, CodeSourceTest.java and CollectionCertStoreParametersTest.java, which are not part of Android’s implementation of the 37 API packages.

The tangible medium or media of expression in which the above are fixed are electronic storage media and printed documentation.

What Oracle does not accuse of copyright infringement are:

1. Android’s use of the Java programming language.

2. Any particular name of an API element, including names for each package, class, exception, field, method, and parameter name, considered individually.

3. The Android source code implementing the APIs contained in the 37 packages at the line-by-line level, except as set forth above.

4. The idea of APIs.

5. The Dalvik virtual machine (without associated class libraries).

6. Android API packages and associated class libraries other than the 37 API packages and associated class libraries listed above.

7. Other Android source code and object code except as set forth above.

_____________
1 Oracle calculated this estimate by counting the lines of a sample of the Android documentation.

3

Google has its dueling equivalent, Google's Proposed Statement of Issues Regarding Copyright, #901:
KEKER & VAN NEST LLP
ROBERT A. VAN NEST - #84065
[email]
CHRISTA M. ANDERSON - #184325
[email]
[address, phone, fax]

KING & SPALDING LLP
SCOTT T. WEINGAERTNER (Pro Hac Vice)
[email]
ROBERT F. PERRY
[email]
BRUCE W. BABER (Pro Hac Vice)
[email]
[address, phone, fax]

KING & SPALDING LLP
DONALD F. ZIMMER, JR. - #112279
[email]
CHERYL A. SABNIS - #224323
[email]
[address, phone, fax]

IAN C. BALLON - #141819
[email]
HEATHER MEEKER - #172148
[email]
GREENBERG TRAURIG, LLP

Attorneys for Defendant
GOOGLE INC.

UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
SAN FRANCISCO DIVISION

_________________

ORACLE AMERICA, INC.,

Plaintiff,

v.

GOOGLE INC.,

Defendant.

___________________

Case No. CV 10-03561-WHA

GOOGLE’S PROPOSED
STATEMENT OF ISSUES
REGARDING COPYRIGHT

Date: April 16, 2011
Dept.: Courtroom 8, 19th Floor
Judge: Honorable William H. Alsup

Pursuant to the Court’s request (ECF No. 854), Google Inc. hereby provides its proposed statement of Oracle’s copyright infringement allegations:

Oracle accuses the following of copyright infringement:

1. 37 API packages in the Android class library source code, as well as the corresponding object code implementing those APIs, but only as to their selection, structure, and organization (it being conceded that the implementing source code and object code are different). Oracle claims that the tangible medium or media of expression in which the selection, structure and organization of the 37 APIs are fixed are electronic storage media and printed documentation.

2. The declarations of the API elements in Android class library source code and object code that implements the 37 API packages.

3. The English-language Android documentation for the 37 API packages, sometimes called the API “specifications.” Oracle alleges that approximately 103,400 lines in Google’s Android documentation were copied from Oracle’s Java API specifications.

4. The Android class library source and object code as derivative works of Oracle’s English-language documentation of the 37 API packages.

5. 12 Android files of source code (copied from 11 Java files):

a. The nine-line rangeCheck function and four lines of related comments in two Android source code files, TimSort.java and ComparableTimSort.java, as well as the corresponding object code. This method is part of Android’s implementation of the 37 API packages.

b. Eight Android source code files—AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java, PrincipalImpl.java, PolicyNodeImpl.java, AclEnumerator.java—which are not part of Android’s implementation of the 37 API packages.

c. Twenty English-language comments contained in two Android source code files, CodeSourceTest.java and CollectionCertStoreParametersTest.java, which are not part of Android’s implementation of the 37 API packages.

2

Oracle does not accuse the following of copyright infringement:
1. Android’s use of the Java programming language.

2. The names of the API elements, including the names of files, packages, classes, methods, fields, exceptions, and parameters.

3. The Android source code implementing the APIs contained in the 37 packages, with the exception of rangeCheck and the declarations of the API elements.

4. The ideas underlying the APIs.

5. The Dalvik virtual machine (not including the associated class libraries).

6. Android APIs and associated class libraries other than the accused 37 API packages and associated class libraries.

7. Android source and object code except as listed above.

3

Dated: April 12, 2011

KEKER & VAN NEST LLP

By: Robert Van Nest
[Attorney Name]

[See PDF for lawyer list.]

4


  


Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj | 344 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Corrections Thread
Authored by: MDT on Friday, April 13 2012 @ 03:14 PM EDT
Please put in what is wrong, and it's nice to give a suggested fix.

---
MDT

[ Reply to This | # ]

Off Topic Threads
Authored by: MDT on Friday, April 13 2012 @ 03:16 PM EDT
Please provide a clicky if you have a link, it's not hard (example below)

<a href="www.example.com">Like This</a>

---
MDT

[ Reply to This | # ]

News Picks
Authored by: MDT on Friday, April 13 2012 @ 03:17 PM EDT
Comments on stories that made the news picks listing.

---
MDT

[ Reply to This | # ]

Comes Materials
Authored by: MDT on Friday, April 13 2012 @ 03:18 PM EDT
Comes related materials here please, thanks.

---
MDT

[ Reply to This | # ]

Postscript
Authored by: rsteinmetz70112 on Friday, April 13 2012 @ 03:28 PM EDT
As far as I can recall Adobe has never sued anyone who built a unlicensed
Postscript interpreter and they have been around a long time. I think HP even
developed one and put it into some of their printers. Then they are the open
source versions such as Ghostscript.



---
Rsteinmetz - IANAL therefore my opinions are illegal.

"I could be wrong now, but I don't think so."
Randy Newman - The Title Theme from Monk

[ Reply to This | # ]

"Create New Law"
Authored by: Anonymous on Friday, April 13 2012 @ 03:32 PM EDT
Forgive me if I am wrong, but I thought the rule was if there was no law
covering it, it wasn't against the law.

So, if copyright doesn't state that a language can be covered by copyright, then
a language isn't protected by copyright.

Otherwise, in criminal cases, a police officer would be able to arrest (and the
court could convict) a person for being too loud, even if there is no noise
ordinance - simply because he believes there should be. (believe it or not,
there are areas that have no noise ordinance)

[ Reply to This | # ]

very simply wrong
Authored by: designerfx on Friday, April 13 2012 @ 03:35 PM EDT
debating for programming languages to be copyrighted is like
saying that a hammer should be copyrighted for what you can do
with it.

It's treating it as if it's a completed work, and not simply a
tool in the process.

[ Reply to This | # ]

Creating new law
Authored by: Anonymous on Friday, April 13 2012 @ 03:43 PM EDT
My personal impression of this judge is that he is going to decline to go there.
If Oracle's going to win on this, it will have to do so in appeals court.

MSS2

[ Reply to This | # ]

Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: PolR on Friday, April 13 2012 @ 03:43 PM EDT
If programming languages are copyrightable when developing a new language
inspired from an existing language a derivative work? Is C++ a derivative of C?
Perhaps Ritchie and Bell Labs may sue Oracle for developing the Java language
which is a derivative of C.

Oracle is bringing up a scary proposition. If this passes, I expect it to block
innovation in the development of new programming languages.

I start to think this issue is not about Java, infringement and monetary
damages. It is about redefining the law as applied to software to block anyone
who is not a deep pocket multinational from innovating.

[ Reply to This | # ]

A touch of BSF
Authored by: Anonymous on Friday, April 13 2012 @ 03:49 PM EDT

4. Oracle had many choices for what elements and names to include in the APIs. Other than a few classes, Oracle was not required to include any particular element or name.
In the SCOG case, they talked as though they were the very authors as well.

Pretending that none came before.

It'll be interesting to see them claim Mr. Schwartz's deposition doesn't count for anything because he never worked for Oracle. I say that only half-jokingly... I wouldn't at all be surprised to see BSF actually try and argue that.

RAS

[ Reply to This | # ]

On copyrightability on programming languages
Authored by: SLi on Friday, April 13 2012 @ 03:50 PM EDT

I've frankly always been a bit surprised (of the claim, which I've taken as a fact) that you cannot copyright a programming language. Designing such a language seems to involve a large amount of similar stylistic and nonobvious problems that writing a nontrivial program in any programming language does.

Still, I very much hope that Google is right about this. And indeed it seems to me that Oracle has conceded that you really cannot copyright a language, even if they keep claiming you can copyright an API. In fact it seems to me that if either is copyrightable, then the core language should be and not the APIs.

Obviously what could be copyrightable is not the ideas behind the core language either -- only the particular choice of features, especially stylistic ones like what comment characters to use, whether to prefer one-line (end-of-line) comments or comment blocks, the choice of some nonobvious keywords etc., none of these trivial matters separately (like few individual sentences would be copyrightable in a typical school text book), but taken together, I cannot see why not... Or rather, it's somewhat hard see why they should have different copyrightability than computer programs.

Yet I believe copyrightable programming languages would lead to rather nasty practical problems, especially for open source, but also for computing in general. It would force everyone to roll their own, incompatible languages (similar to what Oracle is trying to do here with patents). I think compatibility of programs written in a particular language might be the best argument for why languages should not be copyrightable, but if the only thing we look at is the amount of expression that goes into a design of a language, I find it hard to argue against them being quite rich in expression while programs themselves are considered expressive enough to merit copyright protection.

Yet another way to look at this is that it could be said that I'm not convinced that computer programs are expressive enough that they should have copyright protection, if we take as an axiom that only rich enough expression should merit copyright protection. But I view law as a tool, not as an end. Copyright protection (or any like protection, whatever it would be called) for computer programs seems to be generally a good thing in practice (in my opinion); arguing about it on basis of whether it's expression seems backwards to me. They should be copyrightable because them being copyrightable seems to be good (then that's for legislature, not for the courts to decide).

[ Reply to This | # ]

Computer Languages Should Not Be Copyrightable
Authored by: jbb on Friday, April 13 2012 @ 03:53 PM EDT
I've already posted this at least twice but now that the issue of copyrighting computer languages is front and center, I'm posting it yet again.

Here is an article from the Harvard Journal of Law & Technology (42 page pdf) from 1997. This following excerpt starts on pdf page 31:

B. Computer Languages Should Not Be Copyrightable

The Copyright Act of 1976 does not directly address the copyrightability of computer languages. Computer languages should not be copyrightable subject matter for two reasons. First, language copyright is doctrinally suspect because that would provide copyright protection for expressions not yet fixed. If the author of a computer language sought to claim copyright protection of a computer language, either of two files would have to be covered: a list of all possible sentences in that language or an expression of its specification (i.e., a copy of the quadruple V, E, R, S) that fully describes the language [...] Although more practical, the second choice is problematic: the specification only tells us how to decide whether a given sentence is within the language and is not a fixation of the sentence itself.

[...] Second, even if language copyright were consistent with copyright principles, it would violate First Amendment principles. By authorizing protection for languages, the Act would be authorizing prior restraint of any expression in that language. If a programmer cannot lawfully include a copy of the grammar in a parser program, the parser cannot lawfully create expression in that language.

ISTM that computer languages (and APIs) are obviously building blocks from which new, original expressive works can be created. It would be a terrible disservice to society for the courts to rule these forms of expression can be protected by copyright.

---

Our job is to remind us that there are more contexts than the one that we’re in — the one that we think is reality.
-- Alan Kay

[ Reply to This | # ]

Summary: Oracle asks for the sky to see what it gets
Authored by: ftcsm on Friday, April 13 2012 @ 03:58 PM EDT
Oracle is clearly asking for the entire sky as they could
not get to prevail on anything important up to now.

Their strategy seems to be playing for the masses (and the
jury), do some real distracting dancing and hope to confuse
public opinion and the jury. I really think it's not a
winning strategy, not against Google at least. It would not
work with IBM or any of the big pockets: they can hire good
dancers too.

That said, Google will probably show the hand waiving that
Oracle is doing from the beginning of the suit, when they
were saying patents was the base for it and when it was
clear it would not work, now a completely new and improbable
copyright strategy is being tried.

It seems Google will have little trouble debunking that
strategy by asking Oracle what is really the merit of the
case since they are saying too many different things each
time they get asked what it is. And them present the SUN
position on Harmony and "non Java branded" implementations
of Java.

How can Oracle win other then hypnotizing the jurors?

Flavio

---

------
Faith moves mountains but I still prefer dynamite

[ Reply to This | # ]

  • Sega v. Accolade - Authored by: Anonymous on Saturday, April 14 2012 @ 02:44 PM EDT
Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: pythonista on Friday, April 13 2012 @ 04:24 PM EDT
There is a nice comment on Slashdo t about this:

The technical definition of the Java language is "the set of all Java programs".
This is an infinite set.
Therefore, it cannot be fixed in a tangible medium.
Therefore, it it is ineligible for copyright protection.

[ Reply to This | # ]

From Google #897 - How can Oracle ever refute this?
Authored by: Anonymous on Friday, April 13 2012 @ 04:27 PM EDT
Quote:
That these APIs are an uncopyrightable idea, system or method of operation
becomes clearer still when one focuses on precisely what Oracle claims is
copyrightable: the structure, selection and organization of the APIs. A set of
nonsensical APIs could be created that had exactly the same structure, selection
and organization as the Oracle APIs, but that did different things. For example,
the sqrt() method could always return zero—indeed, every method that returns a
number could always return zero, while those that return text could always
return the letter a, those that return true or false could always return true,
and so on, with a default result being used for every variable type. This set of
APIs would serve no useful purpose, but would have exactly the same structure,
selection and organization as the Oracle APIs. No reasonable jury could ever
conclude that the “expression” in this hypothetical set of APIs is substantially
similar to the “expression” in the Oracle APIs, notwithstanding the “copied”
structure, selection and organization. Thus, Oracle’s infringement theory fails
unless it accuses not just the structure, selection and organization, but also
the purpose of the APIs. In other words, Oracle’s infringement claim fails
unless it is allowed to copyright ideas, which it cannot do.

Quote:
Indeed, Oracle now—on the eve of trial—candidly states that it claims Google’s
implementing source code is a derivative work of Oracle’s English-language
descriptions because Google’s source code does the things that the English
descriptions describe.
....
That is nothing but an assertion that Google’s expression infringes Oracle’s
ideas.
....
While Oracle argues the “extremity” of Google’s position, the truly extreme
position would be to allow a party to devise a system (the Java language APIs),
and then enforce copyrights in descriptions of that system (Oracle’s
specifications) and implementations (expressions) of that system (Oracle’s
libraries) to preclude others from practicing the system.

[ Reply to This | # ]

Imagine the impact on the software industry!
Authored by: jbb on Friday, April 13 2012 @ 04:28 PM EDT
Unlike patents or trademarks, copyright protection happens automatically and instantly at the time of creation. In addition, copyright protection is almost everlasting. It certainly extends back to times before there even were computers or computer languages. So if Oracle prevails, every computer language ever created would be protected by copyright. What a shame it is that computers were not created before Mickey Mouse was.

Imagine what would happen if people suddenly found out that every computer language they had ever used was protected by copyright! Just figuring out which usages of computer languages were infringements would be a nightmare. Even if the courts wound up with the most lenient interpretation imaginable, that writing programs in a computer language was not infringement, there would still be earth shaking repercussions.

For example, GCC could be sued into the stone age. It could no longer be Free software because it would be infringing the copyrights of every language it can compile. Just figuring out which parts of GCC are infringing and which aren't could be a major conundrum. For example, if a lot of GCC is table driven (or easy to adapt to different languages) then the core GCC code might be considered an inducement to infringement because it makes it so easy for someone to create an infringing compiler. OTOH, if computer language copyright does not apply to compilers and it does not apply to programs written in the language then those copyrights are meaningless.

I have to wonder if this last-minute outlandish claim by Oracle is designed to gain some advantage by confusing and distracting everyone else right before the trial begins. I realized we have already been told many times that lawyers don't purposefully try to alienate judges, but it sure seems like Oracle is trying to jostle the elbow of Judge Alsup and get him make a ruling in anger in order to give them grounds for an appeal.

---

Our job is to remind us that there are more contexts than the one that we’re in — the one that we think is reality.
-- Alan Kay

[ Reply to This | # ]

API - de facto exclusion via fair use for reverse engineering?
Authored by: briand on Friday, April 13 2012 @ 04:37 PM EDT
If, as I understand it, reverse engineering is a protected activity where it
relates to interoperability of computer programs, isn't it trivial to show that
any API falls into the category of things necessary for interoperability?

Normally, reverse engineering is done from object code, and/or in a clean room.

But, when the interoperable system is available in source code format,
especially via GPL, reviewing that code in order to better engineer an
interoperable implementation, where the only elements in common are protected by
abstraction/filtration/comparison analysis as being subject to filtration, then
using the source and building a compatible system should be fair use.

If the only elements Oracle have to complain about are the API, and if the Java
language requires the namespace to be compatible for two different
implementations of a "java-like" Virtual Machine to be interoperable,
then the namespace itself would be necessary and thus filterable.

I think reverse engineering (which when you consider what Dalvik is doing --
supporting Java-language applications without use of Java itself) is all that is
happening, and that means there is no reasonable way *any* API can be
copyrightable, except perhaps if the language itself is copyrighted --
regardless of whether the API is part of the language or not.

The question of whether the source code for the implementation of the API
itself, coincides syntactically with the original implementation is irrelevant.
The fact is that the structure of the API, not the source, defines what the API
is. And that is required to be identical for interoperability reasons.

If the source happens to match, that is actually either irrelevant or perhaps
expected. For the structure to match, there are a very small number of ways the
structure can be implemented from a source code perspective, and that does not
(IMHO) satisfy any kind of creativity test. It is functional, not expressive.

My only hope for this is, that the correct precedent is set, so no future
attempts are made by anyone to interfere with compatibility via API
"copyright" claims.

briand

[ Reply to This | # ]

Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: Anonymous on Friday, April 13 2012 @ 04:46 PM EDT
If I understand Oracle's position correctly, they are
asserting copyright on the actual Java language. As a
computer science major, can't imagine how anyone with a
technical background could argue this. Most computer
languages use identical or very similar function calls and
algorithms. If I were to write a simple program in C++ and
Java for example, 90% may be identical. By Oracle's logic,
they would in fact be violating the copyrights of various
C++, C, and Fortran developers who contributed to these
languages long before Java was conceived of. Continuing
further, Java and its Virtual Machine convert the higher-
level language into more basic machine level languages (each
with their own APIs) which would presumably be under the
copyright of various hardware manufacturers. And beyond
that, the structure and algorithms for storing data in
memory and on hard disks has been developed over decades by
companies which would then have their own copyrights to
these methods. It's not as if Java was created in a vacuum.
Consistency of interfaces and public APIs are a top priority
within software design.

Now specific implementations of a program are written may be
subject to copyright since the combination of a program's
design and calculations are not necessarily obvious.

This issue is quite analogous to real spoken languages.
Imagine if someone for example claimed a copyright over the
English language. English, like most languages, contains
aspects of many languages that came before it. It is a
collage of various Anglo-Saxon, Germanic, Latin, Native
American, and some completely original words. Oracle's Java
compiler in this case would be like a dictionary. Oracle can
copyright their compiler because it contains a unique and
elaborate combination of algorithms that transfer high-level
language into lower-level ones. They cannot, however, claim
copyright over the individual words themselves or their
functional meanings. And if another company wishes to build
their own dictionary (compiler) they are free to do so as
long as they are not directly copying from Oracle. In
Google's case, they built their own compiler from scratch
without taking code from Oracle's compiler. There may be
similarities, because the two compilers are accomplishing
the same goal, but they are distinct and unique products.

[ Reply to This | # ]

Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: Keith on Friday, April 13 2012 @ 04:47 PM EDT
If I understand Oracle's position correctly, they are
asserting copyright on the actual Java language. As a
computer science major, can't imagine how anyone with a
technical background could argue this. Most computer
languages use identical or very similar function calls and
algorithms. If I were to write a simple program in C++ and
Java for example, 90% may be identical. By Oracle's logic,
they would in fact be violating the copyrights of various
C++, C, and Fortran developers who contributed to these
languages long before Java was conceived of. Continuing
further, Java and its Virtual Machine convert the higher-
level language into more basic machine level languages (each
with their own APIs) which would presumably be under the
copyright of various hardware manufacturers. And beyond
that, the structure and algorithms for storing data in
memory and on hard disks has been developed over decades by
companies which would then have their own copyrights to
these methods. It's not as if Java was created in a vacuum.
Consistency of interfaces and public APIs are a top priority
within software design.

Now specific implementations of a program are written may be
subject to copyright since the combination of a program's
design and calculations are not necessarily obvious.

This issue is quite analogous to real spoken languages.
Imagine if someone for example claimed a copyright over the
English language. English, like most languages, contains
aspects of many languages that came before it. It is a
collage of various Anglo-Saxon, Germanic, Latin, Native
American, and some completely original words. Oracle's Java
compiler in this case would be like a dictionary. Oracle can
copyright their compiler because it contains a unique and
elaborate combination of algorithms that transfer high-level
language into lower-level ones. They cannot, however, claim
copyright over the individual words themselves or their
functional meanings. And if another company wishes to build
their own dictionary (compiler) they are free to do so as
long as they are not directly copying from Oracle. In
Google's case, they built their own compiler from scratch
without taking code from Oracle's compiler. There may be
similarities, because the two compilers are accomplishing
the same goal, but they are distinct and unique products.

[ Reply to This | # ]

Make android compatible?
Authored by: Anonymous on Friday, April 13 2012 @ 05:12 PM EDT
and make Android compatible with the rest of Java
The obvious analogy here is that Ford sues GM alleging that GM's cars look just like Ford's, but you can't put a Ford-build steering wheel on the GM car.

AFAICT, Android (a complete platform, including a Dalvik VM) as not even closely analogous to Java (tm) (a language and VM, not an OS and doesn't include all the other apps), in the same way as linux (a kernel & drivers) is not the same as FreeBSD (a complete OS, including kernel, drivers, and user programs).

[ Reply to This | # ]

Who has the better researchers?
Authored by: Laomedon on Friday, April 13 2012 @ 05:19 PM EDT
Judge Alsup asked [874]:

In addition, each side shall include whether it has ever taken an inconsistent position before any other court or agency, including the PTO, and if so, append those inconsistent statements.

From Oracle's brief [900]:
As demonstrated above, the best view of U.S. copyright law is that an original and creative computer language is subject to copyright protection as an "original work[] of authorship." 17 U.S.C. § 102. As far as Oracle has been able to determine, neither Oracle nor Sun has taken a contrary position on the copyrightability of computer languages.
From Google's brief [897]:
Google notes that Sun (now known as Oracle America) organized, formed and led the American Committee for Interoperable Systems ("ACIS"), the chairperson of which was Sun’s Deputy General Counsel, Peter M.C. Choy. [...] Mr. Choy was also counsel of record for an ACIS amicus brief filed with the Supreme Court, urging the Court to affirm the First Circuit’s judgment that the Lotus menu hierarchy was not copyrightable. ACIS argued that "[t]he decisive issue in [the Lotus] case is whether copyright law can protect the rules that enable two elements of a computer system to work together." 1995 WL 728487, at *3. ACIS further argued:

The 1-2-3 command structure is more than a user interface; it is the interface
between the Lotus program and programs referred to as "macros" - that are
written by users at their own considerable expense for execution in connection
with the 1-2-3 program. Because the 1-2-3 command structure provides the
template for the macros
and because the macros are the key to compatibility, the
First Circuit, consistent with holdings in other circuits, ruled that those elements
necessary to macro compatibility are not protected by copyright. Id. (emphases added).

Thus, while not directly taking a position on whether programming languages can be copyrighted, the brief implies that they cannot.


Not surprisingly, Google wins!

[ Reply to This | # ]

Oracle is trying to steal Android . . .
Authored by: Anonymous on Friday, April 13 2012 @ 05:21 PM EDT

. . . the same way SCO tried to steal Linux. They are thieves.

[ Reply to This | # ]

Oracle trying to confuse the Russians?
Authored by: Anonymous on Friday, April 13 2012 @ 05:25 PM EDT
Who is Oracle trying to confuse?

The Law is actually very clear on all of this, there is very
little room for interpretation.

What Oracle has been expert at is making very unreasonable
claims, this started with their damages claims (which got
thrown out) and now it is continuing along the same lines of
unreasonableness with the rest of their claims.

Hopefully the Judge will put an end to it, he is not easily
fooled anymore by Oracle I think.

[ Reply to This | # ]

Deliberate confusation
Authored by: Anonymous on Friday, April 13 2012 @ 05:30 PM EDT
I think there is a bit of deliberate confusing of the two
meanings of 'API' in the Oracle document.

API stands for Application Programming Interface. In the
meaning of it being an interface, there really is not much
room to argue that things like the string are not a part of
the language. In fact this page:
http://docs.oracle.com/javase/tutorial/java/data/strings.htm
l
says
<blockquote>Strings, which are widely used in Java
programming, are a sequence of characters. In the Java
programming language, strings are objects.

The Java platform provides the String class to create and
manipulate strings.</blockquote>

It just so happens that that class is in an API -
java.lang.Object.

So Oracle would be arguing that the Java programming
language is free for anyone to use, but not if they use
strings in the way that everyone else who writes Java
programs uses strings. Do they really want to split the
language? Because that's going to be the effect if
java.lang.Object is not free for use.

The other meaning of API is the actual implementation of the
interface: the code that runs when you call an API, and in
the Oracle document there's some deliberate confusing of
that issue...
<blockquote>
Trying to implement all API elements as part of the Java
language would require a heavyweight Java Virtual Machine
capable of implementing every part of their functionality
regardless of the device. In addition, the same API may
provide different functions on different device form
factors, and making every API part of the base language
would make this impossible. The solution instead is to
select, develop, and specify different sets of APIs suitable
for different environments.
</blockquote>

Lastly, the repeated emphasis on "selection, arrangement and
structure" - does US law lets you copyright a database as a
whole? A database made up of facts. Like the phone book. It
strikes me that this wording is very much aimed at
identifying an API in its original sense with that idea.

But to my mind the idea that you select and arrange an API
when you make it is odd. If you are going to operate on
strings, then you need a few basic operations and everything
else can be built from them. For instance, you need to be
able to concatenate strings. The name that you call the
concatenation operation is arbitrary, but it's useful to
call it something obvious, like 'concat' or '+' or '.' or
'join' or 'concatenate'. And given that you need to
concatenate at least two things, there are only a limited
number of ways to express it: 'a concatenate b', or 'a b
concatenate' or 'concatenate a b'. There might be some
language sugar included too - brackets, object operator
token, end of line token. But once you've made those
decisions, there is no other sensible way to write code that
depends on the concatenate operation.

There is a very tiny amount of wriggle room: concatenate
takes two operators, but the semantics of what it does are
important. Does it create a new string? Does it concatenate
the first string to the secong? Or vice versa? In the
concatenate example, the names and order of the parameters a
and b don't mean much. But in other examples the names and
order can tell you about the semantics - for instance
'divide(numerator, denominator)' would give you a very
different answer depending on whether you call divide(10,2)
or divide(2,10), and the names tell you a huge amount about
the semantics. While it would be work to _implement_ an API
which didn't match the names of the parameters - e.g.
divide(red,blue) - the choice of using nominator and
denominator is one of very few sensible alternatives. And
the order of the two is fixed if we want our implementation
of divide to interoperate with software which uses divide.

The point of all of that is that, to my mind, the argument
that selection and arrangement is creative is avoiding the
issue: while it has some elements of creativity (after all,
I chose the parameter order 'nominator, denominator' and not
'denominator, nominator', and I chose the word 'concatenate'
over 'concat', there is no way that anybody could replace my
implementation of the API without using the word
'concatenate' to indicate the same functionality, and the
same order of parameters 'denominator, nominator'.

I do think that there is an element of creativity there, but
it strains my credulity to think that the element of
creativity should allow me to block your attempts to improve
on my work by replacing my implementation of concatenate
with your one that is better in terms of memory, speed, or
at operating in a particular environment.

Not sure why I wrote this essay/tutorial now. But I may as
well press Submit now that it's written. Maybe someone will
find it useful.

[ Reply to This | # ]

Google's API brief is brilliant
Authored by: jbb on Friday, April 13 2012 @ 05:38 PM EDT
I realize the ridiculous claims in Oracle's brief on the APIs is causing quite a sensation but IMO the focus deserves to be on Google's brilliant API brief (14-page pdf). There is a theme that runs through the entire brief: Oracle is trying to protect the unprotectable.

Google's brief is a home run and they touched all the bases. They explain why computer languages cannot be copyrighted and then they segue into explaining how APIs are extensions to programming languages and thus cannot be copyrighted. They also explain how an API is an uncopyrightable idea or system.

They use a brilliant example of a new set of APIs that have exactly the same "structure, selection, and organization" as the Oracle APIs but every one returns a default answer: numbers are always 0 (zero), strings are always "a" and booleans are always true. They say that Oracle is claiming such a dummy API would violate their copyright based solely on the "structure, selection, and organization" even though the functionality is totally different! This is absurd. It show that what Oracle is really trying to protect is the functionality which is unprotectable.

Oracle also claimed that Google's source code violates the copyright of Oracle's descriptions in the API specifications. Google explains that this is an obvious attempt to assert copyright over an idea rather than the expression of that idea.

The entire brief is brilliant. Summarizing it has to leave out good bits. Google even uses the "hello world" program as an example of how the Java APIs are a fundamental part of the Java language. They say Java would be "deaf, dumb, and blind" without the APIs. The entire brief is only 14 pages. I encourage everyone to read it.

---

Our job is to remind us that there are more contexts than the one that we’re in — the one that we think is reality.
-- Alan Kay

[ Reply to This | # ]

Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: Tin Britches on Friday, April 13 2012 @ 05:40 PM EDT

"even if it [Oracle] has to ask the court to make new law "

Courts are not supposed to MAKE law. To do so would be
to BREAK the law.

[ Reply to This | # ]

Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: Anonymous on Friday, April 13 2012 @ 06:19 PM EDT
If Oracle's theory is correct, then I expect that there are a
bunch of people who'd like to talk to Oracle. It's not as if
the Java class libraries came into being woosh! without any
influences at all.
Similarities between Java class libraries and C libraries
anyone?
The Smalltalk guys might want to have a chat - they had
pretty big OO class library way before Java was a bud.

I'd be massively surprised if we found no correspondences.

[ Reply to This | # ]

This is just like the SCO case...
Authored by: Anonymous on Friday, April 13 2012 @ 07:06 PM EDT
In the SCO case: we want to sue people, but we don't have the rights to
do so, and they've done nothing wrong. Please give us the rights to do
so anyway...

In the Oracle case: We want to sue people, but we don't have the rights
to do so, and they've done nothing wrong. Please give us the rights to
do so anyway...

Is this the beginning of the end? Ridiculous people!

[ Reply to This | # ]

JavaDoc
Authored by: Anonymous on Friday, April 13 2012 @ 07:42 PM EDT
I just realized. Sun used JavaDoc to generate the API documentation. I'm sure
Google did the same. Of course it's going to look like Google copied the
documentation. Huge portions of documentation will have been auto-generated by
the same program.

If Google looses, they should sue Oracle for contributory copyright infringement
for publishing javadoc. They can use the RIAA theories and sue for
approximately 1000 times what they loose.

[ Reply to This | # ]

SQL
Authored by: YurtGuppy on Friday, April 13 2012 @ 08:22 PM EDT
If computer languages are copyrightable, who owns SQL?

I'd like to see Oracle's license.







---
a small fish in an even smaller pond

[ Reply to This | # ]

  • SQL - Authored by: JonCB on Saturday, April 14 2012 @ 07:18 AM EDT
  • SQL - Authored by: sumnerp on Saturday, April 14 2012 @ 07:25 AM EDT
Oracle and Google Debate: Can You Copyright Computer Languages, APIs ~ pj
Authored by: Anonymous on Friday, April 13 2012 @ 08:48 PM EDT
I am sure Boies will be as successful for Oracle as he was for Al Gore.

[ Reply to This | # ]

Violating Dante's copyright?
Authored by: clemenstimpler on Friday, April 13 2012 @ 11:04 PM EDT
Dante's "Divine Comedy" is composed of 14,233 lines that are divided into three cantiche: Inferno (Hell), Purgatorio (Purgatory), and Paradiso (Paradise), each again consisting of 33 canti. I write a poem that is composed of 14,233 lines, describing inferno, purgatorio, and paradiso, distributing canti like Dante did. I state explicitly that I share Dante's overall goal of making my readers better Christians and that I want to imitate the steps he took to achieve that goal. For each and every part of Dante's poem, I ask myself: "What does the poet want to achieve here?" I translate that aim into contemporary language and metaphors. I mimick as closely as I can "structure, selection and organization" of the original poem. Should Dante sue me?

[ Reply to This | # ]

Copyright a language
Authored by: kawabago on Saturday, April 14 2012 @ 03:38 AM EDT
Copyright protects the expression not the words. If you make
words up you only own them if you trade mark them. The word
muggle for example. J.K. Rowling made it up but now anyone
can use it and in fact it is entering common usage. (If you
don't know what it means then you are one.)
Someone made a lexicon of all the new and unusual words
Rowling created and that was an infringement of her
copyright because it included everything she created so it
was not a fair use. Oracle is over reaching and the cliff
edge it's standing on is crumbling. You'd think a company
called Oracle would be able to see that jumping up and down
yelling Mine! Mine! Mine! Mine! Mine! in world that is
learning to share isn't going to go very far. They might
win the battle but they'll lose the war.

[ Reply to This | # ]

Danger, Will Robinson, auto analogy, ahead
Authored by: Ian Al on Saturday, April 14 2012 @ 04:48 AM EDT
This comment is about patents on language so it really, really is on topic.

Python permits object oriented programming as an option. Object oriented programming is the combination of objects from different classes to form more complex objects.

The root of the Universe set of classes is objects of the Universe. All other classes depend from it. It reminds me of the joke about the guy who kept going to the window and shouting 'green side up'. When asked about this, he explained that he had hired a gang of Irish turfers. So, it is not only programmers that put the root at the top.

The first level of classes in the objects of the Universe set of classes are animal, vegetable and mineral. All objects in the Universe are in one of those three classes. Ah, I hear you say, there are sets of objects that are neither animal nor vegetable. That's the thing about classes, they are abstract concepts or ideas. If you own the set of classes, you can define your own abstract ideas of classes of the Universe, and put your objects in your own classes.

In my mineral class I am putting the sub-classes of enclosure and rests. In enclosure I put the objects room and cage and, in rests, the object perch. In my animal class I put cat, dog, elephant and the dead parrot class. In the dead parrot class, I put the Norwegian Blue (lovely plumage, the Norwegian Blue).

I leave the elephant in the room for later.

cage ((Norwegian Blue) nailed_to (perch))

Using the operator 'nailed_to', we get the complex object, 'Norwegian Blue nailed_to perch, in cage'.

There cannot be duplicate classes, there can only be duplicate objects because the class that the object is in is an abstract concept. Looking at the parrot in the cage does not show the classes of the component objects. They can be reclassified only if the abstract concept of the original classes is known to the observer.

The Oracle patented optimisation inventions detect duplicate classes in class files and remove the duplicates or replace the class instructions with one other class instruction. Since it is not possible to have a file of abstract ideas, the classes in the patents must be something other than classes in object orientated programming.

Object oriented programs are usually interpreted. The objects are translated into machine code instructions at run time. That can, of course, be in a Virtual Machine like the Java Runtime Environment or Dalvik. The Java language is 'compiled' into 'class files'. These are executable in the JRE. The Java 'classes' can still be observed in 'compiled' class files. Otherwise, the duplicate 'classes' in the 'class files' could not be detected and removed by a second complilation.

I remember someone mentioning a Java alternative to the Dalvik obtimiser, but my research only uncovered the following:
When I researched this, many sites are saying that the compiler makers are avoiding optimization in the compiler as the JIT takes care of much of it.

However, javac does some good optimizations better than most of the others like Visualage and so forth (who do no optimizations).

It's just that lately, the -O option isn't mentioned much and you can't optimize and debug at the same time (-g turns optimization off).

Hence, I'm assuming that when you set your build configuration to release, it turns -g off and -O on....I hope....:-)
It seems appropriate to use a math term. 'By inspection' it is seen that the 'classes' and 'compilation' in the patents are a particular feature of the Java language and are not standard terms of the programming art. It's a pity we did not pick up on this before claims construction.

My patented, better, automatic gearbox uses the abstract concept of gear classes. The standard box suits any auto, but it is best optimised using my patented tool. For lower performance vehicles some of the gear classes are duplicates. The screws holding in the gear classes don't have a slot or a cross to drive them, but have a shape in the form of a scull and cross bones that only my patented, optimisation tool, fits.

Nobody else is allowed to make or use a tool like my patented tool without a licence. It is not better than any other screwdriver and it does not work on anyone else's screws, but it must be used on my gearbox and any alternative toolmaker must pay me licence money for the equivalent tool.

Obviously, my tool is really, really useful because of the way I have made my patented gearbox. The USPTO found no prior art with the drive socket in the shape of the scull and cross bones and awarded me the patent.

The patent is invalid, because it is not a generally useful invention and because the only 'innovation' is its anti-competitive design. It does not otherwise contain an innovative concept.

br

---
Regards
Ian Al
Software Patents: It's the disclosed functions in the patent, stupid!

[ Reply to This | # ]

Googles Proposal, only 3&5 matter
Authored by: Anonymous on Saturday, April 14 2012 @ 08:17 AM EDT
the rest is clearly nonsense

9/11/12/8 copied lines of source/files and substantially less than 100,000 lines
copied from one website to another, is not worth billions of dollars in any
universe.

As for the actual 100,000 number itself, setting aside Oracles own admission
that it's basically a guess, so is probably substantially lower, abstraction and
filtration analysis will kill most of the rest.

All Oracle has is smoke and mirrors.

[ Reply to This | # ]

APIs as collections/groups
Authored by: Anonymous on Saturday, April 14 2012 @ 09:53 AM EDT
I'd like to see more precision in the use of the term _API_.
An API is a _collection_, a group--of methods, among possibly
other things, like documentation files. Each method in an API
is not "an API". If an API includes 27 methods, there are not
"27 APIs". There's _one_ API that comprises 27 methods.

[ Reply to This | # ]

What Language is used to implement the Java APIs?
Authored by: Anonymous on Saturday, April 14 2012 @ 12:23 PM EDT
An argument is being made that the APIs are an essential component of the Java
language and they are necessary to perform even the simplest interactions with
the outside world such as in the "Hello, World" example program.

However, if all of the Java APIs are written in the Java language, then it
should be possible to write any program without the use of the standard APIs by
implementing the same low-level functionality in the bare Java language. If
this is true, the APIs represent a convenience to the user and not a necessary
component.

For example, C language programmers use functions like printf() which are
provided in the C standard library. However, the printf() function itself is
implemented in the C language. The C standard library is a convenience.

I don't know if this affects the question of copyrightability with regard to a
standard language API, but it does question whether the APIs are part of the
language.

[ Reply to This | # ]

Can you find the subtle insult?
Authored by: cpeterson on Saturday, April 14 2012 @ 02:33 PM EDT
Oracle thus stands as an exception to the Supreme Court’s statement that “no one would contend that the copyright of the treatise would give the exclusive right to the art or manufacture described therein.” Baker, 101 U.S. at 102.

SCOTUS created a class which excepted everyone (based, naturally, on the common, but here omitted, disclaimer "in their right mind"); and now Google excepts Oracle from the exception.

I almost fell off my seat on the train.

[ Reply to This | # ]

The answer is simple
Authored by: Anonymous on Monday, April 16 2012 @ 04:54 PM EDT
You can copyright a book. A dictionary is a book and can be copyrighted. You
can copyright a programming language. JAVA is a programming language and can be
copyrighted. You can right another book using a copyrighted dictionary and
copyright it separately. The new book can even be a dictionary as long as it is
not substantially copied from the first. You can write a copyrighted program
using JAVA. What you can't do under copyright is make a copy of JAVA without
permission. Google did not copy JAVA, they did a "clean room"
implementation of their own language that serves the same function as JAVA. The
APIs are not a substantive part of the entire JAVA language. :)

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )