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.


To read comments to this article, go here
Judge Alsup Decides He, Not the Jury, Will Decide the Issue of API Copyrightability ~pj
Saturday, April 21 2012 @ 01:18 PM EDT

This is big news. Huge. The judge in the Oracle v. Google trial, the Honorable William Alsup, has reached an important decision. He has decided he will rule on whether or not APIs can be copyrighted, not the jury.

The news came with the final report from our reporter on Day 4's coverage. I've added it there in Update 5, but it's significant enough that I wanted to highlight it, to make sure you don't miss it. This is, in my view, an important win for Google, in that it ensures that Oracle will not be able to confuse a non-technical jury that also presumably doesn't know much about the law. I know a lot of you have been wondering when Judge Alsup was going to realize that the buck stopped with him, and it has happened. I'll show you the notes.

From our reporter finsko, this snippet from the very end of the day, after the jury has been dismissed:

Judge Alsup: The copyrightability of the 37 APIs is my call. But I want more briefing on it. I want you to take a firm position. Could you get a patent on structure, sequence, and organization (SSO)? Say "yes" or "no".

Also, do you know if the copyright office investigates SSO of copyrighted source code? I would guess not.

[Google answers "no", Oracle answers "maybe yes, maybe no"; I'm not sure which question this refers to.]

[Copyright office only gets first 50 lines and final 50 lines of the source for a SW copyright registration, so of course they don't look at SSO.]

Judge Alsup: OK, what about derivative works? Does the plaintiff have to prove that the source work was actually used? What if it was accidental overlap?

Oracle: Proof requires access, plus substantial similarity.

Google: Unauthorized work has to include copyrightable material.

Judge Alsup: When Google did their clean room implementation, did they have access to the English language comments [in Java source]?

Google: Yes, they had the English language prose descriptions of the APIs.

Judge Alsup: Does that make it a derivative work?

Google: No.

Google: The fully-qualified names are the organization.

Judge Alsup. I have to decide on copyrightability, not the jury.

You don't have to do exact copies, e.g., you could use science.sqrt() as your method rather than math.sqrt()

Google: It wouldn't work; existing code wouldn't find it.

Judge Alsup: Is fair use a question for judge or jury?

[1:30 or so, Judge leaves the courtroom]

You might want to read Mark's most recent article on the filings and an intriguing GPL possibility regarding the APIs. The briefs requested are due Sunday, so no rest for the weary. The bags under my eyes are carrying their own bags.

The other big news, which you'll find in update 5, the rest of the Joshua Bloch testimony is that the lines of code that Oracle claims are copied that Bloch wrote were donated to Sun and Java by Bloch himself. Sun incorporated it into Java and praised it for being faster than what they had already. Get a load of this:

Q. You left Sun and joined Google in 2004. What did you do at Google?

A. I ported existing Google infrastructure that was primarily accessible from C++ so that it was accessible to Java. I joined the Android team in December 2008 or January 2009. Android had already been released, and phones were in the market.

Q. When you joined, what was the status of Android's Java run-time libraries?

A. Not as fast as they could be, and there were some bugs.

Q. Did you have any influence on the choice of APIs?

A. No.

Q. Did you ever consult Sun source code or Sun materials?

A. No.

Q. Did you change any of the APIs?

A. No, you can't. It would make it incompatible.

Q. What is Timsort?

A. A way of putting a list in order [somewhere in here there is reference to compatible Timsort (?)].

Q. How big is Timsort (referring to Bloch's Java implementation).

A. 900 lines.

[The rangecheck() function gets mentioned in here.]

Q. Was there a sort API in Java before Timsort?

A. Yes, in the arrays (class? package?).

Q. How did Timsort differ?

A. It was much faster: as much as 20 times, typically somewhere between 2 and 20.

Q. How big is the rangecheck() method? Is it a private or public method?

A. It's a private method, about the same size as max() (so: small).

Q. What does rangecheck() do?

A. It's necessary when you have a sort method and you might be sorting a partial list or a whole list. You need to check that the indices are within range. It would be an error if an index was negative, or the indices are in the wrong order, or are not within range of the list.

Q. Is rangecheck() simple or complex?

A. Very simple. Any high school programmer could write it.

Q. Do you know of the existence of other rangecheck() functions?

A. Yes, there's one in arrays.java. I wrote it. [Timsort: from Tim Peters, and originally in Python. The Java implementation was a port.]

Q. Where did you get the Python version of Timsort? Was it open source [this was 2007, pre-Android]?

A. Yes, Guido [van Rossum] pointed me to it, it's under a permissive open-source license.

Q. What did you want to do with your Java Timsort?

A. Put it into OpenJDK (an open implentation of the SE platform).

Q. Who controlled OpenJDK?

A. Sun.

Q. How does someone contribute to OpenJDK, and had you done it before?

A. Yes. [Discussion about source repositories, and Doug Lee at Oswego, NY].

Q. If you worked for Google, why would you contribute to Sun's JDK?

A. Java is important to me; it's given me a lot.

Q. Why did you use the same rangecheck() function in Timsort as was in arrays.java?

A. It's good software engineering to reuse an existing function.

Q. But why use the exact same code?

A. I copied rangecheck() as a temporary measure, assuming this would be merged into arrays.java and my version of rangecheck() would go away.

[Discussion of Timsort dates and Android work dates.]

Q. Was Timsort accepted and added into OpenJDK?

A. Yes.

[Something about Java 7.]

Q. Did Sun ever say anything about Timsort?

A. Yes, Mark Reinhold praised it for its speed on his blog.

Q. What else did you contribute to Java 7?

A. ARM Block: Automated Resource Management. Like automatically closing a file. This wasn't just an API, but a language feature. It added to the language itself and changed the grammar.

Q. Is it often that case that the language and the APIs change in tandem?

A. Yes.

Q. Are the 9 lines of rangecheck() currently in Android?

A. No, not in Ice Cream Sandwich; I checked.

Q. Are you still contributing to Java?

A. Lots. I feel a personal responsibility to give back to the Java ecosystem.

Q. Have other people at Google contributed to Java?

A. Yes.

Now Oracle is suing over that very code. That doesn't make Oracle look so good. In fact, they look a teensy bit petty.

And the other point that struck me is that he was asked whether you can use the Java language without APIs. This obviously matters, in that it would be pointless to tell the world that you can use the language but not the APIs if in reality you can't use the language without the APIs:

Q. Could you do anything in Java without APIs?

A. You could add two numbers, but couldn't do any I/O. E.g., the simplest program, the first program you write is "Hello world". This isn't doable without an I/O API.

Here's what Mark wrote about the GPL and how it works, or a part of it, but do read the whole article:
So the question is, given that the Java programming language is licensed under GPLv2, are the APIs and associated class libraries necessary to make programs run in the Java language "associated interface definition files?" If so, one could argue that those 37 APIs are a part of the "work as a whole" (the Java programming language) and, thus, also subject to the GPLv2. Interesting.
I'll say. Imagine if, in a truly karmic result of bringing this litigation, Oracle loses not only most of the asserted patents but has to GPLv2 the APIs.

  View Printable Version


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 )