|
Oracle v. Google - Copyright Reply Briefs ~mw |
 |
Friday, May 25 2012 @ 08:45 AM EDT
|
The parties have each responded to the latest copyright brief on the other with respect to, what we can only hope, are the final questions from Judge Alsup before he rules on the issue of copyright protection of APIs. In its reply (1198 [PDF; Text]) Google argues that Oracle has the compatibility argument all wrong. The compatibility Google is talking about is with the Java language, not J2SE. As for the compatibility to which Oracle refers, Google states:
Indeed, Oracle has itself benefitted from the compatibility between the J2SE and Android
platforms. For example, Oracle admitted that it accepted Google’s contribution of Josh Bloch’s
TimSort.java and ComparableTimSort.java source code and incorporated it into Oracle’s
OpenJDK 7, which is the current Oracle release of J2SE.
Google also sees Sony v. Connectix as directly supporting its position, a view which, not surprisingly, Oracle does not share.
Oracle (1197 [PDF; Text]) returns to its interoperability argument. However, as we pointed out yesterday, this same interoperability issue exists between the many different Java platforms (J2SE, J2ME, ...).
In the end, nothing to get too excited about in either of these briefs.
************
Docket
05/24/2012 - 1194 - Transcript of Proceedings held on May 23, 2012,
before Judge William H. Alsup. Court Reporter/Transcriber Katherine
Powell Sullivan, RPR, CRR, CSR, Telephone number 415-794-6659/
Katherine_Sullivan@cand.uscourts.gov. Per General Order No. 59 and
Judicial Conference policy, this transcript may be viewed only at the
Clerks Office public terminal or may be purchased through the Court
Reporter/Transcriber until the deadline for the Release of Transcript
Restriction.After that date it may be obtained through PACER. Any
Notice of Intent to Request Redaction, if required, is due no later
than 5 business days from date of this filing. Redaction Request due
6/14/2012. Redacted Transcript Deadline set for 6/25/2012. Release of
Transcript Restriction set for 8/22/2012. (Sullivan, Katherine) (Filed
on 5/24/2012) (Entered: 05/24/2012)
05/24/2012 - 1195 -
Exhibit List Joint List of Admitted Trial Exhibits - Phase 1 by Oracle
America, Inc... (Jacobs, Michael) (Filed on 5/24/2012) (Entered:
05/24/2012)
05/24/2012 - 1196 -
Exhibit List Joint List of Admitted Trial Exhibits - Phase 2 by Oracle
America, Inc... (Jacobs, Michael) (Filed on 5/24/2012) (Entered:
05/24/2012)
05/24/2012 - 1197 - Brief
re 1192 Trial Brief Oracle's May 24, 2012 Copyright Reply Brief filed
byOracle America, Inc.. (Related document(s) 1192 ) (Jacobs, Michael)
(Filed on 5/24/2012) (Entered: 05/24/2012)
05/24/2012 - 1198 - TRIAL
BRIEF Google's May 24, 2012 Copyright Liability Trial Brief by Google
Inc.. (Attachments: # 1 Exhibit A,
# 2 Exhibit
B)(Van Nest, Robert) (Filed on 5/24/2012) (Entered: 05/24/2012)
************
Documents
1197
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 telephone fax]
BOIES, SCHILLER & FLEXNER LLP
DAVID BOIES (Admitted Pro Hac Vice)
[email address telephone fax]
STEVEN C. HOLTZMAN (Bar No. 144177)
[email address telephone fax]
ORACLE CORPORATION
DORIAN DALEY (Bar No. 129049)
[email]
DEBORAH K. MILLER (Bar No. 95527)
[email]
MATTHEW M. SARBORARIA (Bar No. 211600)
[email address telephone 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 MAY 24, 2012
COPYRIGHT REPLY BRIEF
Dept.: Courtroom 8, 19th Floor
Judge: Honorable William H. Alsup
Android is not interoperable with Java. Java applications cannot run on Android.
Android applications cannot run on Java. This was intentional. Google did not want an
interoperable platform and offers no proof it set out to create one. Google took only what it
wanted, hijacking the Java developers by using their familiarity with the Java APIs to get them to
program for Android. Google’s “compatibility” claim is not supported by the law or the facts.
I. INTERFACES AND EXCEPTIONS
The parties agree that Android Froyo includes 158 of the 171 interfaces from the 37 API
packages in J2SE 5.0. ECF No. 1192 at 1. This illustrates not just the extent of Google’s
copying, but also that Google selected the interfaces it wanted to copy. Google’s failure to
implement all of the interfaces puts the lie to Google’s claim that “the public interfaces in the 37
API packages are functionally required for compatibility with the APIs in those packages.” Id. at
3. Google’s copying served its own business goals and was not compelled by any compatibility
requirement, functional or otherwise. In fact, Google deliberately chose not to be compatible.
Google’s example of the Comparable interface demonstrates this as well. The Java
programming language does not require a Comparable interface (TX 1062), and it did not exist in
Java before version 1.2 (ECF No. 1192-3 at line 79), so Google did not have to copy it. In J2SE,
50 classes in a variety of packages implement the Comparable interface. Android copies this
same structure, but omits a few of the 50 classes. For example, the classes CompositeName and
CompoundName from the javax.naming API package each implement Comparable, but Android
does not include that package. See TX 610.2 at docsapijavalangComparable.html.
The parties count different numbers of exceptions, but they agree Google copied over
1250 throws clauses. See ECF No. 1192 at 1. Oracle’s exception count shows Google again
copied almost all, but not all, of the throws clauses exactly, further confirming that compatibility
requirements did not drive its extensive copying. Google gives the example of the
FileNotFoundException, which is not required by the Java programming language (TX 1062), but
was included in Android anyway. Google failed to include other exceptions defined in J2SE 5.0,
such as RefreshFailedException, which is part of Java’s API package javax.security.auth but not
1
Android’s version of the package. Compare TX 610.2 at docsapijavaxsecurityauthpackagesummary.
html with TX 767 at javaxsecurityauthpackage-summary.html.
II. ANDROID AND JAVA ARE NOT INTEROPERABLE
Android is not interoperable with Java. Surely it is a huge red flag that in response to the
Court’s questions about interoperability, Google resorts to claiming Android is “compatible with
the skills and expectations of Java language programmers.” ECF No. 1192 at 7.
Google states there is no quantitative data in the record showing the extent to which
applications written for one platform will run on the other. Id. at 5. Actually, there is. The
testimony of both parties’ experts is 0%. See ECF No. 1191 at 4-5. Google could not identify a
single application at trial or in its brief that can run on both platforms. But the record contains
plenty of evidence of simple applications that will not run on both platforms because Google left
out many Java API packages, apparently in favor of its own “better” APIs. See id. at 3-7.
Google can point only to the short piece of code Dr. Astrachan wrote at trial, and his
testimony that “For those 37 packages, the code that I write on one platform will run on the other
platform.” ECF No. 1192 at 5. As discussed in Oracle’s opening brief, even this is not true, as
Dr. Astrachan himself admitted. See ECF No. 1191 at 3-6. Moreover, Google presented no
evidence at trial that its selective API copying will allow the reuse of a significant number of such
code fragments. It cites only to Dan Bornstein’s vague statement that “there’s a lot source code
out there that wasn’t—you know, wasn’t written by—well, that was written by lots of people that
already existed that could potentially work just fine on Android.” ECF No. 1192 at 6. Google
now claims it selective copying “reduced the effort required to ‘port’ an application” from Java to
Android in a way that is “similar” to what is necessary to port an application from one Java
platform to another. Id. But the record contains no evidence at all of the effort required to port
code from one Java platform to another, or how that compares with porting code from Java to
Android. Google’s quotation from Dr. Reinhold has nothing to do with this point. See id.
Google fails to identify any evidence in the record that its copying motive was
interoperability. Google cites to only two things. The first is Dan Bornstein’s testimony that the
goal was not to create interoperability but only to “provide something that was familiar to
2
developers.” ECF 1192 at 7 (quoting RT 1783:19-21 (Bornstein)). Mr. Bornstein confirms
immediately before and after this sentence that it was not a goal to implement all of the packages
in any Java platform. See RT 1783:15-22 (Bornstein). Google also cites the Noser statement of
work, which it quotes as stating Google “was ‘interested in compatibility with J2SE 1.5…..’”
ECF No. 1192 at 7 (emphasis in original). But the document requires Noser to provide only a
subset of packages, and makes clear Google never intended to fully implement even those, stating
Google will deliver “a ‘detailed minimum list of methods and classes to be implemented.’”
TX 2765 at 21-22. Google wanted to capture Java developers, not achieve interoperability.
III. GOOGLE DISTORTS THE NINTH CIRCUIT’S HOLDING IN SEGA
Sega is a fair use case. The Ninth Circuit summarized its holding as follows:
We conclude that where disassembly is the only way to gain access to the ideas
and functional elements embodied in a copyrighted computer program and where
there is a legitimate reason for seeking such access, disassembly is a fair use of the
copyrighted work, as a matter of law. Our conclusion does not, of course, insulate
Accolade from a claim of copyright infringement with respect to its finished
products.
Sega Enters. Ltd. v. Accolade, Inc., 977 F.2d 1510, 1527-28 (9th Cir. 1993).
Google seizes on the court’s statement that “Accolade copied Sega’s software solely in
order to discover the functional requirements for compatibility with the Genesis console―aspects
of Sega’s programs that are not protected by copyright.” Id. at 1522. But that statement does not
help it here. First, Google did not copy the Java APIs to “discover” anything. The APIs were
readily available for viewing online and Google copied them into Android, so the holding of Sega
does not even apply. Second, Google has not shown the Java APIs are merely “functional
requirements.” The Ninth Circuit did not conduct a detailed analysis of this issue in Sega because
the question of infringement in the final product was reserved by Sega and left for remand. See
id. at 1528. But the decision shows that in determining whether an element of a computer
program is a mere functional requirement the court will look to the level of creative expression
involved. That is what the court used to distinguish the S-E-G-A 20 byte initialization code from
the “original program” in Atari v. Nintendo, 975 F.2d 832, 840 (Fed. Cir. 1992). Sega, 977 F.2d
at 1524 n.7 (emphasis in original). Google witnesses admitted there was significant creative
3
expression here. See RT 750:2-752:14 (Bloch); TX 1090 at 128:8-18 (Astrachan Dep.). Third,
uses the term “compatibility” very differently from the Ninth Circuit in Sega. The issue in Sega
was that defendant’s games “would not operate” on Sony’s console without copying, not that
being “compatible with the skills and expectations of Java language programmers” permitted
copying. Compare Sega, 977 F.2d at 1515-16 with ECF No. 1192 at 7.
Google also overlooks the fact that Sega was about fair use. It incorrectly claims that
under Sega “it does not matter” whether or not it copied to make Android compatible. ECF No.
1192 at 8. Sega requires a defendant to have “a legitimate reason” for even intermediate copying.
See, e.g., Sega, 977 F.2d at 1527-28. Google’s interoperability argument does not pass the red
face test. Copying to “embrace and extend” is the opposite of what the court endorsed.
IV. SONY V. CONNECTIX
The Court asked the parties to address what Connectix ultimately duplicated to allow
desktops to run PlayStation games. The Ninth Circuit and district court opinions do not discuss
or analyze this issue. Both courts emphasize that Sony did not accuse the final product of
infringement. See, e.g., Sony Computer Entm’t Inc. v. Connectix Corp., 48 F. Supp. 2d 1212,
1217 (N.D. Cal. 1999) (“Sony I”) (“Sony’s copyright infringement claim is based on a theory of
intermediate infringement.”); Sony Computer Entm’t, Inc. v. Connectix Corp., 203 F.3d 596, 604
(9th Cir. 2000) (“Sony II”) (“nor does Sony contend that Connectix’s final product contains
infringing material”). Unfortunately, because Sony is twelve years old, Oracle could not obtain
copies of the complete record within the Court’s briefing timetable.
The materials Oracle has been able to retrieve show the content Connectix duplicated is
far simpler than the Java APIs. Connectix alleged it “began with an empty table consisting of
entry points into the BIOS.” Connectix’s Opening Appellate Brief, 1999 WL 33623860, at *13
(9th Cir. May 27, 1999). The precise nature of this empty table or its entry points is unclear, but
most likely it was a list of memory addresses of functions that game programs could invoke as
needed. Connectix alleged that about a third to a half of the functions were “standard ‘C’
language functions that would be familiar to any experienced programmer.” Id. Connectix
alleged that it implemented 137 of 242 of the functions from Sony’s BIOS. See id. at *18.
4
Oracle does not see any reference in the record it retrieved to an application binary interface
(“ABI”). An ABI describes low-level system conventions, such as how one routine passes
arguments to, and receives a return value from, another. Unlike an API, an ABI does not specify
which routines must exist or how they are intended to be used.
As Sony shows, not all interfaces are the same. Nothing in the Sony record suggests that
there was significant creativity in the entry point table Connectix copied, in stark contrast to the
trial record in this case. Neither opinion addressed whether Connectix copied an original
structure, sequence, or organization in its BIOS program or the table. The district court noted that
“Sony BIOS consists of a combination of C source code and R3000 micro-processor assembly
language.” Sony I, 48 F. Supp. 2d at 1215. The C language does not recognize the concepts of a
class or interface hierarchy, and nothing in Connectix’s table approaches the complex
interrelationships in the Java APIs. The only reference to sequence at all is Connectix’s claim
that its entry point table needed to “contain the same entry points, and be in the same order and
format” as Sony’s table. Connectix Opening Appellate Br., 1999 WL 33623860, at *13.
Whether Connectix copied names from Sony’s BIOS, and for what purpose, is also
unclear, but it appears to have been very limited, unlike here. Sony alleged that Connectix’s
Virtual Game Station (“VGS”) “includes several function names that are identical to function
names used in the PlayStation operating system.” Pl.’s Mot. TRO, 1999 WL 33743495 at 2 (N.D.
Cal. Feb. 3, 1999). Sony argued this point not to claim that Connectix’s VGS (the final product)
was infringing, but instead as evidence to prove that Connectix had, at some intermediate point,
disassembled (and therefore copied) Sony’s BIOS when creating the VGS. See id. But it is not
clear that the names were used to call the functions—they could have been used for debugging
purposes instead—and Connectix’s allegation regarding the table of entry points suggests they
were not. Connectix’s Opening Appellate Brief, 1999 WL 33623860, at *13.
In any event, none of this had anything to do with the holding in Sony. Sony, like Sega,
was a fair use case about intermediate copying for reverse engineering. See Sony II, 203 F.3d at
608. For the same reasons that Sega does not bear on the copyrightability of the SSO of the Java
APIs or absolve Google for its infringement, neither does Sony.
5
Dated: May 24, 2012
MORRISON & FOERSTER LLP
By: /s/ Michael A. Jacobs
Michael A. Jacobs
Attorneys for Plaintiff
ORACLE AMERICA, INC.
6
1198
KEKER & VAN NEST LLP
ROBERT A. VAN NEST - # 84065
[email]
CHRISTA M. ANDERSON - # 184325
[email]
DANIEL PURCELL - # 191424
[email address telephone fax]
KING & SPALDING LLP
SCOTT T. WEINGAERTNER (Pro Hac Vice)
[email]
ROBERT F. PERRY
[email]
BRUCE W. BABER (Pro Hac Vice)
[address telephone fax]
KING & SPALDING LLP
DONALD F. ZIMMER, JR. - #112279
[email]
CHERYL A. SABNIS - #224323
[email address telephone fax]
IAN C. BALLON - #141819
[email]
HEATHER MEEKER - #172148
[email]
GREENBERG TRAURIG, LLP
[address telephone fax]
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 MAY 24, 2012 COPYRIGHT
LIABILITY TRIAL BRIEF
Dept.: Courtroom 8, 19th Floor
Judge: Hon. William Alsup
I. The exceptions counts in Google’s May 23, 2012 brief
Due to errors in the program used, Google’s May 23, 2012 Brief misstated the number of
exceptions thrown by J2SE 5.0 and Android 2.2. As summarized in Exhibit A to this brief, for
the 37 packages at issue, the public methods in J2SE 5.0 throw 2,400 exceptions, while the public
methods for those packages in Android 2.2 (“Froyo”) throw 2,316 exceptions. For the 37
packages at issue, the public methods in the two platforms throw 2,304 exceptions that are the
same in the two platforms, while J2SE throws 107 exceptions that are not thrown by Android—
84 of which are thrown by methods that are not implemented in Android—and Android throws 12
exceptions that are not thrown by J2SE. For most of the packages at issue, the public methods in
Android and J2SE throw exactly the same exceptions.1
II. Oracle’s “compatibility” arguments
Oracle argues in its May 23 brief that the Android and J2SE platforms are not compatible
for three reasons, but these reasons are irrelevant to determining whether the SSO of the 37 API
packages is copyrightable. Specifically, Oracle argues that Android and J2SE applications are not
compatible because Android applications (1) typically use a different “entry point” than J2SE
applications, (2) once compiled, are in Dalvik bytecode instead of Java bytecode, and (3) once
compiled, typically are stored in “apk” files instead of “jar” files.
First, Oracle’s arguments proceed from an erroneous premise—that the “compatibility”
analysis should be based on whether the Android platform is compatible in all respects with the
J2SE platform. That misses the point. The purpose of implementing the Java language APIs in
Android is to allow developers writing in the freely-available Java language to use the familiar,
established and basic APIs that Java language developers all learn. See RT 762:13-23 (Bloch);
RT 961:13-962:3 (Swetland); RT 1018:4-23 (Morrill); RT 1769:11-17 (Bornstein).
Implementing those APIs in Android allows Java language developers to use the skills and
experience they have, and ensures that they can reuse source code that they have written using the
APIs in the 37 API packages. RT 2183:2-11 (Astrachan). Without these basic APIs, the Java
_______________________
1 These numbers are not identical to the numbers reported by Oracle, which may be due to slight
differences in how the exceptions were counted.
1
language is largely useless. RT 683:14-684:4 (Reinhold); RT 782:9-14 (Bloch); RT 1477:2-13
(Schmidt); RT 1960:4-8 (Schwartz).
The relevant compatibility analysis, therefore, is whether Google’s implementation of the
APIs in the 37 packages is compatible with J2SE’s implementation of those APIs from a
technical, computer science perspective—and it is. RT 2172:6-11 (Astrachan); RT 2292:25-
2293:14 (Mitchell). It is irrelevant whether Android is compatible, in its entirety, with a specific
product of Oracle, with Oracle’s licensing or business model, or with definitions of
“compatibility” that Oracle has chosen to adopt for self-serving business reasons.2
Second, each of Oracle’s arguments also points only to superficial distinctions that ignore
that source code that uses the APIs that are common to the two platforms is interoperable with
both platforms. With respect to the entry point used, Professor Astrachan explained that while
J2SE encloses applications in a method called “main,” Android uses a procedure that is “a little
different.” RT 2221:11-2222:3. But Professor Astrachan also explained that, aside from this
slightly different startup procedure, “[o]therwise nothing else would change.” RT 2221:18
(emphasis added).3 The other two points that Oracle raised—the differences in the bytecode used
and the differences between the “apk” and “jar” file formats—are relevant only to the compiled
versions of applications. Neither of the latter two points affects whether source code written for
the Android platform will function on the J2SE platform or whether source code written for the
J2SE platform can be re-used for the Android platform—the salient question for compatibility.
Oracle further argues that these three arguments represent only the “tip of the iceberg,” in
that J2SE and Android applications are not fully compatible because Google did not implement
all 168 of the J2SE 5.0 API packages. But as Google explained in its May 23 brief, even if source
_________________________
2 Oracle implicitly acknowledges in its May 23 brief that its “interoperability” arguments are
grounded in its concerns about its “for-charge licensing model” and that it is wedded to the
erroneous notion that the only compatibility that matters is the type it prefers, namely that a set of
Java APIs is not “compatible” unless it is compatible with “a particular edition of Sun’s Java.”
Dkt. 1191 at 9:4-20.
3 Although Professor Astrachan testified that the launch point for applications in Android is “a
little different,” there is nothing in the record that states that Android cannot use “main” as an
entry point for an Android application. Indeed, a “command line” Android application can use
“main” as its entry point.
2
code written for one platform uses APIs not available on the other platform, the portions of the
source code that rely on common APIs will run on both platforms, which means the platforms
are, with respect to those APIs, compatible. See Dkt. 1192 at 6:5-10. Professor Mitchell
conceded that this is useful. RT 2289:21-23; see also RT 1787:23-1788:4 (Bornstein).
Oracle’s brief illogically assumes that it would for some reason be better for Android to be
incompatible in every sense rather than being, as it is, compatible with the APIs in the 37
packages.4 Jonathan Schwartz—Sun’s CEO at the time that Android was launched—testified to
the contrary:
Q. And did you actually give interviews in which you said you thought
Android was helping Java?
A. I did. . . . .
At least if they picked an Open Source Java implementation, they could be
a part of the community. If they had picked something that was completely
variant, it would have had no utility to us whatsoever.
RT 1992:2-12.
Indeed, Oracle has itself benefitted from the compatibility between the J2SE and Android
platforms. For example, Oracle admitted that it accepted Google’s contribution of Josh Bloch’s
TimSort.java and ComparableTimSort.java source code and incorporated it into Oracle’s
OpenJDK 7, which is the current Oracle release of J2SE. RT 1865:11-20 (Oracle’s Resp. to
Google’s RFA No. 170); RT 822:10-15 (Bloch); see also RT 823:3 (Bloch) (testifying that
Dr. Reinhold of Oracle praised the performance of TimSort when J2SE 7 was released). It is
undisputed that TimSort is compatible with both the J2SE and Android platforms.
III. Sony Comp. Entm’t, Inc. v. Connectix Corp.
In Sony Comp. Entm’t, Inc. v. Connectix Corp., the Ninth Circuit held that Connectix’s
copying and disassembly of the Sony PlayStation BIOS—the “basic input-output system” that
was the software program that operated the Sony PlayStation video game console—was a fair use
___________________
4 Oracle’s quote from Judge Whyte’s decision in Sun v. Microsoft is inapposite. “Write once, run
anywhere was never a promise that if you wrote code for one Java platform that it would
automatically/magically work on another.” RT 725:10-12 (Reinhold). Unlike Microsoft, Google
has never claimed that Android is an implementation of J2SE. Android is a different platform
than J2SE.
3
because Connectix’s purpose in doing so was “for the purpose of gaining access to the
unprotected elements of Sony’s software.” 203 F.3d 596, 598, 602 (9th Cir. 2000).
The Ninth Circuit’s opinion does not discuss in any detail precisely what the unprotected
elements were; instead, the opinion refers to the “functional” and unprotected elements of the
Sony software, without identifying specifically what they are. See, e.g., id. at 603 (“There is no
question that the Sony BIOS contains unprotected functional elements.”), 605 (“If Sony wishes to
obtain a lawful monopoly on the functional concepts in its software, it must satisfy the more
stringent standards of the patent laws.”).
In its opening Ninth Circuit appellate brief, however, Connectix explained that its Virtual
Game Station software (“VGS”) emulated both the Sony PlayStation hardware, and the Sony
PlayStation BIOS software. In developing VGS, Connectix first emulated the PlayStation’s
microprocessor in software. Ex. B (Connectix Br.) at 11.5 Connectix also studied the
“interaction between Sony’s BIOS and the hardware” and then “wrote software to emulate the
hardware functionality.” Id. at 11-12. The Connectix code that emulated the Sony PlayStation
hardware dwarfed the Connectix code that it subsequently wrote that emulated Sony’s BIOS, see
id. at 31 n.8, much as the Android source code that implements the 37 API packages is dwarfed
by the rest of the Android source code.
After Connectix had written its hardware emulation code, it “reverse engineered Sony’s
BIOS by running PlayStation games in conjunction with the BIOS and its software emulator of
the hardware.” Id. at 12. This was necessary because “[o]perations systems, system interface
procedures, and other programs like the Sony BIOS are not visible to the user when they are
operating.” Sony, 203 F.3d at 600. Connectix then “proceeded to write code to emulate the
necessary BIOS functionality.” Ex. B at 13. This final step was therefore analogous to the
process by which Google wrote its own code implementing the 37 API packages. Connectix
“began with an empty table consistent of the entry points into the BIOS.” Id. In order to ensure
that the VGS was compatible with PlayStation games, this table had to “contain the same entry
___________________
5 Google previously filed a copy of Connectix’s opening appellate brief as Exhibit GG to the
Reply Declaration of Michael S. Kwun that was filed on August 29, 2011. See Dkt. 369-3.
4
points, and be in the same order and format, as the table in Sony’s BIOS.” Id.
It appears that when the software code in PlayStation games invoked the Sony BIOS, this
process included the name of the BIOS function that was being accessed. See id. at 13-14
(“Connectix engineers could typically deduce the requisite BIOS functionality by examining the
function name, the information sent to and from the BIOS, or the general grouping of functions
requested by PlayStation games.”). Through a variety of means, Connectix determined the
purpose, parameters and return formats for 137 of the 242 functions implemented in the Sony
BIOS,6 and then “independently wrote code to implement the required functionality.” Id. at 13-
15 & n.3. A minority of these functions (“a third to a half”) were standard C programming
language functions, id. at 13, while the rest were not. In sum, Connectix’s VGS implemented the
Sony PlayStation BIOS interfaces. See JONATHAN BAND &MASANOBU KATOH, INTERFACES ON
TRIAL 2.0 at 61 (MIT Press 2011) (in Sony, the Ninth Circuit found that intermediate copies were
fair use where “they were necessary for the uncovering of elements not protected by Sony’s
copyright—specifically, the BIOS’s interface specifications.”).
Again, this process was analogous to the process by which Google implemented the 37
API packages. Google, like Connectix, implemented some but not all of the functions from the
plaintiff’s software system, choosing only those functions necessary to accomplish its purpose.
For those functions, Google, like Connectix, ensured that it duplicated the same “entry points”
and each function’s functionality, including the information sent to and from the system. Many
of the Sony functions, like many of the J2SE functions, performed standard functions familiar to
any programmer. Google, like Connectix, wrote its own implementing code. Indeed, the key
distinction between the present case and Sony, is that Connectix created intermediate copies of
Sony’s implementing code, for which it had to rely on fair use. Google did not copy Oracle’s
implementing code, and thus section 102(b) itself precludes copyright infringement liability.
________________________
6 Connectix implemented only 137 of the 242 functions because those were the only functions
invoked by the games that Connectix tested. Id. at 18. This parallels Google’s decision to
implement some but not all of the J2SE 5.0 API packages, and most but not all of the JS2E 5.0
exceptions. Moreover, this means that VGS likely was not “fully compatible” with the Sony
PlayStation—and that full compatibility is not relevant to the section 102(b) analysis.
5
Dated: May 24, 2012
KEKER & VAN NEST LLP
/s/ Robert A. Van Nest
By: ROBERT A. VAN NEST
Attorneys for Defendant
GOOGLE INC.
6
|
|
Authored by: nsomos on Friday, May 25 2012 @ 08:51 AM EDT |
Please post any needed corrections here.
Summerize if possible in posts title.
(Summer is getting closer)
Summerize -> Summarize [ Reply to This | # ]
|
|
Authored by: SpaceLifeForm on Friday, May 25 2012 @ 09:07 AM EDT |
---
You are being MICROattacked, from various angles, in a SOFT manner.[ Reply to This | # ]
|
- Recruiting honest shills - Authored by: Anonymous on Friday, May 25 2012 @ 09:30 AM EDT
- NY Teen was suspended for idea to fight bullying - Authored by: Anonymous on Friday, May 25 2012 @ 12:23 PM EDT
- Networks, Dish Network clash over ‘Auto-Hop’ feature - Authored by: Anonymous on Friday, May 25 2012 @ 01:51 PM EDT
- Is Facebook about to buy Opera to create own Facebook browser? - Authored by: Anonymous on Friday, May 25 2012 @ 03:07 PM EDT
- Microsoft's 500.000 links removal request - Authored by: Anonymous on Friday, May 25 2012 @ 03:38 PM EDT
- No-cost desktop software development is dead on Windows 8 - Authored by: Ed L. on Friday, May 25 2012 @ 05:00 PM EDT
- Reddit's Alexis Ohanian And Activists Aim To Build A 'Bat-Signal For The Internet' - Authored by: Anonymous on Friday, May 25 2012 @ 10:57 PM EDT
- xkcd - Authored by: Ed L. on Saturday, May 26 2012 @ 03:19 AM EDT
- David Elliott launches lawsuit to have Google’s trademark on its own name undone - Authored by: Anonymous on Saturday, May 26 2012 @ 11:35 AM EDT
- FB IPO debacle caused by a trade delay of 5 ms instead of expected 3 ms. - Authored by: Gringo_ on Saturday, May 26 2012 @ 12:52 PM EDT
- OT here - Authored by: Anonymous on Saturday, May 26 2012 @ 01:47 PM EDT
- Facebook to buy Opera? - Authored by: Anonymous on Saturday, May 26 2012 @ 05:40 PM EDT
- 19yo Egyptian Student Patents New Quantum Propulsion Method - Authored by: Anonymous on Saturday, May 26 2012 @ 08:10 PM EDT
- Why software can be patented - Authored by: Anonymous on Sunday, May 27 2012 @ 04:15 AM EDT
- With Personal Data in Hand, Thieves File Early and Often - Authored by: artp on Sunday, May 27 2012 @ 12:06 PM EDT
- Today is Memorial Dayin the US - The Real War 1939-1945 - Authored by: Anonymous on Sunday, May 27 2012 @ 02:25 PM EDT
|
Authored by: SpaceLifeForm on Friday, May 25 2012 @ 09:08 AM EDT |
Please note the article you are
referencing and include a link
for future readers.
---
You are being MICROattacked, from various angles, in a SOFT manner.[ Reply to This | # ]
|
- windows phone beats iphone - Authored by: designerfx on Friday, May 25 2012 @ 11:08 AM EDT
- Google data shows Microsoft piracy problems - Authored by: feldegast on Friday, May 25 2012 @ 11:10 AM EDT
- Money-making APIs - if APIs are copyrightable - Authored by: Anonymous on Friday, May 25 2012 @ 02:10 PM EDT
- Not watching commercials is theft - Authored by: Anonymous on Friday, May 25 2012 @ 09:14 PM EDT
- American Tradition Partnership, Inc. v. Bullock - Authored by: Anonymous on Friday, May 25 2012 @ 10:56 PM EDT
- Man launches lawsuit to have Google’s trademark on its own name undone - Authored by: Anonymous on Saturday, May 26 2012 @ 09:32 AM EDT
- Billions of API calls traversing Web, redefining “software” - Authored by: tiger99 on Saturday, May 26 2012 @ 02:16 PM EDT
- Keep The Internet Open - Authored by: Anonymous on Saturday, May 26 2012 @ 03:43 PM EDT
- News Picks: Naked Short Selling? - Authored by: Anonymous on Sunday, May 27 2012 @ 02:20 PM EDT
|
Authored by: SpaceLifeForm on Friday, May 25 2012 @ 09:10 AM EDT |
---
You are being MICROattacked, from various angles, in a SOFT manner.[ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 09:18 AM EDT |
My read of the Oracle brief is that they're trying to tie
together two or three
independent threads and hoping that
the result is a finished quilt.
I don't
see it working. The pieces don't add up. Oracle's
definition of compatibility
appears to be with Java as a
whole , but has been said dozens of times,
this isn't a
case about the whole of Java, it is about Android and a
couple of
functions or procedures.
I am not a lawyer, but this line of argument seems
weak to
me. [ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 09:24 AM EDT |
Oracle is arguing that Selection, Structure, and
Organization is hard work and copyrightable.
But they're also arguing Android represents the spectre of
fragmentation - it's not completely compatible with Java!
If that's so, then the API for Android, while it might be
inspired by Java, is not the same.
This implies that Google expended "time and effort" to
Select, Structure, and Organize it's API to something that
Oracle itself is arguing is DIFFERENT from Java. That seems
to be a creative act by Oracle's very argument, doesn't it?
Otherwise, Oracle's API itself is derivative of many
languages that came before...[ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 10:27 AM EDT |
Oracle's making the argument "Not everything that runs in
Java runs on Android. Therefore, Android isn't compatible
with Java."
That's clever slight-of-hand that misses the point.
Android was never intended as a piece-wise replacement for
Java. It's deliberately a subset of Java. Claiming it's
not "compatible" because it can't run every Java program
isn't the proper definition of "compatible."
The operative question is whether ANDROID programs can run
in JAVA, not the other way round.[ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 11:26 AM EDT |
of Java programs, with clear descriptions of their purpose and the hardware on
which they'd have to be or are intended to be run, that couldn't be processed
through dexopt and run in the Dalvik VM (Android). It would likely be quite
clear then that Oracle's argument is inappropriate re: interoperability.
It isn't up to Google to go looking for Java programs that could be processed to
run in Android.
JWC[ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 12:32 PM EDT |
Does Oracle mean it would be ok if Google had "copied" even *more*? [ Reply to This | # ]
|
|
Authored by: argee on Friday, May 25 2012 @ 03:37 PM EDT |
The SCO cases have dwindled to just the footnotes
on the screen at the end of the show.
Oragaggle is winding down. Season finale is next
week.
News at 11.
What is next? When?
---
--
argee[ Reply to This | # ]
|
|
Authored by: Anonymous on Friday, May 25 2012 @ 08:18 PM EDT |
Is anyone else surprised by Oracle's statement about how they didn't do their
homework and couldn't find a copy of this case even after several days?
What do they think that will buy them, exactly? Do they intend to use it as an
excuse for misrepresenting the holdings of that case?[ Reply to This | # ]
|
|
Authored by: kawabago on Friday, May 25 2012 @ 11:28 PM EDT |
Could Google's team throw straws for Oracles team to grasp
at?
[ Reply to This | # ]
|
|
Authored by: Anonymous on Saturday, May 26 2012 @ 12:50 AM EDT |
From wired .
... we would expect Bing to remove all of the same links
that
Microsoft requests Google Search to remove.
Unfortunately, this isn’t the case
all the time. One reason
could be that Microsoft, which recently released a new
version of Bing, wants to give itself a slight edge over its
largest
competitor.
Mickey$oft strikes again lol. [ Reply to This | # ]
|
|
Authored by: xtifr on Saturday, May 26 2012 @ 03:17 AM EDT |
It looks to me like the Connectix case was about ABIs--Application
Binary interfaces, not about APIs (Application Program
Interface. ABIs are about the kind of binary compatibility that Oracle is
discussing, but APIs are for the programmer. They are in the source,
and may not even exist anymore once the code passes through a compiler. I'm not
sure which should be afforded more protection (assuming the value is non-zero in
either case), but my instincts tell me that APIs are less protectable
than ABIs!
An API only appears in the source code--though it may match
an underlying ABI. It's basically (as I've argued before) an extension to the
language, expressive in the same way that words in a language are: it's not the
words that are protected (not the API), but the use (a program using that
API--as well, of course, as the implementation behind the API). Oracle keeps
talking about binary compatibility, which is irrelevant when we're
discussing APIs. The point of using an existing API is to provide a
familiar language for the programmer. And, like any other computer
language, is inherently not protectable.
ABIs, on the other hand,
actually involve links between compiled code, and I could see arguing that
linking to existing compiled code on either side of an ABI could be creating a
derivative work. Any point in a compiled program could be declared as an ABI,
but only some are necessary for compatibility, which is why compatibility is an
important issue when discussing ABIs in the context of infringement. Which is
why I suggest that ABIs are more protectable than APIs. (Though I admit it's a
stretch to call an arbitrary point in an existing program an
ABI.)
There's a reason why ISO standards for languages like C and C++
(which actually have standards, unlike Java, which really still only has
Oracle's whim)--the APIs are part of the language. Even third-party
APIs merely extend the language. It's still a language, and the Java language
(and like any computer language) is not copyrightable, because it's a means of
expression, not an expression itself.
So not only is Oracle's argument
unavailing, but they're not even on-point in half of what they talk
about.
--- Do not meddle in the affairs of Wizards, for it makes them
soggy and hard to light. [ Reply to This | # ]
|
- ABIs and APIs - Authored by: Ian Al on Saturday, May 26 2012 @ 04:30 AM EDT
- sorry, you're confused - Authored by: xtifr on Sunday, May 27 2012 @ 12:09 AM EDT
- API != ABI - Authored by: Anonymous on Sunday, May 27 2012 @ 02:12 AM EDT
- API != ABI - Authored by: Ian Al on Monday, May 28 2012 @ 03:49 AM EDT
- API != ABI - Authored by: Anonymous on Monday, May 28 2012 @ 08:12 AM EDT
- Pedantry! - Authored by: Ian Al on Monday, May 28 2012 @ 02:14 PM EDT
- Pedantry! - Authored by: Anonymous on Monday, May 28 2012 @ 02:25 PM EDT
- ABIs and VMs - Authored by: Gringo_ on Saturday, May 26 2012 @ 09:12 AM EDT
- It was, but there isn't a significant difference in this context - Authored by: Anonymous on Saturday, May 26 2012 @ 09:17 AM EDT
- Why this is about API and not ABI - Authored by: bugstomper on Saturday, May 26 2012 @ 06:27 PM EDT
- To clarify, for non-programmers - Authored by: Anonymous on Sunday, May 27 2012 @ 02:01 AM EDT
- an API is isomorphic to its ABI - Authored by: matth on Tuesday, May 29 2012 @ 09:05 AM EDT
|
Authored by: Anonymous on Sunday, May 27 2012 @ 09:34 AM EDT |
I'm pro Google...
That said, what do you think would be a reasonable
judgement, given the evidence we've heard about APIs and
copyright?
It's not disputed that Google copied the API's. I personally
don't think that the _reason_ for compatibility
- whether for programming compatibility or to help
programmers learn the environment -is of any relevancy. I do
think that it was reasonable for Google to
use the work; Java is free and open - Sun made it that way.
But even if it wasn't open, reusing an API should be fair
use. It's not reasonable to Google to call their work
call Java; that's something that Sun protected. And Google
made no representations that it was Java, so I don't
think that Java fragmentation discussion is at all relevant.
I do think that there is work and choice in designing an
API, but that APIs are functional.
Overall API use. I think it's in the name; they could
reimplement them to their heart's content whether they were
required for the language or not, provided they meet a very
low bar of needing to for interoperability. And personally,
I think even without interoperabililty, these are functional
things, and shouldn't be copyrightable.
SSO. I don't think that Oracle was clear about what they
meant. Not in any evidence I heard, anyway. Google had to
use the same package names to make for
transferability of skills and code between the
platforms. They had to use the same class names for the same
reason. Ditto interface names. Ditto exceptions. In
particular to Java (and not all other programming languages)
they did not have to use the same parameter names to
methods. Some of those parameter names are purely
functional, and there's very little choice - e.g. color.
Others could be different. It's great to be able to reuse
the Java documentation, but this is not a requirement
enforced by the programming language. I think Google should
pay something in respect of the re-use of parameter names
that are non-functional. I'd like to see the tariff set at
$60 in total.
With respect of the order of the methods in classes, and the
classes in the packages, I think Google had some choice. I
haven't checked whether the ordering in Java was
alphabetical, but if it doesn't follow alphabetical
ordering, or some other predicable ordering, and if the
Google ordering is the same, then I'd say this was
copyrightable, and again, the tariff should be $60 in total.
With respect to the 9 lines. I disagree with the judge, and
side with the jury - I'd say they were de-minimus. However,
the judge disagrees. I'd say $60 total tariff for the 9
lines, and I think this is high, considering the way that
those lines entered Android and Java. (I wonder if Oracle
should _pay_ $60 for the use of these lines as part of the
Timsort routines. Oracle having to pay something would be
justice for this unbelievably stupid court case. I'd like to
see them spin that into some sort of win!)
With regard to the test files. They should not have been
present, and whether a subcontractor included them or not is
irrelevant; Google bears responsibility. However, they were
never shipped, and there's no evidence that I know of that
they were of use. I would say $60 total for the
infringement.
I think the judgement as a whole should be written to
protect the use of APIs where they are being used. It should
distinguish between the API and the implementation. I'm
referring specifically to the API, not the implementation. I
would like to see it being made clear that anything that's
functional is covered by protected use. I'd like to see
specific criticism of the arguments that Oracle has deployed
in this case, and their game playing. I'd like to see
elements of the judgement that make them think twice about
whether it would be a good idea to appeal.
Overall, I think Google was in the right, were using Java
fairly, and that any infringement was inadvertent. I think
$240 is a fair price for their mistakes. I don't think that
costs should be awarded. Actually, I'd like to see Oracle
having to pay Google's costs, but that's unfortunately
unrealistic.[ Reply to This | # ]
|
|
Authored by: Anonymous on Tuesday, May 29 2012 @ 08:40 AM EDT |
So, what happens next on this, and is there any expected
timeline?
Here's what I think still needs to happen (please advise if
I'm missing anything). In no particular order:
I expect at some point the judge will rule on the
outstanding motions, and notably API copyrightability.
We need the bench trial/determination on copyright liability
for the 9 lines of timsort and the decompiled help files.
Not sure if that depends on the API ruling or not.
We need final judgement entered on patents. This may
require waiting for some JMOL motions from Oracle claiming
"no reasonable jury could have found for Google on these
facts" and asking the judge to set aside the verdict.
And then, of course, we wait for the inevitable appeal by
Oracle on patents, by whoever loses the API ruling on
copyrights, and possibly by both on the timsort/helpfiles
copyright (I expect Google to appeal on de minimis for both
and that the judge used an improper definition of the
"complete work," I expect Oracle to lose on infringers
profits and appeal on that).
Is the list above complete and accurate? And do any of the
first 3 steps have an expected timeline?[ Reply to This | # ]
|
|
Authored by: Anonymous on Tuesday, May 29 2012 @ 10:50 AM EDT |
There is an old and well-known* saying "De minimis non curat lex",
which means "The law does not concern itself with trifles".
Clearly this is no longer the case, and our Judges are in danger of getting
jelly and cream all over their wigs.
*OK, well-known among lawyers who speak Latin. But well-known enough that it's
usually abbreviated to "de minimis".[ Reply to This | # ]
|
|
Authored by: webmink on Wednesday, May 30 2012 @ 11:00 AM EDT |
Going back through my materials to write an article for CWUK this week, I
suddenly realised the
significance of a
video interview I did
with the director of Java ME at JavaOne in 2009
which I also blogged. It
clearly demonstrates that Java ME was already
fragmented in 2004 (when Java Verified launched), that Sun had made
multiple
attempts to address it, and that it was
nothing to do with Android. [ Reply to This | # ]
|
|
|
|
|