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
Week 2, Day 6 of Oracle v. Google ~pj - Updated 6Xs - Lee, Mitchell, Rubin
Monday, April 23 2012 @ 05:49 PM EDT

We have two reporters in the courtroom today, and our first report is in. Also mirror_slap's final reports from Day 4 and Day 5 are now complete, if you want to check for the details of the Josh Bloch, Mark Swetland, and Dan Morrill testimony. Today's witnesses are Bob Lee, Dr. John Mitchell, and Andy Rubin.

I think today's news is provided in an explanation from Oracle to the judge, talking about a book about Gerald Ford. That's the problem in a nutshell. Oracle is talking about books and trying to apply copyright law to the law about books. But computer software isn't a book, a novel, or anything like it. You can restrict copying of a novel or a history without damaging the entire field of book writing. But if you restrict APIs, which are functional, you do destroy software development as we know it. Attorney Julie Samuels explains why in Wired today.

[Update: And now that the second report has arrived, see the update in the article, I see the major headline came at the end of the day, when the judge told Oracle he thinks their derivative work argument sounds like "classic overreaching" and that Sun's license terms might not be in harmony with copyright law.]

Jump To Comments

[Update 1, Update 2, Update 3,
Update 4, Update 5, Update 6]

Here's the case about the Gerald Ford memoirs, Harper & Row v. Nation Enterprises, 471 U.S. 539 (1985) and just reading the US Supreme Court decision, you'd think even lawyers could see the difference between this and APIs. But at least we know now why Oracle keeps talking about APIs like they are, as the judge put it today, the holy grail of holy grails, when the evidence doesn't support that. It's likely to be able to claim that the Ford case applies here.

It was a case where a magazine, the Nation, quoted the single most newsworthy quotation from the book, thus blunting the value of the book and causing another magazine, Time, which was planning to pay to serialize a large excerpt from the book, to not publish, or pay, any further after the publication by The Nation. Who'd read it after reading the excerpt? So it damaged the author, because the book hadn't been released yet, so the court said that The Nation had abrogated to itself the right of first publication. So a fair use defense failed, even though the section quoted that was the most juicy was only 300-400 words long.

But APIs? Are they kidding? After Sun told the world anyone could use the Java language, and the testimony today was that at least some of the APIs are core, meaning you can't use the language without them?

Here's a snip from Ms. Samuel's article, with more on the topic of how both patent and copyright law fail to acknowledge the unique needs of software:

Perhaps most troubling, the patent system fails to recognize how people create and use technology. Software is fundamentally situated as a building-block technology. You write some code, and then I improve upon it — something the open source community has figured out. Google’s use of Java in its Android OS also demonstrates how innovators create, by making its own product and and incorporating some elements of the Java language (which, incidentally, Java’s creators have a history of supporting). And when those two come together, it results in an incredibly popular product, here the Android OS.

In the fast-changing world of technology, where a kid coding in his basement can write a program that can change the world, it’s important that this ability to use and share is protected. It’s also worth noting that if Oracle wins on its copyright claims, whole programming languages could become off limits, a dangerous proposition indeed.

Oracle’s attempts to shut this down, whether by patents or copyrights, are just the last in a depressingly long line of rights holders attempting to cut off important and popular downstream uses of their products, even when those uses may be legal (such as a fair use) or beneficial to society at large.

This is not to say that intellectual property rights shouldn’t exist, or that owners of those rights should not be able to enforce them. However, it’s time to rethink our policies on software patents, and, depending on what happens in Oracle v. Google, the extent to which we allow copyright claims to cover the functional programming language that builds the backbone of much of the technology we use today.

Patent litigation has become little more than a tax on innovation that drives companies from the U.S. market and discourages investment in the next Facebook or tomorrow’s Twitter. In this case alone, Google and Oracle each will likely spend tens of millions of dollars (and that’s before any potential damages are levied) — money that could and should be used for further innovation and growth.

Congress recently passed patent reform legislation that wholly lacked provisions to curb the pernicious effect posed by exploding patent litigation, which harms innovation and our recovering economy. Oracle v. Google is unfortunately not the exception, but the norm. A total reset on software patents is long overdue.

Here's our first report from today from reporter #1:
7:31 am

Judge: Thanks for [copyright] briefs. [He read them both.]

There's still so much there that I'm not ready to say a master... one heads up. I need to make sure you understand. You did ask for various parts of the records. Can't be stipulation in the past. Has to be in the trial record.

There's an issue that you haven't helped me much on. Judge versus jury on "work as a whole". I am not convinced that this is for the judge to decide. One way to go is to say Oracle copyrighted 5.0, and it wants to establish a smaller... it's a matter of proof for the jury.

Not saying that's the way I'm going to rule. I'm currently mulling it over in my mind, the "work as a whole" issue.

Here's a question about the 37 APIs. You need to be answering in the spirit of "this is what the evidence of the trial will show."

To Google: It seems to be that Google is admitting that it copied the 37 declarations into Android. Is that true?

Google: [The APIs are there, we used and included in Android the 37 packages in specificiations, so we would have them exactly right. Don't want to say "copy".]

Judge: Why 37? Why not 42? What's so special? Because you say in other places you don't use them all.

Google: As of right now is that they are the subset of the Java API in Android that Oracle is asserting rights to.

There are 51 packages in Android. They started asserting rights for all 51. But then it was discovered they didn't own those 14. So they dropped those 14. Those are the ones left where they think they can assert ownership rights. These are the "core" ones.

Judge: What does "core" mean?

Google:

java.lang.util
java.lang.io java.net are the "core"
Four of the 37 are the "core".
The other 33 are a combo of things. Some are subpackages. java.lang.* All of the things that programmers would expect.
Without IO, you couldn't print!

Judge: How many APIs are there, total?

Google: Java 5.0 has 166. Between 5.0 and Android, there might have been more.

Judge: Someone at Google went through that list, and figured out what a programmer would expect.

Google: Yes, with the caveat that some of the APIs don't make sense for a smartphone. Android spent a lot of time developing a new user interface. That's something new. To access the UI, that's in the Android API, not the java API.

Judge: Sometime around 2008 I'm assuming, Google identified 51. (Yes) And some of the 51 are in the public domain.

Google: Testimony of Bob Lee. Wrote java.util.concurrent.* Those packets were dedicated to the public.

Judge: Of the 37, then, 4 are in the basic programming language?

Google: At least 4. Bloch & Reinhold started with the basic specifiation, but the java book itself... you have to go through the book, find all the ones that are referenced in the books, and those have to be implemented as well. And that's dozens and dozens of classes spread across multiple packages.

The book (The Java Specification Book) tells you about classes. Then you go to see how that class is defined, what those specifications are. Then in order to implement that class, you typically need other classes and packages.

Then, you wind up with literally thousands of these things, in order to completely and fully implement the programming language.

Judge: I say to you, some of the things you've said this morning, I've never heard before. You need to present this to the jury. Make sure you prove whatever you think is necessary.

Google: Want to clarify. About the "Dudley" packages. When I said "public domain", I'm talking about the code. It's our view that the API is in the public domain. It's only when you get to the code, that it can be copyrighted.

Judge: I will instruct the jury that the copyrights extend to the SSO. I see both sides arguments on this. If you win on fair use, then the judge doesn't have to decide those questions. [PJ: Implied, at least, is that if they don't win, then he'll decide then. I see others so tweeting.]

The way it's going to be presented to the jury, is that the SSO *is* covered by copyright - not its own copyright, I'm not prepared to say to the jury that it's a standalone entity with its own copyright, but the copyright issued that applies to everything also applies to the SSO.

Judge: Mr. Jacobs, please respond: I get the impression that you went through and found the 37 that they did copy, and you're trying to convert that to some holy grail of holy grail of copyright. I don't see that yet. The proof doesn't show that. Why would you want to instruct the jury that the work as a whole is the 37?

Oracle: SSO is *not* a separate thing. That's absolutely correct. The 37 packages. The way these cases line up...

Judge: "Nobody raised it in that case". What case law is relevant?

Oracle: Texaco American - copying from a journal, for internal distribution. Texaco was copying particular articles, even though the entire journal was what was copyrighted. The defendent defines the work based on what they choose to copy.

Judge: But then the percentage that is copied is always 100%.

Oracle: Well, yeah, Gerald Ford's memoirs. It was ruled to be substantial. Those 37 APIs are akin to 37 journal articles.

Judge: The statute calls out percentage, 107 says, one of the factors that must be considered, the amount and substantiality of the portion used and the relation to the work as a whole.

Oracle: In the case of dead literal copying, that provision does not get very much weight. Taking 5 notes out of a song...

Judge: That was 1927, this is a statute from 1986.

Oracle: But we have lots of recent case law. We'll do more briefing.

Judge : We ignore the addons that Google put in, but the part they copied is to the work as a whole, and I question if the work as a whole is just what is copied.

Oracle: We'll do our best.

Judge: You need to be give me a decision on point, is this for the judge, or is this for the jury?

Oracle: Move into evidence: TR-26, 104, 157, 233, 234, 251, 21, 172, 1029, 238. TX 34, 165, 383, 384, 416, 897, 729, 896.1,.2,.3, .4, .5, .6, .7,, .8

Google: TX 612, 617, 2223.

Judge: Anything to discuss?

Oracle: Danger license. Trying to get it admitted. This is a license that Mr. Rubin entered into. Because Sun told him he must, even though Danger had never touched any source code at all. They customized it, and made it into a specification license.

When Google says they need a license, is it for source code, for specs? Mr Rubin is quite aware that Sun said you needed a license specifically for specs.

Judge: Why are you splitting hairs?

Oracle: [just say yes!]

Google: The question is not whether certain questions can be asked of witnesses. The problem is whether that exhibit comes into evidence. This is a long complicated document, for a different company, for a different thing, including to use the Java trademark.

Danger of confusion.

The Danger platform is not at issue.

Judge: But the point that Mr. Norton made is a decent point. Mr. Rubin was on the list that Sun required a license to use the spec.

Google [Christa Anderson]: But actually it doesn't show that. It covers rights to use the trademark.

Judge: Does it use the word "specification"?

Google: No.

Judge: Show me the term "specification" in the license.

Oracle: It doesn't have that. But the attachment shows that Rubin wanted something added about no source code.

An independent implication by Danger that it required a license.

Judge: But it didn't say specification. And Mr. Boies is coming forward to rescue you.

Oracle: On page 10, it specifically calls out "specification".

Google: It was not in the document.

Judge: You were wrong - it *is* in the document.

Google: But it doesn't change the point. If this document is shown to the jury, they won't understand. It is not the same platform. It was done in 2003. There is nothing about this agreement that will change the fact, that Danger *did* receive rights to the trademark, plus rights to shared code. What this is going to become is a rabbit hole of confusion.

Google (Van Nest): Mr. Rubin.

Judge: 1026 is allowed in evidence. Boies saved the day. Ms. Anderson, you shouldn't have done that. You said "specification" wasn't in there. And it was. You should know this document back and forth. [lectures her]

Google: We have an issue with the 1st witness, and an exhbit. A series of side by side comparisons.

Judge: Oracle - no! You can't use this. You have to use the whole thing, not a cut up thing.

Q from the jury: What if one us jury people were to get hit by a truck? [laughter] Maybe what I'm really asking is this - why aren't there alternates for this trial? [PJ: The jury doesn't know it, but the judge already thought of that. He has more jurors than are required, just in case.]

8:10am

Jury comes in.

Judge: This week we should finish the evidence for phase 1. Next week the case will definitely go to you for a decision.

Now we had a witness last week who's name was Bob Lee.

Calling Bob Lee.

Bob Lee Takes the Stand Again

Judge: Who do you work for now?

Bob Lee: CTO for Square. I worked for Google. I started in 2004, I worked on the Adwords team for 2 years, and I worked on core java libraries. Then I was the core library lead for Android.

Mr. Jacobs for Oracle: We were talking at the end of your testimony about the instruction you gave to your coders. What are the 2 possible meanings of paraphrasing?

Bob Lee: Taking something and putting it into your own words.

Oracle: Look at your screen. 610.2. The Java documentation from the Java web site, and on the right, 767, which is the Android docs from Android.

Bob Lee: Java docs generated from the code. Not sure what it's called for Android.

Oracle: Does same mechanism apply to Android documents?

Bob Lee: Yes.

Oracle: javax.crypto. Docs under the cypher. Reads part of it. "The cypher must be fully initialized before being used..." Now go over to Android text. It sounds similar. Does that meet your definition of?

Bob Lee: Yes, they look different.

Oracle: How are they different?

Bob Lee: They're not exactly the same.

Oracle: That's it?

Bob Lee: Well, they contain a lot of the same words.

Oracle: Now looking at some more text, in java docs. Do you see them for both Java and Android?

Bob Lee: Yes, they're both concise descriptions of what the class does.

Oracle: Reads more of the docs. And there are individula word differences, but they're quite similar, aren't they?

Bob Lee: I have to count the words. They both say "this class provides", which is a common thing to say. Yes, the 1st sentence is very similar.

Oracle: And the 2nd sentence?

Bob Lee: The 2nd sentence looks less similar to me, it has a different structure.

Oracle: java.nio.channels.pipe. There are thousands of pages of documentation for the 37 packages. Correct?

Bob Lee: Yes.

Oracle: And the structure / outline of docs is identical?

Bob Lee: Yes. Oracle: That's because on the Android side, you're documenting the same API?

Bob Lee: Yes.

Oracle: java.nio.channels.pipe. "A pair of channels that contain a unidirectional pipe". Highly similar? Not so similar?

Bob Lee: They contain the same words, but that's to be expected, given you're trying to describe a concept concisely. This is the common language or currency of the API. "pipe" actually predates java. It's a common technical term.

Oracle: So you would expect the same level of similarity?

Bob Lee: Generally, yes.

Cross examination of Bob Lee
Google: I want to go back to the testimony you gave Friday morning. In your testimony, you referred to the phrase "java namespace"? Please explain.

Bob Lee: Hmmm.... At a high level, the Java language, you have types, like a car, or you might have a window, and you also have methods. The types would be the nouns ,and the methods are the verbs. So for a window, you might have an open method. The way that this stuff works, if someone else wants to use your window, they use that name. When we talk about the namespace, we're talking, it's kind of a collection of items. In java, it's a package. For java, the core packages and the standard ones start with java and javax.

Google: java.lang or java.util package, somewhere in the computer, to find that function, the programmer has to find a file that has that name?

Bob Lee: Yes.

Google: TCKs? What is it?

Bob Lee: Test Compatibility Kit. Standards organization called Java Community Process. Dozens of companies, including Google, help make these specs. Part of that process, somebody wants to implement it and claim to be compatible, they have to pass the set of tests.

Google: Is it "test" or "technology" in TCK?

Bob Lee: Oh, not sure.

Google: Was there a TCK for java/android?

Bob Lee: No.

Google: Would it have been possible to run Android against a TCK in 2006 / 2007?

Bob Lee: (confidently) No. I'm a prolific contributor. I worked to build stuff that could support it later.

Google: Exhibit 405. What is this document?

Bob Lee: This is an email I sent to Eric Schmidt, some links, an award I won, and asking him about Java and TCK.

Google: 3rd paragraph. "I'm certain you're already aware of this, but Sun has been abusing their position and playing licensing games."

Bob Lee: That's still my view. Everyone, Oracle, shared that view about Sun.

Google: How did you know this?

Bob Lee: In the executive committee, Oracle submitted a statement asking Sun to stop doing this sort of thing, and everyone voted yes.

Google: Did you have a formal role for the executive committee?

Bob Lee: Yes, I was alternative representative. Joshua Bloch was primary representative.

Google: "Sun field of use restrictions ... " These prevent Harmony from implementing that TCK?

Bob Lee: Sun intendend TCK to be open standards. The JSPA prohibits them from preventing companies from doing stuff. This was going fine, up until Apache came along. At first, Sun didn't worry - they didn't think Apache could do it. But Harmony did make a full implementation of JavaSE. Then they submitted it. But at the last minute, Sun changed their mind, explaining it "they were worried about Harmony creating competition". So they used this loophole ...

Judge Alsup: This answer is way too long.

Google: Java seal of approval?

Bob Lee: Java is a trademark.

Google: Harmony - who formed it?

Bob Lee: Don't know. IBM.

Google: Was the Apache Foundation a member of the executive committee of JCP?

Bob Lee: Yes.

Google: When did they join?

Bob Lee: Early. Already a member when I joined. But they quit a year ago. Over this issue.

Google: These "restrictions" that Sun was trying to impose. Was it ever put in place?

Bob Lee: Yes, I was told so.

Google: Did Harmony ever sign?

Bob Lee: Harmony never signed it.

Google: Sun did offer a license to Harmony, including the field of use restriction?

Bob Lee: Yes.

Google: Did Apache Foundation accept?

Bob Lee: No.

Google: Email from and to Hiroshi Lockheimer.

Bob Lee: He's the current director. Dan Bornstein. Lead of Dalvik team, and my manager.

Google: 2009 - Hiroshi wrote 2nd sentence about Noser "those guys" (the management team) "are super shaky. I know the engineers are great?" Who is Noser?

Bob Lee: Noser is a company in Europe, that had a history of working on mobile VMs. I interacted with Noser. They played a supporting role with Android libraries. Took on less strategic acts. I interacted with the engineers. I thought they were wonderful.

Google: What words do you use for "prose"?

Bob Lee: Documentation and specification. Somewhat interchangeable. Doc is more general. Also includes tutorial, examples, etc.

Google: cypher.inputstream. You told him that there are some words are common. Why would you expect some words to be common?

Bob Lee: Even outside in tech, there are very specific terms to mean specific things, and you have to speak specifically. For example, "cypher" is a very specific term.

Google: And when you're trying to write in English what a class does, do you think you could accurately describe it as a technical matter, without using those words?

[Oracle objection - sustained.]

Google: What similarity would you expect?

Bob Lee: These specifications are a contract. I wasn't a big fan of including them. I would have just pointed Sun. Why rewrite them? You can just mess it up. There are only so many ways you can say it. [PJ: "Contract to developers means something different than it does to lawyers. It means basically an interface, where each side knows what to expect from the other software because of the interface info. I think that's it. If not, do tell.]

Google: The JCP you described, is the way people contribute stuff. Looking at any two descriptions, can you tell if one was copied from another? Why not?

Bob Lee: I have no idea where they came from. You would need the commit history.

Google: When someone contributes something to the JCP, can that person contribute to Java and also make it free for everything to use?

Bob Lee: Absolutely.

[Oracle objection. Sustained. He's not a lawyer.]

Google: Are you familiar with their practices?

Bob Lee: Yes.

Google: What is the practice with things they have written?

Bob Lee: With the most recent spec I wrote, I also released the code under a very permissive Apache license.

Google: Any other members?

Bob Lee: I can think of several.

Google: People that donated and also made it available on a license? Let me backup. Are you familiar with different licenses?

Bob Lee: Yes, lots of licenses.

Google: As a software engineer? What's your general understanding of a public license?

Bob Lee: For open source license, you can take the code and reuse it. Some require you to give attribution. The GPL says. [PJ: It says the code can be reused and modified, so long as the modifications are given back.]

Google: These licenses - as a software engineer - can they be applicable to API packages?

Oracle objection.

Judge Alsup: Is he an expert witness?

Google: No, he's not.

Judge Alsup: I think this is specialized knowledge.

Google: But this is facts.

Judge Alsup: No, it's not.

Google: Back to doc. In order to look for similiarities, you would look at...

Bob Lee: Source control.

Google: Would there be any sources outside of Google to look into history?

Bob Lee: It depends where the code came from, but yes, definitely. Bouncy Castle.

Google: huh?

Bob Lee: It's an implementation of cypher. The specs don't do anything. You need an implementation. That's what Bouncy Castle is.

Google: When you were provided those pieces of source code by Oracle, did you get enough info to make a decision?

Bob Lee: No.

Google: Javadocs APIs, he asked if you saw copyright notices. Did anyone from Sun etc. ever say that Apache Harmony infringed any copyrights?

Bob Lee: No.

Google: Did you obtain any info through JCP process about what Sun's view was with regard to copyrights?

Oracle objection - hearsay. Sustained.

Google: Mr. Lee, as part of JCP, did you ever hear statements from representatives of Sun if other parties could do implementations of the spec?

Bob Lee: Certainly that's the whole point of ...

Judge to Google: Uh uh uh - you can't say that! [Judge lecturing Mr. Lee.]

Judge: This witness is making a lot of speeches.

Bob Lee: I don't recall.

Google: When you were at Google, did you have conversations about making use of the javadocs?

Bob Lee: Yes, we definitely referred back to them to make sure we were maintaining interoperability.

Google: Did you talk to any engineers?

Bob Lee: I asked Steve Horowitz if we were allowed.

Google: What did he say?

Bob Lee: Yes, there's lots of precedent for this.

Google: Horowitz is an engineer?

Bob Lee: Yes. He was my manager.

Redirect of Bob Lee
Oracle: You feel strongly about the Harmony dispute.

Bob Lee: Yes.

Oracle: Repeats.

Bob Lee: Yes.

Oracle: It was a big fracas?

Bob Lee: Yes.

Oracle: No one ever filed a lawsuit that Sun is doing something wrong?

Bob Lee: They didn't have the resources, no.

Oracle: [10.47. Open letter to Sun from Apache, the FAQ. Page 6/10.] The question in the middle "Why doesn't Apache simply ignore this [all the disagreements] and ship Harmony without shipping the TCK?" And the answer is "we can ship Harmony without passing the TCK, it's our code... However we can't claim to be Java compatible. Also, users can't be assured they have all IP."

And this doc was created during the fracas?

Bob Lee: Yes.

Oracle: [10.45] You said Apache Harmony resigned. This is a posting about the resignation. 3rd to last paragraph. By the way, Apache was furious?

Bob Lee: I wouldn't attribute an emotion.

Oracle: A strong business disagreement?

Bob Lee: A strong disagreement.

Oracle: "Apache software foundation concludes that JCP is not open. It's proprietary to Java." Isn't that true?

Google objection - overruled.

Bob Lee: Yes, that is what the sentence says.

Oracle: Your discussions with Horowitz about permissability. Discuss with any Google counsel?

Bob Lee: Not that I recall.

Oracle: So Horowitz was giving you unguided legal advice?

Bob Lee: Yes.

Re-Cross of Bob Lee
Google: [10.45 Same paragraph.] The next phrase says "ASF concludes that the commercial concerns [Oracle] will continue to interfere with" the Java ecosystem. Date is 12/9/2010?

Bob Lee: Yes.

Google: After Oracle filed this lawsuit?

Bob Lee: Yes.

Next witness Oracle calls is expert John Mitchell.

Testimony of John Mitchell.

Oracle: Tell us where you work.

John Mitchell: I work at Stanford, I teach CS.

Oracle: Education?

John Mitchell: Undergrad at UWisc, degree in math at Stanford. PhD in CS at MIT.

Oracle: What else?

John Mitchell: Worked at Bell Labs for 4 years, then moved to beautiful California, and been here since.

Oracle: 687

John Mitchell: this is a CV of my professional career.

Oracle: What courses do you teach?

John Mitchell: Programming languages, computer security.

Oracle: Any classes cover Java?

John Mitchell: Yeah, regular fall course does.

Oracle: Have you done research related to Java?

John Mitchell: Yes. Exploring type systems, checking props of type systems that were then incorporated into Java. One of the main revisions / extensions is "generics". That was accepted into Java.

Oracle: Offered as qualified computer expert.

Judge Alsup: OK.

Oracle: Points to whiteboard / poster. [3452] Tx 1028, the java poster. What is it?

John Mitchell: This is a great poster. It shows a number of packages from Java. Oracle: What's the basic concept demonstrated?

John Mitchell: The most basic concept is a class. Each class has methods. Each object has fields.

Oracle: Can objects be related to each other?

John Mitchell: Yes. For example subclass.

Oracle: Let's look at lower right hand corner.

John Mitchell: This is the graphable (?) notation. It illustrates class/subclass relationship that's critical.

Oracle: How are classes and interfaces grouped?

John Mitchell: Classes are hierarchical. Interfaces can be. They can be organized into packages. Packages can be hierarchical as well. There are an average of 10 or 12 classes per package at issue here.

Oracle: java.net

John Mitchell: This is an example of what is shown on the poster. [He talks for awhile. Eyes glaze over.]

Judge: Where would methods go?

John Mitchell: Would be shown listed under classes.

Oracle: java.io. java.nio.

John Mitchell: Most of packages in dispute are shown in this poster. Some aren't.

Judge: How many are on this poster?

John Mitchell: 10 - 15 are not on this poster? I don't remember.

Judge: java.io, that's an API?

John Mitchell: Technically that's a package. As a grouping of classes, an API consists of information about packages classes and interfaces together with what they do. An overview of an API.

Oracle: java.nio

John Mitchell: Here's an expansion of the poster. Methods for ByteBuffer. Each line showing the method, it shows the method name and its signature.

(9:25 am. Ugh. Can't tell if the jury is bored too.)

John Mitchell: ByteBuffer is a subclass of Buffer. Inheritance.

Oracle: Relationship between API and class libraries.

John Mitchell: Left side has class Channels and methods. The API would contain that class, description of the methods. Then the class library itself would have that plus executable code that performs those operations. Red boxes represent some amount of executable code.

John Mitchell: [explaining declarations, parameters, etc.]

Oracle: How is this API represented in binary code?

John Mitchell: .class files.

John Mitchell: Source code illustrated on that easel is compiled using the java PL compiler, which produces executable byte code. That byte code is stored in the class library. (Executed by VM.)

[Jury break]

9:30

Google: Following Dr. Mitchell, they plan to call Mr. Rubin. But Mr. Schmidt isn't available today, but will be tomorrow. Once they finish their examination of Mr. Rubin, I'd like to call him for my case.

[Boies agrees.]

[Discussion about wording of when to say "prosecution rests". They will rest after Rubin, subject to Schmidt.] [PJ: I wasn't there, but I think he meant when to say "plaintiff rests". It's possible someone said prosecution, misspeaking, and he wrote exactly what he heard. This is just to clarify that normally, prosecution rests only in a criminal case. This is civil. Well. As lawyers use the terms.]

9:50

[Jury back]

Dr. Mitchell Continues His Testimony

Loooong CS lecture.

Oracle: Difference between a package and an API?

John Mitchell: Package is a grouping. API is typically characteristics of groups of packages.

Oracle: Do you consider APIs to be rote?

John Mitchell: It's a creative process. Many decisions go to API design. Done by people called "computer architects".

[Talks about Java, smalltalk, C++]

John Mitchell: Each of these have analagous collections library.

Oracle: If you were line them up, would you see similarities?

John Mitchell: You'd see some differences. Different height, different width.

Oracle: java.util from 5.0.

Oracle: Copying. Did you investigate copying of Android?

John Mitchell: Yes, I investigated. I looked at 3 categories. Correspondence between the APIs, and how the Android API is copied from the Oracle API. 3rd, how other code sources were used.

Oracle: First category.

John Mitchell: To get a feel for this myself, I spent a lot of time looking and comparing how the APIs compare. It's fairly straightforward to compare them. They are really identical. You see the same classes in the same hierarchy, supporting the same interfaces. A few minor differences. Sometimes there are some Oracle methods that aren't copied into Android.

Oracle: Example. IntBuffer.

John Mitchell: Illustration of similarities between Android and Java.

Oracle: What can you deduce after comparing?

John Mitchell: You can see you have the same class in the same library. Everything's basically the same.

Oracle: Explanation of what they mean. Focus on that similarity.

John Mitchell: Explanation is important because it says what each method does, what it accomplishes. Explanation is also used by implementers.

John Mitchell: In 37 packages, there are around 400 classes.

Oracle: Below the class level?

John Mitchell: Methods and fields. Probably 5,000 methods.

Oracle: What percentage of copying did you observe?

John Mitchell: Quantitatively - 90%. Sometimes the parameter names are different. Though 2/3s are the same, even though they don't have to be.

Oracle: What is your overall opinion with regard to whether the API was copied by Google?

John Mitchell: I don't think there's anyway that a separate team could have come up with it.

Oracle: #2: Copying of documentation into source code.

John Mitchell: Yes. An API contains declarations. IntBuffer. That declaration is copied directly into Google code. Talking about timsort. Copying of code / rangecheck.

Oracle: Cleanroom?

John Mitchell: The person that wrote that had access to the Sun code.

Oracle: Another kind of copying?

John Mitchell: 2 other cases. 1 has to do with comments. The other has to do with decompiled code.

Oracle: Decompilation.

John Mitchell: [explanation]

Oracle: Why would someone that wanted to copy code go through this exercise?

John Mitchell: It's a quick and easy way to get source code.

Oracle: The starting point was what?

John Mitchell: Oracle source code has files for a number of classes.

Oracle: Slide 24 from 1031.

John Mitchell: This is the Android source code and it's not in the form that a person would write. You can see that this seems to have been automatically generated.

Oracle: What do you mean?

John Mitchell: The declaration has a number of parameters. Params usually have meaningful names. A decompiler working from a class file doesn't have any way to understand. It just has to automatically make up names.

Oracle: PolicyNodeImpl.java in Android. What did you deduce?

John Mitchell: This method has 2 params that are sets, and 2 that are booleans. The decompiler just makes up names for params based on type. It just calls the params set. Then it adds a number to the 2nd to make it different than the first.

Oracle: Did you do some further investigation to test whether this decompilation into Android source code was correct?

John Mitchell: The next file shows 2 source code files. Left is Android. Right is produced in a similar way to make sure the assessment is correct. The source on the left is taken by taking the Oracle class library and running it through the decompiler. There's a difference at the top that someone pasted in a comment at the top.

Below that, the code matches exactly. So I think this is strong evidence that it was produced from jad, or java decompiler.

Oracle: AclEntryImpl, AclImpl, GroupImpl, PermissionImpl, PrincipalImpl, AclNumberatorImpl.

John Mitchell: Basically the same story. The Android code is decompiled source code.

Oracle: What does this tell you about the Android code being develeoped in a clean room?

John Mitchell: This Android code is produced by running a decompiler on a class file from Oracle.

Oracle: And therefore the clean room?

John Mitchell: The develeopers had access and used the Oracle installation and used the decompiler.

Oracle: Slide 26: ownerimpl.java -- what does this show?

John Mitchell: Another example. Parameters names produced automatically.

Oracle: What does this tell us?

John Mitchell: I can't think of any other explanation other than someone took an Oracle class file and ran a decompiler to produce this source code.

Oracle: 3rd category.

John Mitchell: Some literal copying of comments. So it wasn't really a clean room implementation. Admittedly a small portion, but enough for us to see that Android developers had access to and used Oracle code.

(Apparently there were 2 files where copying comments was found.)

Oracle: Did you check if timsort was on a Samsung phone?

Objection - not in the report. Overruled.

John Mitchell: This code appears in the source code archive of Samsung and therefore very likely on Samsung.

Oracle: Conclusions on copying?

John Mitchell: 3 kinds of copying. I think the most important is that this shows it wasn't a cleanroom implementation. I can't see any other explanation.

Oracle: In particular with regard to decompilation, could that happen by accident?

John Mitchell: No, someone has to essentially "cheat" in a particular way.

Cross examination of Dr. Mitchell
Google: Java language is one of the most popular languages ever, right?

John Mitchell: Yes.

Google: Released in 1996?

John Mitchell: Yes, became popular very quickly.

Google: Developer conference?

John Mitchell: Yes.

Google: Larger and larger events.

John Mitchell: Yes.

Google: Soon Java was taught in universities.

John Mitchell: Yes.

Google: A large group of people writing in Java, 100,000 around the world.

John Mitchell: Many developers familiar with the language.

Google: In the top 3?

John Mitchell: Probaby yes.

Google: In your report, even in 2001, Java was #1.

John Mitchell: Taobi survey.

Google: In preparing your report, you assumed that Oracle was making no claim for copyright. You relied on that in the report.

John Mitchell: I wasn't asked to look at issues of copyright.

Google: You started with the premise that there was no claim of copyright against Java.

John Mitchell: I don't think there was any such premise.

Google: [Paragraph 147 tx 686 of his report.] "I understand that Oracle is not asserting copyright infringement of" just using Java.

John Mitchell: Yes, that's what I was told.

Google: Larry Ellison said Java could be used by anyone without any royalties.

John Mitchell: Yes, I heard that.

Google: [1st edition of Java programming language spec, tx 2564] Was this part of an effort by Sun to make the language popular and available to people?

John Mitchell: Don't know their motives.

Google: Published by Sun?

John Mitchell: Yes.

Google: Did you investigate why would they be publishing it?

John Mitchell: Not really.

Google: This was said to be a complete spec of the syntax and semantics of the Java language and the core packages. It's in the preface, right?

John Mitchell: Yup.

Google: In the very first volume of the language spec, some of the APIs are included in the spec? Does the book contain 3, java.lang, java.io, java.util?

John Mitchell: Yes.

Google: These core packages get a several hundred page specification in the language book.

John Mitchell: Yes.

Google: Chapter 20. java.lang that's one of the APIs.

John Mitchell: Yes, it's one of the 37 APIs.

Google: But it's fundamental.

John Mitchell: There are various ways to evaluate if it's fundamental.

Google: Without any java.lang, the language doesn't work, because it has essential things?

John Mitchell: Yes, there are also some things that aren't so essential.

Google: Chapter 21 is java.util, also in the 37 accused APIs?

John Mitchell: Yes.

Google: Java wouldn't be of much use without java.util?

John Mitchell: I think you could write stuff without it.

Google: But there's a lot of things in there that's useful?

John Mitchell: Yes.

Google: java.io is chap 22.

John Mitchell: I guess so.

Google: These 3 chapters are described as the core of the Java API that must be included in all implementations of the Java API.

John Mitchell: Yes, in a Java installation, these APIs and associated packages and libraries are part of the standards or normal installation.

Google: The text says that these packages must be included in Java systems.

John Mitchell: Yes, that's literally what it says.

Google: The next paragraph - that describes java.lang. The types in java.lang are automatically included without implicit inclusion?

John Mitchell: Yes.

Google: hashtable, pseudo random number generator?

John Mitchell: That's what the sentence says.

Google: Without java.io, can someone print something?

John Mitchell: Well, I think that's in java.io, but they could do something else.

Google: Are you aware that java.net has been described as a core package?

John Mitchell: I believe so.

[Looking at a 1996 core Java book. Back cover.]

Google: Describes the foundations of the Java language.

[Lots of discussion trying to get him to say that packages are fundamental to the language, part of the foundation, etc.]

Judge: [Lecturing the witness. Don't just say "That's what written". Do you agree or disagree?]

Google: Without java.net, you couldn't get out to the network?

John Mitchell: I guess I agree.

Google: And that's the main point of Java, to get on the network?

John Mitchell: I don't know I agree with that.

Google: Java lang spec, 3rd edition, exhibit 984. Certain classes have a special relationship to the language. Page 6.

Lists classes and interfaces in java.lang.reflect among others. That's another package, also accused in this case?

John Mitchell: Yes.

Google: Object, Class, String, Thread, all necessary?

John Mitchell: I believe Thread is only necessary for concurrent programming.

Google: But the others are?

John Mitchell: Yes.

Google: Dr. Reinhold identified 61 classes in the specification. Did you make any effort to determine how many were actually necessary for the language?

John Mitchell: I discussed it with Dr. Reinhold and I agree with his analysis.

Google: tx 1062. These 61 classes are all part of the java lang spec.

John Mitchell: I understand the basis under which he did this analysis. Yes, given that basis, I agree with that conclusion.

11:15 - jury break.
[More to follow.]

Update: Here's our reporter #1 on what happened next that was of interest, particularly after the jury left for the day:

While the jury is out
Judge: Do you have a truce to not talk about how much expert witnesses are paid?

Google: No truce.

[PJ: The implication is rather clear that it was obvious that this witness was biasing his answers to favor Oracle, which is what paid witnesses do, oftimes. I note that Google, nevertheless, does not ask Dr. Mitchell how much he was paid. Maybe they felt his hostility to Google was so obvious, they didn't need to say a word.]

11:40 [jury returns]

Dr. Mitchell Back on the Stand, Google Cross Examining.

Google: You have described APIs as a set of names that can be used to access features of the library?

Dr. Mitchell: Yes.

Google: The names have a functional purpose?

Dr. Mitchell: When those names are used in developer code, it invokes the code in the library.

Google: You can't call max "maximum", right?

Dr. Mitchell: Yes.

Google: And the case must be lower case?

Dr. Mitchell: Yes, case must be match.

Google: And if I mess up the case, my code won't work?

Dr. Mitchell: Correct. Computers are very literal.

Google: If a platform provides a different set of APIs that are different, then existing code that programmers write for the free Java API won't work?

Dr. Mitchell: (restates but essentially agrees)

Google: You described the elements of an API like parts of speech?

Dr. Mitchell: There's a way to understand it accurately, and there's a way to be inaccurate.

Google: Play back deposition please. [He says they're like parts of speech. Nouns, verbs, etc. Repeats about how important it is to use the exact names.]

Google: [Puts up Java chart exhibit.] Classes are organized into packages.

Dr. Mitchell: Yes.

Google: Classes are listed alphabetically in a specification?

Dr. Mitchell: No, I don't think that's the case.

Google: Android was disclosed in 2007, including the organization and structure?

Dr. Mitchell: I believe that's possible.

Google: Anyone could determine the organization and structure of Android code since it was released?

Dr. Mitchell: Yes.

Google: Copying was easy to see?

Dr. Mitchell: Yes.

Google: Dr. Viznik was another expert? You relied on his report?

Dr. Mitchell: I read his report.

Google: He did an exhaustive analysis of all Android source code. 100's of thousands of lines of code?

Dr. Mitchell: Yes.

Google: 727. Report of Dr. Mark Viznik. Relied on it?

Dr. Mitchell: I used it.

Google: He did a comparative textual analysis comparing Android 2.2 to Java's jdk?

Dr. Mitchell: That's what it says.

Google: Hundreds of thousands of lines? Maybe even millions?

Dr. Mitchell: Could be.

Google: [Talking about literal analysis, then partial analysis, then token analysis.]

Dr. Mitchell: That's what the report says.

Google: Is this a thorough examination?

Dr. Mitchell: I expect he described what he did there.

Google: Thousands and thousands files?

Dr. Mitchell: Yes.

Google: And after all that analysis, he came up with 12 files?

Dr. Mitchell: Yes.

Google: And that's all he identified after his thorough analsysis?

Dr. Mitchell: I believe so.

Google: The *only* files?

Dr. Mitchell: I believe so.

Google: 12 files, right?

Dr. Mitchell: Yeah.

Google: 2 of them were called timsort?

Dr. Mitchell: 1 was timsort, and 1 was comparabletimsort.

Google: Now the timsort file, that represents 9 lines of code?

Dr. Mitchell: I think you're talking of the rangecheck that was found.

Google: Ah, good point. Timsort has how many lines? 1,000, 1500?

Dr. Mitchell: I don't remember, but bigger than 9.

Google: He didn't find any other copying, just those 9 lines?

Dr. Mitchell: Correct.

Google: That's a small amount of code?

Dr. Mitchell: 9 lines.

Google: Out of hundreds of thousands of lines?

Dr. Mitchell: Well, it's still 9 lines.

Google: Dr. Bloch testified that he wrote rangecheck.

So in effect he copied his own work?

Dr. Mitchell: While he was working for Google, he copied the work that he did at Sun.

Google: You know that rangecheck is now free and open?

Dr. Mitchell: No.

Google: You don't know whether it's open?

Dr. Mitchell: I don't understand.

Google: Did timsort have any independent economic value?

Dr. Mitchell: I think its main use is in the library. Not sure of its value outside of the library.

Google: Could it have been written by a high school student?

Dr. Mitchell: Not really.

Google: Maybe a grad student?

Dr. Mitchell: If told what to do.

Google: Source code comments are never compiled, correct?

Dr. Mitchell: Approximately.

Google: If comments were removed, the compiled byte code would be the same.

Dr. Mitchell: Yes, source code would be different, but the compiled code would be the same.

Google: Do you know if these files are part of a handset?

Dr. Mitchell: I don't recall that, no.

Google: The other files of the 12. These files all have the word "test" in them?

Dr. Mitchell: No.....

Google: para 22. Are the 8 impl files on the left... The Android name has the name "test" in it. Dr. Mitchell: The path has "test".

Google: All 8 have the word "test"?

Dr. Mitchell: Yes, I think that's true. Google: You don't actually know if any of these files were compiled and placed on a handset?

W: (a bit shaky) I don't have a reason to believe they were put on a handset.

Google: So the only thing you're aware of that you're sure made it onto a phone were these 9 lines of code in rangecheck?

Dr. Mitchell: [pauses] I believe that's correct.

Google: The only thing you've identified in this exhaustive analysis that I identified out of these 12 files that made it onto the handset is timsort.

Dr. Mitchell: There were lots of things identified.... [eventually, after pause] that may be true.

Google: Viznik also ran his analysis against Apache Harmony.

Dr. Mitchell: If that's what the report says, then ...

Google: paragraph 10.

Objection - asking this witness about another witness.

Judge: But he said he relied on this report.

Oracle: But how much did he read?

Google: I think you testified that you relied on this report.

Dr. Mitchell: Not sure that I did.

Judge: Now wait a second. You said you used files from that report.

Dr. Mitchell: OK.

Judge: Now did you read the part about Apache Harmony?

Dr. Mitchell: I probably read it, but I didn't look into it.

Judge: Forget Harmony. Bring up your own witness later.

Google: There are thousands and thousands of those descriptions in the API?

Dr. Mitchell: Yes.

Google: Is it your testimony that all the descriptions in the API are identical?

Dr. Mitchell: No.

Google: The wording does differ?

Dr. Mitchell: Yes.

Google: You put exactly one example of this in your report?

Dr. Mitchell: I think there are a few examples of snippets.

Google: The one you chose to discuss was in 207. Your report has several hundred paragraphs, almost 280. This is the only one that is comparing the English text.

Dr. Mitchell: Yes, it refers to exhibits that show code.

Google: And the example you show is KeyPair.GetPrivate()

Dr. Mitchell: Yes.

Google: KeyPair wasn't invented by Sun.

Dr. Mitchell: Well, in public key cryptography.

Google: And that's not something Sun invented?

Dr. Mitchell: Invented in the 1990's.

Google: "Returns the private key" - is that it?

Dr. Mitchell: I believe so.

Google: Does that pass your test for being substantially similar?

Dr. Mitchell: [He equivocates.]

Google: Does not answer my question. [Repeats it.]

Dr. Mitchell: I think in the context of the rest of the file...

Google: [Asks again. And again.] Substantially similar?

Dr. Mitchell: Yes.

Redirect of Dr. Mitchell
Oracle: Independent economic analysis. What did you find?

Dr. Mitchell: I found a number of other files that called it. I counted the number of times RangeCheck was called. 2600 times when powering up the phone. 2600 seems like a pretty big number.

Oracle: On the decompiled code, did you analyze the significance?

Dr. Mitchell: I looked into it. Access control lists.

Oracle: Mr. Van Nest [Google's lawyer on cross.] asked if they were test files?

Dr. Mitchell: Yes.

Oracle: On the Java side, are these test files?

Dr. Mitchell: I don't believe so.

Oracle: On the Android side?

Dr. Mitchell: I don't know, they're in a test directory.

Oracle: Is it important if it's test code?

Dr. Mitchell: Testing is very important. Can be twice as expensive as development.

Oracle: What advantage would they have obtained by decompiling?

Dr. Mitchell: This helped them test other code they were developing.

Oracle: Set aside the code-to-code copying. What about the decision to copy 37 packages into Android?

Dr. Mitchell: That's huge.

Oracle: In the way that Google took the 37 packages, did they make Java "compatible"?

Dr. Mitchell: Not really. They subsetted and supersetted.

Oracle: Would a Java app run on an Android run?

Dr. Mitchell: It won't run if it relies on something that's not there.

Oracle: [Asking about what is fundamental to Java language]

Dr. Mitchell: Two methods that make sense: 1. treat the language definition of what's in the language and isn't. Dr. Reinhold did that. Came up with 61 classes.

Another way is to look at the language compiler. If the compiler knows about some source code, and can compile it directly, then I think it makes sense to consider it part of the language.

Oracle: Based on those analyses, what is your conclusion for what is required?

Dr. Mitchell: I like Reinhold's analysis. They seem very sensible. Those 61 seems like a very good answer.

Oracle: Now I need you to read the 37 packages that allegedly infringe.

Judge: Just give us the list.

[Exhibit 1072.]

Oracle: If all that Google wanted to do was implement the java programming language, as you described it a few minutes ago, would they have needed to copy the API packages wholesale?

Objection - speculation - overruled.

Dr. Mitchell: Java could be implemented using just those 60 classes, which wouldn't require those infringing packages.

[Dr. Mitchell is excused.]

Oracle now calls Andy Rubin to the stand. Boies is up now for Oracle.

Testimony of Andy Rubin

Judge: [to the jury - reads a stipulation] "For the 37 accused API packages, Android and Java 2 SE version 5.0 have substantially the same selection, arrangement and structure of API elements."

Oracle: You are and have been since 2005 in charge of Android?

Andy Rubin: Yes.

[His history, etc.]

Oracle: Java core API? What's your interpretation?

Andy Rubin: A term often used by Sun to describe part of their product.

Oracle: Which part?

Andy Rubin: Java lang files.

Oracle: How many?

Andy Rubin: I didn't count them.

Oracle: Do you use core API to mean the same the thing as core libraries?

Andy Rubin: I don't use those terms.

Oracle: Core packages?

Andy Rubin: Yes I've used them.

Oracle: Referring to what?

Andy Rubin: In various contexts. Not sure. Typically I'm describing a set of methods and packages that an application developer would develop for.

Oracle: Exhibits 14, 15, 18, 22, 29, 131, 140, 147, 151, 154, 158, 161, 165, 180, 183, 203, 207.

Judge: Enough already, we only have 15 minutes left.

(It's 12:45)

Oracle: Exh 3. Email from you to Lindholm. Wrote this 7/29/05. 3rd page, under "requirements", "Google needs a TCK license". You see that?

[PJ: You can find the exhibits, I believe, linked to in the prior Groklaw article.]

Andy Rubin: Yes.

Oracle: You're not talking about the Java programming language, right?

Andy Rubin: Correct.

Oracle: 7. Email to Larry Page 10/11/05. 2nd sentence, "my proposal that we take a license that specifically grants us the right to open source our product"?

Andy Rubin: Correct.

Oracle: "We'll pay Sun for the license and the TCK".

Andy Rubin: Correct.

Oracle: "Before we release our JVM, we'll make sure it passes TCK so it doesn't cause any fragmentation"

Andy Rubin: Correct.

Oracle: "Before being brought to market, they will have to take a license from Sun"?

Andy Rubin: Yes, I see that.

Oracle: 12, a couple of emails, one you wrote, and you say "my reasonsing is that either a) we'll partner with Sun as contemplated in our recent discussions, or b) we'll take a license". You see that?

Andy Rubin: Yes.

Oracle: Discussions with Sun about partnering?

Andy Rubin: Yes.

Oracle: If those discussions didn't work out, you'd take a license?

Andy Rubin: Those were some of the options.

Oracle: But you just said those were the two only choices. "I think a clean room implementation is unlikely because of the team's prior knowledge, and it would be uncharacteristically aggressive of us to position us against the industry"?

Andy Rubin: I think that's reading a lot into that one sentence.

Oracle: But you were planning to implement it at this point?

Andy Rubin: Not necessarily.

Oracle: Back in July 2005 when you made the first GPS presentation, you were talking about a clean room implementation?

Andy Rubin: We were talking about various strategies.

[Gives him the GPS presentation]

Oracle: Turn to page 9. Big heading of "Java". Do you see "current scenario: developing a clean room implementation of a Java virtual machine"?

Andy Rubin: Yes.

Oracle: Now back to exhbit 12. 12/20/05. "I think a clean room implementation is unlikely", that's a Java VM.

Andy Rubin: Yes.

Oracle: And then you give the reason.

Andy Rubin: I give a reason, yes.

Oracle: Exs. 17 and 18. First 17. 2/10/06. Email from Lindholm to Coughran and you. What Lindholm says, "I have been helping Andy Rubin with some issues associated with his Android platform. This has mainly taken the form of negotiating with my old team for a critical license".

Andy Rubin: Yes.

Oracle: And that wasn't for the Java programming language, correct?

Andy Rubin: Yes.

Oracle: 18. Email you wrote on 3/24/06. That was in response to an email you received that day from Greg Stein. In your email, you say "I don't see how you can open Java without Sun, since they own the brand and the IP". Do you see that?

Andy Rubin: Yes.

Oracle: You mean " ... without Sun's agreement or permission"?

Andy Rubin: [lots repeat requests] Yes.

Oracle: 2nd email from Stein. "Ha, wish them luck". "java.lang apis are copyright". Do you see that?

Andy Rubin: Yes.

Oracle: Did you mean copyright by Sun?

W: Let me think back, yes, I think so.

Oracle: "And Sun gets to say who they license the TCK to".

Andy Rubin: I see that, yes.

Oracle: "This forces you to take the shared part that taints any clean room implementation". Do you see that?

Andy Rubin: Yes.

1pm - jury leaves.

Judge and Lawyers for the Parties:

Judge: Let's get back to exhibits.

Google: They have tons of exhibits. We have stipulated to more than 145, which is far more than a jury can comprehend. Now we're just shoveling a bunch more. If you're going to use them with a witness, fine.

Boies: These are not "randomly" selected emails. These are all very important.

Judge: Will you use all of these docs?

Boies: I don't think I'll have time.

Judge: Here's the answer. Evidentiary - you don't want to stipulate - you have to stipulate. Point 2 - normally lawyers work this out. Point 3 - I know this is really a time issue. They're up to 686 minutes. They're running short of time. They might run out of time.

And you (Google) want them to run out of time.

Van Nest has a legitimate point. By letting them come in without a witness explaining them, they can be used in summation.

There are 2 alternatives. When there is a long list like this, you pick 25% you won't stipulate. Then 75% come in by stipulation.

That's the practical way to handle this. But I can't force you to do this. You can force Mr. Boies to use up his time.

But it works both ways.

Judge: 40 seems like a lot.

Boies: We'll go over it and see what we can work out.

Judge: 686 and 437, Oracle vs. Google, time accounting. Is there going to be a defense of "advice of counsel"?

Google: No, Your Honor.

Judge: Jury is hearing all this about licenses, and this goes to willfullness, this might be a logical time to figure that out.

Judge: A different question, to Oracle. Here's soemthing I have a hard time swallowing. Your argument about "derivative work". Your argument is if someone starts with the plain English descriptions, in a clean room, and they put on their scientific thinking caps, and come up with their own program code, no matter what they come up with is an infringement. Doesn't that violate the principle that no one has a monopoly on the idea expressed? If you were to say how do you do a rangecheck, and if that is the idea, and you let a bunch of students go wild on it and come up with different solutions, isn't that the classic example, you don't have the right to the expression of that idea?

Isn't that right? Am I misunderstanding? It seems invalid. Boies: I'm not sure this is going to be terribly helpful. It depends on whether you view the "plain English version" or simply an idea, or being creative expression. If the latter, and they are copying that, and interpreting that, then it's a derivative work.

If it's just an idea, then the court is probably right.

The court will note that everyone before this litigation that everyone thought that a clean room implementation didn't save you from getting a license.

All the clean room permitted you to do was to stop you from licensing the code. But the clean room didn't excuse you from getting a specification license.

Judge: That's what the memo said, I grant you that, but I don't know that's required under the law. They shouldn't be held to this just because Mr. Rubin said this in an email.

Boies: It wasn't just an email. Danger took a license even though they weren't going to use the code.

Judge: Didn't the Danger license cover the trademark too?

Boies: I suppose it did, but it clearly covered the specification license.

Judge: Well, I still question your premise. Now it may be that they agreed to a license, in the same way both of these companies have agreed to a patent from a troll, even though it's completely invalid, just because it's not worth fighting.

Judge: If you have a doc in plain English that says that this particular method will return the larger of 2 numbers, and you gave that, looked in textbooks, you would find examples of that very exercise. Teaching young people in college how to do perform that writing various forms of code.

And to decide you own every implementation of that code just because you came up with the idea, that's classic over-reaching.

Boies: That's not what we're trying to say. And I'm probably not explaining well.

Judge: My job is to come up with a list of questions that's as clear as possible. I don't want to have to take time over soething that's invalid as a matter of law.

Other Oracle lawyer: It's not the taking of any particular idea of any particular method. We're not claiming taking the max is copyright infringement. Similarly, saying to a movie maker "seek the holy grail", that would not infringe any other version like Monty Python.

[Shows java chart]

Judge: But that's your SSO argument.

Oracle: [Movie script argument] If you make a movie out of this whole thing, clearly that's a derivative work.

Judge: Let me try my question a different way. Let's say we ask the jury 2 questions. "With regard to these 37 packages, did Google copy the SSO?"

And same question, but documentation.

Let's assume we ask those questions to the jury.

So then, what good is it, if you've already gotten a yes or a no, what does it add to then say "btw, is the implementation a derivative work of the plain English of what the method will do"? To my mind, there's no legal significance to that question. The first 2 questions are all that matter.

Oracle: I think that's right. Let us think about it and get back to you.

Judge: Now similar part for the other side. "De minimis" How can you say that copying SSO is "de minimis". I'm going to say to the jury that it's a protectable element. But that doesn't mean that's my final decision. This way the jury can rule on your fair use argument.

If SSO is protectable under copyright act, no reasonable jury could find that that's de minimis - could they? I find that a hard sell.

Google lawyer, not Van Nest: : A jury *could* find that the SSO of the 37 packages is de minimis, and here's why. To the extent that there is something that is the SSO, that is separate and independent of the name, the language, and all of the code that implements it, if there is something that can be identified of the SSO of just these 37 packages, some separately identifiable thing, called "just the SSO", then we believe that that's an extraordinarily small element of the Java package and Android. [Arguing that the work as a whole is huge.]

Judge: Let's say we let the jury decide fair use. Isn't the extent to which something is used a factor?

Google: Absolutely.

Judge: So what does de minimis add?

Google: Those 12 files.

Judge: So you mainly want to use de minimis for the literal copying of the 12 files.

Google: Essentially, yes, but I have to check with the client.

Judge: You wanted to respond to my previous questoins to Oracle.

Google: What API specs do is the following. It's like a dictionary. If you want code that does X, here's the name to call. Just like a dictionary. So this is not like providing a script to a movie. This is like giving someone a dictionary. Here are all these words. Now go out, and write a program. Like, here's a dictionary. Mr. movie maker, can you write a script using this dictionary?

I think there are 2 issues here - names. You already ruled on that. That's out.

Judge: But what are the names?

Google: Here, the name is java.lang.math.max. Your order says it includes the class names, and the package names, and the method names.

Oracle: A different analogy. Name of a keynote (?). West keynote system. Of course that's protectable!

Judge: How can you say that? Does that circuit know that there's a copyright on it?

Oracle: Clearly.

Judge: What say you, Google?

Google: But the West taxonomy has content. This is just words. Once I define java.bruce.history, java.bruce.economics, etc. And anyone that wants a java program to use them in the same way I've defined them, they have to use it in precisely that way.

Judge: Mr. Jacobs' point is that they come with a system of organization, and it's not just randomly selected words. They bear a relationship among each other in a hierarchical way.

Google: Full stop - the hierarchical way that they're talking about, that's what the language requires. It only looks like a hierarchy to us humans. The organization is simply a human artifact. Like a Table of Contents.

Judge: Let me ask a difficult question to Oracle.

Are you saying that each of these 37 APIs are like 37 advertisements in a magazine? So are you saying that each is a stand-alone thing? Or the SSO of the 37 is a protected item?

Oracle: I think we're saying both.

Google: I don't see how there can be a principled way that they could say that it could be anything less than the SSO of *all* 167 packages. Every package has to come back to java.lang. To the extent that there's any chance, the SSO has to at least be talking about the entire API.

Judge: But they're alleging 37.

Google: They can't redefine their work to say that the work is just what's at issue.

Judge: Hustler case.

Google: But that was a standalone article. Texaco case. Those are completely different. Separate articles, with separate authors. They've testified about how interrelated all of these packages. They focused on the 37. They've heard evidence of the others. But you'll see that they all relate to each other. They all have inter-dependencies.

No one has ever testified before this trial that these 37 are any kind of a unit.

Van Nest: In a journal, articles have a seperate existence. Before this case, no one talked about the SSO of 37, or 51, or anything.

Judge: But Rubin talked about APIs.

Van Nest: Yeah, but no one ever said there's an SSO of 37, or 51, or 150. These numbers you're hearing are a lawyer-made-up product of this lawsuit.

Judge: Here's the bugaboo for Google. You chose consciously, chose these APIs. If they aren't so great, why did you pick that subset? Doesn't that prove coherence?

Van Nest: Number one, there were 51.

Judge: But minus 14 is 37 - isn't that what the developer community expects?

Van Nest: Those APIs were integrated into a much bigger system. And we haven't even started our case yet. Our core libraries and Android APIs all work together. So it's not like there's a unit out there where 37 is important.

Google: Why do you have Java APIs in the first place? The answer is to use the freely available programming language.

Judge: Well 4 are needed.

Google: 4 packages, hundreds of methods. Clearly there are fact issues about what is fundamental. In order to let people write Java programs, you needed to use the same API.

Judge: Is that a fair use argument?

Google: Absolutely. All we use are the unprotectable name, method signatures, and ideas that are reflected in the API specs. We don't use their code, we don't use their expression. To the extent that there is an SSO, we used the minimum amount necessary to support the language.

Judge: Burden of fair use is on you.

Google: Yes, your honor.

Oracle: There were originally 51. But there are 37 that Oracle owns. So this is akin to a magazine article.

2nd point. What these cases really tell us, case law is pretty protective of the copyright holder. You can't bury it in a large body of work.

Focus on what was taken and its substantiality.

Judge: We'll leave it there.

Update 4: Bryan Bishop at the Verge has some astute observations on Dr. Mitchell's testimony:

Oracle followed Lee with Stanford Professor of Computer Science Dr. John Mitchell. Mitchell had analyzed the 37 APIs at the center of the case from both Java 2 SE 5.0 and Android 2.2 and found extensive similarities. In an attempt to further attack Google's clean-room claims, Mitchell also noted evidence that would seem to indicate Android code had been copied from a decompiled source: variables that would normally be given actual names for ease of use instead consisted of generic, machine-generated template terms such as "set Set1" and "boolean flag." Mitchell stated that he was even able to replicate the variable names by decompiling Sun code himself.

The examples shown in the courtroom, however, all seemed to be copied from the Apache Harmony implementation of Java, rather than being the direct work of a compromised Google clean room. When pressed by Google counsel Robert Van Nest, Mitchell stated that he was actually not very familiar with Apache Harmony himself. Additionally, the report his own work was based upon — which included the comparison of thousands of files — yielded just twelve files containing similarities. Of all of the lines of comparable code, Mitchell was only able to positively confirm that nine lines made it onto shipping Android handsets — the nine lines that comprise rangeCheck.

Update 2: I never received a report from our law student, our second reporter this day. I've emailed her, and whenever I hear back, I'll add the report here. It turns out, she tells me, she is a student of Michael Jacobs, one of Oracle's attorney, who also teaches at Berkeley. So her viewpoint of the trial should be interesting. She seems to think the world of him, as do I, actually.

Update 3: Here's her report:

Oh, I thought you didn't need anything from me. I took almost no notes, just discussed it a little with my professor. [PJ: She clarifies not Michael Jacobs, another professor.]

I guess from what I understood the issue was whether APIs are protected under the Copyright Act and whether the copied amount is substantial or not. APIs are protected as "literary work". [PJ: Or are they? that is what the case is about.] Later in the trial the judge probably will start discussing what is the "work as a whole". I guess Google argues that the 37 accused API packages in Android and Java 2 SE are only a small portion of the Android and Java platforms, respectively, as a whole.

Also you can find in transcripts or notes that Google's attorney argued that API "package" is a made up term, that it doesn't exist in the literature and is not used in the field.

Also there is a distinction between the Java language--freely available for use--and the Java APIs, which are the detailed specifications that describe valid uses of the Java language. To do clean room implementation one can't use any APIs [PJ: According to Oracle]. At some point Google had discussed to do clean room implementation for Android, but never continued. The judge was concerned about it, as they didn't have a satisfying argument why they couldn't do without the 37. [PJ: Well, if they are core to the language, and you can't use the language to do anything without at least some of the APIs, then that would be the argument. And it was, as you can see from the other report.]

At the end also there was a discussion about the load of e-mails and other correspondence that Oracle was using to prove a point that Google knowingly infringed it. Google's attorney raised a concern about the time and that some of the e-mails are irrelevant and that Oracle was wasting the court's time by going one by one asking questions to the witness. The judge agreed but still left some room for Oracle to discuss the important ones.

I found Andy Rubin's testimony very interesting. He was calm and confident. The answers were somewhat vague. He would answer "I don't recall" to some of the questions regarding his e-mails. I think it was frustrating Oracle's attorney at some point. :)

Also, because it so hard to explain the entire technological concept through analogies, he had a lot of room to keep it as vague as he could.

I will try to follow this case as much as my schedule of finals allows me. I am really interested in this topic as I plan to be an IP lawyer. This decision will most likely have a couple policy aspects. I will be in touch the days I am in court.

Best of luck and thanks for doing this. I learned a lot!

I know you guys join me in thanking both of our first-time reporters for being willing to be our eyes and ears.

Update 5: We have the trial exhibits entered on this day, 2012-04-23:

  • [P956] 2012-04-22 Oracle Brief re Court's Copyright Questions.pdf [This is available here as docket #956.]
  • [P961] 2012-04-22 Oracle Update on 702 Copyright Questions.pdf["Oracle America, Inc. submits this update on the PTO’s progress in reexamining the asserted claims of the ’702 patent. On April 19, 2012, the PTO mailed a Notice of Intent to Issue Ex Parte Reexamination Certificate confirming the patentability of all the asserted claims of the ’702 patent. Attached hereto is a copy of the PTO’s notice."]
  • 0140.pdf [Email from Bill Coughran to Tim Lindholm, cc to Andy Rubin, dated Feb. 10, 2006, Re: Travel for Android requested, oking his email request, same date, to do a "two-day deep dive into the architecture with TI's engineers" which is referring to a TI project, "a Java acceleration architecture (silicon and surrounding software) done by TI." TI was asking to partner with Google and Sun for Android handsets.]
  • Mitchell_Demonstratives_Print10.pdf

Update 6: All the trial exhibits are now available as PDFs here. Some are also done as text. Look for the date nearest the day, as they are listed by the date they were entered, which could be a day or so after the date of their use in the courtroom.


  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 )