As the introductory discussion continues, we get a clue as to exactly why red flags went off when we read that the foreman in the Apple v. Samsung case persuaded the rest of the jury to rule for Apple when he took some source code and showed it to them as "proof" that Samsung's prior art was invalid.
Here's the discussion, and see if you can pick it out:
Here's something else I wanted to highlight, where we see that this judge didn't just fall off a turnip truck. Oracle's lead attorney, Michael Jacobs, is going down a list of exhibits it wants to submit into evidence based on some earlier depositions, but one of them, exhibit 3, is a surprise to Google's Van Nest. Watch how the judge sorts it out:
And then we see exactly when the parties should have realized that this judge, unlike most judges, knew a lot about software and how to code:
So it should not have come as a total surprise to the lawyers later when he revealed it. But I'll bet it did to some of them, the ones that are not so technically inclined. I'm sure it was not a surprise to Mr. Kwun, who Van Nest was wise enough to have in the room and to ask to speak for the team on the technical matter.
And I wanted to highlight something that the judge tells the jury about why lawyers don't talk to them during the trial even if they bump into each other in the hallways, because if you attend the trials for Groklaw, you need to act just like the lawyers, and here is the judge's explanation:
Finally, I wanted to show you something on the topic of the squishiness of the law, as Eben Moglen called it once. He explained to a group at a conference, working from membery here, that the law isn't precise, like writing software. Software is precise, where even one missing semi-colon can throw everything off. So coders become super precise and detail-oriented, and there are reliable rules that software follows and you have to stick to those rules or at least some determined rules for it to work.
Actually, the judge is relying on another rule, and he has discretion to decide certain things, like the method of proof. And here, when he says that he knows
Mr. Lindholm is going to
come in and put this into evidence, he means that at that point the exhibit is definitely going to be accepted as evidence. So rather than have Larry Page testify and then bring him back after Mr. Lindholm testifies, then scheduled for after Page, to again put the exhibit into evidence for use with Page, the judge says he has discretion to order the method of proof, and since the exhibit was surely going to come in, he decided that it could be shown to the jury with Page, but later Oracle would have to get it into evidence with Lindholm.
The reason all this matters is that there are different rules for different types of use. You can use a document to impeach a witness, for example, if you think he lied, and there are rules for what you can and can't do in that context. In a different context, in direct examination, for example, there are different rules. Here, the judge tells Boies that he can ask Page about the exhibit, but in a very limited way. He can ask, and whatever the answer is, that's as far as he can take it. You may think this is all a little silly, but note this part, where the judge says to Boies, "You have a limited latitude to bring this up, but the
problem is it isn't real impeachment because he didn't sign
this document", he means this: in a trial you can't just walk in with a document without proving some things about it. With Mr. Page, he had said in his deposition that he didn't know Lindholm, didn't remember him, and he didn't sign this document that says Larry and Sergei asked that Lindholm do such and such, so it doesn't prove that Page really did know him. That is what the judge is pointing out, even though he's allowing the exhibit to be used. And he says, "So you can show No. 10 to the jury, but it is not
actually in evidence yet because he's -- he presumably never
saw this."
Later in the transcript, Larry Page takes the stand, and indeed Boies shows Exhibit 10 to him and asks him about it, and let's see how it goes:
Yes, software is more predictable than the law, and in that sense the law is more squishy, but there are still rules to the law. A lot of them. But it's more like chess, where there are rules but a lot of different ways to play them out. That's why I always say the law is like chess, but with people.
And judge's have wide lattitude to make pragmatic decisions. And of course, sometimes those decisions end up being challenged on appeal, as we're now watching play out in the Apple v. Samsung case, where Samsung is challenging some of the decisions that the court made about which exhibits could and could not be used.
One other thing that Mark Webbink noticed in the cross examination of Oracle's expert, Mr. Scriven, by Google lawyer Daniel Purcell:
And with that, enjoy the transcript, and if you notice anything of interest I failed to highlight, please do so in your comments, because your comments are incredibly helpful, in that you do notice fine points and details that nongeeks might miss:
Pages 430 - 647
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
BEFORE THE HONORABLE WILLIAM H. ALSUP
ORACLE AMERICA, INC.,
Plaintiff,
VS.
GOOGLE, INC.,
Defendant.
No. C 10-3561 WHA
San Francisco, California
April 18, 2012
TRANSCRIPT OF JURY TRIAL PROCEEDINGS
APPEARANCES:
For Plaintiff:
MORRISON & FOERSTER
[address]
BY: MICHAEL A. JACOBS, ESQUIRE
KENNETH A. KUWAYTI, ESQUIRE
MARC DAVID PETERS, ESQUIRE
DANIEL P. MUINO, ESQUIRE
BOIES, SCHILLER & FLEXNER
[address]
BY: DAVID BOIES, ESQUIRE
ALANNA RUTHERFORD, ESQUIRE
(Appearances continued on next page)
Reported By: Katherine Powell Sullivan, RPR, CRR, CSR #5812
Debra L. Pas, RMR, CRR, CSR #11916
Official Reporters - U.S. District Court
430
APPEARANCES (CONTINUED):
For Plaintiff:
BOIES, SCHILLER & FLEXNER
[address]
BY: WILLIAM FRED NORTON, ESQUIRE
STEVEN C. HOLTZMAN, ESQUIRE
ORACLE AMERICA, INC.
[address]
BY: ANDREW C. TEMKIN, CORPORATE COUNSEL
DORIAN DALEY, GENERAL COUNSEL
For Defendant:
KEKER & VAN NEST
[address]
BY: ROBERT ADDY VAN NEST, ESQUIRE
CHRISTA MARTINE ANDERSON, ESQUIRE
DANIEL PURCELL, ESQUIRE
MICHAEL S. KWUN, ESQUIRE
KING & SPALDING LLP
[address]
BY: BRUCE W. BABER, ESQUIRE
GOOGLE, INC.
[address]
BY: RENNY HWANG, LITIGATION COUNSEL
For Dr. Kearl:
FARELLA BRAUN & MARTEL LLP
[address]
BY: JOHN L. COOPER, ESQUIRE
Also Present:
SAFRA CATZ, President and CFO
Oracle Corporate Representative
CATHERINE LACAVERA
Google Corporate Representative
_ _ _
431
P R O C E E D I N G S
2 APRIL 18, 2012
7:28 a.m.
(Proceedings held in open court, outside
the presence and hearing of the jury.)
THE COURT: Shall we start?
MR. VAN NEST: Good morning, your Honor.
THE COURT: How is everybody?
MR. VAN NEST: Just fine.
THE COURT: Getting plenty of sleep?
(Laughter.)
MR. JACOBS: As long as I stay on New York time.
THE COURT: I know trial is brute work. I don't
think the press understands how hard it is to try a case if
you're the lawyer. You probably get about three hours of sleep
a night, maybe not even that much.
So I may not seem like it, but as an old trial lawyer
myself I'm sympathetic.
All right. For the benefit of the press, somebody
yesterday thought that I was saying that you can't come in and
out of the courtroom. At least that's what my excellent Clerk
told me. I don't go quite that far. I don't like it when
members of the press or the public are going in and out of that
door a lot, because think about it. It's a big distraction and
the jury will look over there and lose track of the excellent
432
cross-examination that the lawyers are trying to do, or for
that matter the direct examination.
So I discourage you from doing it, but I'm not going
to say you can't. If you want to go in and out okay. We'll
try it and see how it goes, but if it gets out of control, then
we'll have to deal with it. So please be mindful of the need
for everyone in the public seating to be courteous with these
lawyers and not distract from their opportunity to make points
with witnesses and so forth.
So the CSO's will please understand that I'm not
saying people can't come in and out. I like to see it happen
at the breaks, natural breaks, like at the end of a direct
examination or at the end of a cross, but I won't say you can't
come in in the middle. However, if it becomes a problem, I'm
going to adjust that.
With respect to the key pads, it is important that it
be absolutely silent and no noise out there. I think -- my own
observation is that, with one exception, all of you are doing a
great job on that and I appreciate it. And I know the lawyers
do, too. All right. So there we are on that piece.
Any issues the lawyers want to bring up today?
MR. JACOBS: A few items, your Honor.
First of all, just to note, we have provided I
believe, your staff has a copy of our deposition designations
of Larry Page, as the Court has requested, along with a DVD of
433
the video.
THE COURT: I haven't seen that yet. Show me what
you're talking about.
(Whereupon, document was tendered
to the Court.)
THE COURT: So there is nothing highlighted here, so
that indicates that there is no complaints, right?
MR. JACOBS: This is what was actually played in
court.
THE COURT: Oh, oh. I'm sorry. I thought you wanted
me -- okay. So then this is Trial Exhibit 1041? Is that it?
That's what it says here.
MR. JACOBS: That's what it says, yes, sir.
THE COURT: So that will just be made part of the
record. Excellent. Thank you for doing it.
(Trial Exhibit 1041 received in evidence)
THE COURT: Dawn, I'll give it back to you.
THE CLERK: Thank you.
(Whereupon, document was tendered
to the Clerk.)
THE COURT: What's next?
MR. JACOBS: We would like to move into evidence some
exhibits that are undisputed, but would rather not take jury
time to do this.
THE COURT: How many do you have?
434
MR. JACOBS: There are a fair number. They are of a
type. So we have the copyright registrations and we have the
source code for various versions of Java. And I could --
THE COURT: All right. Is there going to be a
problem here?
MR. VAN NEST: Yes, there will be.
THE COURT: Give me a heads-up on the problem.
MR. VAN NEST: The heads-up is that we had agreed
that most of the copyright registrations could come in.
We were objecting on the source code because that's
really not self-explanatory. They should come in with a
witness.
There are some numbers listed on the copyright
registration list that were inaccurate or is messed up. I
thought we were in the process of putting an agreed list
together to give to your Honor. I'm happy to meet-and-confer
with Mr. Jacobs on it, but the meet-and-confer wasn't complete,
as far as I understood.
MR. JACOBS: Just a moment, your Honor. I have a
different understanding.
THE COURT: All right.
(Discussion held off the record
amongst plaintiff's counsel.)
MR. JACOBS: We will do this offline, your Honor.
THE COURT: If there is an objection, you have to do
435
it the hard way. There is no point in offering a stipulation
until it's ready. So that will just have to be done later.
Okay. What else?
MR. JACOBS: There was one exhibit used with
Mr. Page's video deposition yesterday that did not come into
evidence, was not received into evidence, and that's Exhibit 2.
THE COURT: Well, on the thing that you gave me, that
was the translation, it shows that it was -- it did come in.
MR. JACOBS: It was shown in court and then your
Honor reminded us of the importance of formally moving them
into evidence, and we checked and understood that 2 was in.
THE COURT: All right. Exhibit 1, 2, 7 and 401,
correct?
MR. JACOBS: Yes.
THE COURT: All of those I'm going to receive in
evidence unless I hear an objection.
MR. VAN NEST: I'm sorry. What's the list, your
Honor?
THE COURT: 1, 2, 7 and 401. Those are the ones
shown during the deposition of Larry Page.
Any objection? One is already in independently.
MR. VAN NEST: No objection, your Honor.
THE COURT: All of those are received.
(Trial Exhibits 2, 7 and 401 received in evidence)
THE COURT: Now let's do this in the future. Before
436
you show a videotaped deposition, you need to -- and if
anything in there is going to be shown to the jury from a
document, you need to move it into evidence first. This not
after the fact. Okay? That way we will sort this out ahead of
time.
Okay. What's next?
MR. JACOBS: There are other documents we would like
to move into evidence. They represented party admissions.
THE COURT: How many much those are there?
MR. JACOBS: 17, your Honor.
THE COURT: Let's try the first one, just by exhibit
number.
MR. JACOBS: Trial Exhibit 3.
THE COURT: Any objection?
MR. VAN NEST: I'm not even sure what it is, your
Honor. This is not something I understood was asked for,
requested or even mentioned until right now.
MR. JACOBS: That's not correct, your Honor. We
emailed this over two days ago and then we reminded Mr. Van
Nest's colleagues of this yesterday. There may be an internal
communication problem.
THE COURT: So show counsel No. 3. Any objection to
No. 3?
MR. VAN NEST: This is a trial exhibit that hasn't
been shown to a witness yet.
437
THE COURT: That's not -- that's not necessarily a
basis for -- you have an evidentiary objection?
MR. VAN NEST: I object, your Honor.
THE COURT: It's not in. It's not in. That's
enough. If you object, it's going to being done the hard way,
through a witness.
Now, I hope you're not doing that just so they will
burn up their time.
MR. VAN NEST: I'm absolutely not, your Honor. This
was handed me now for the first time. I'm not sure why we're
even engaging in this.
THE COURT: We're not going to do it this way,
Mr. Jacobs.
I think you and Mr. Van Nest should have a conference
on this and not somebody way down, down the totem pole.
Something has gotten lost in translation. So we're not going
to do it this way. You're going to have to do it through a
witness.
All right. What else do you have?
MR. JACOBS: You raised four questions yesterday and
have answers or a process for answers, if you would like to go
over that now or you would like to defer that.
THE COURT: Go ahead, please. I'm interested in the
answers.
MR. JACOBS: So we did a count of the number of
438
methods in the 37 API packages that are copied in Android and
it's -- plus or minuses around 4500.
THE COURT: But these are not copied word-for-word,
are they?
MR. JACOBS: Yes, they are copied word-for-word.
THE COURT: Word-for-word?
MR. JACOBS: Yes.
THE COURT: I thought they used different source
codes.
MR. JACOBS: You asked for the number of methods that
are -- I understood that the API elements of the methods are
what you were asking about and that's what was copied
word-for-word.
THE COURT: You mean, like a declaration?
MR. JACOBS: Correct.
THE COURT: But not the source code that implements
it?
MR. JACOBS: Not copied word-for-word, your Honor.
We do believe the structure of the source code is reflective of
the copying of the method declarations that will be illustrated
in the testimony that comes today or tomorrow.
THE COURT: All right, 4500. Okay. Thank you.
MR. JACOBS: Then when Dr. Reinhold testifies, he
will explain how these API specifications are developed that
will help answer your question about contributions from third
439
parties.
THE COURT: Are there any contributions for third
parties or is it all done in-house by Sun?
MR. JACOBS: There are contributions from third
parties.
THE COURT: For now that's enough to note.
Okay. What's next.
MR. JACOBS: Then you asked for a definition of a
method declaration.
THE COURT: I think I know that now, but you go ahead
and tell me.
Can I say it in my own words and then you correct it?
MR. JACOBS: Sure.
THE COURT: All right. I'm going to be more generic
and not in Java per se, but then you can correct it.
In any programming language the program needs to know
when a subroutine is being called out or identified. So if you
have a subroutine, for example, that will return the greater of
one or two things, you need to have a -- you need to declare
that it exists so that the program will be on the look-out for
that, or the computer will be on the look-out for that
subroutine.
But in addition, you need to say where it starts and
stops so that when the subroutine is called up, it will -- the
computer goes to that point, does the routine. It says end
440
sub. Then it goes back to where it was in the program. And so
the declaring of the subroutine is what we're talking about.
Now, that is a concept I understand. It may not be
exactly -- it may not even be close to what you're talking
about, but tell me how close or far off that is?
MR. JACOBS: I think it's a different use of the term
perhaps. In the world of this dispute, a method declaration is
a statement that defines an API element. So the declarations
for the different kinds of elements, packages, classes,
interfaces, fields and methods are done differently, but they
all include the name of the element and define many of the
relationships the element has to other API elements.
The method declaration includes the name of the
method, the type returned by the method, the parameters of the
method, if any, each of which have a type and a name. And
optionally a method declaration can begin with a modifier, like
public or static, and may be followed by the exceptions that
the method shows. And then in the implementation the
declaration is followed by the Java code that carries out the
function of the method, even if the function is literally to do
nothing.
I think that's a different meaning of declaration
than your Honor is --
THE COURT: That's a more -- okay. I don't think
it's necessarily different from what I said, but it's better
441
than what I said.
All right. Let's hear from the other side. Do you
have any --
MR. JACOBS: There was one more question. You asked
about derivative works and whether it's a fact issue.
THE COURT: Correct.
MR. JACOBS: I think we know this -- I don't think we
truly know the answer to this question yet because the
testimony hasn't come in and the instruction hasn't been given.
So one could imagine a world in this lawsuit still in
which there are fact issues about whether the code is a
derivative work of the specification.
I don't expect that. And I think that was the thrust
of Google's counsel's comments also.
If the instruction is that the selection, structure,
arrangement, organization of the application programming
interfaces is protectable by copyright because Google is not
likely to contest that that -- that that material is copied
into the Android class libraries, then there should not be a
fact issue whether the class libraries are a derivative work of
the specification.
THE COURT: Well, in the ordinary case -- in the
ordinary case, let's say, where somebody has a movie script and
then the movie company comes out with a similar movie but it's
not quite the same, is the issue of derivative work something
442
for the jury or is it for the judge?
MR. JACOBS: It probably starts out with the judge,
and then moves to the jury if the judge doesn't resolve it at
the level of the extrinsic test. But if -- but so the short
answer to your question is: It could well be a question for
the jury where the defendant is disputing substantial
similarity of the protectable element of the work.
THE COURT: Okay.
Mr. Van Nest, did you want to weigh in on any of
these issues?
MR. VAN NEST: Yes, your Honor. Mr. Kwun will do so.
THE COURT: Very well.
MR.KWUN: Good morning, your Honor.
THE COURT: Good morning.
MR. KWUN: So I think, first of all, when they were
talking about a method declaration and they said that it
defines the elements of the API, a method declaration defines a
method. That's why it's called a method declaration. I've
never heard the term used with other elements, but -- or at
least not often, but I suppose you could have an interface
declaration, which would be a declaration for an interface
or --
THE COURT: You could define an array, couldn't you.
MR. KWUN: You could have an array -- I don't know
that I've ever heard it referred to as an array declaration,
443
but I suppose that usage would probably be understood.
But if it's a method declaration, then it has to be a
method because that's why it's called a method declaration.
On this last point, were the Court to conclude that
the structure of the APIs is copyrightable, there is still a
question of whether or not there is infringement and at that
point there would need to be a comparison of the works; not
just the material taken, but the works. And depending on what
the Court said was copyrightable, and there were what was
allegedly copied, that comparison would be different.
If the Court said that almost nothing was
copyrightable, but something was, then there would be a very
tightly constrained range of protectable expression, which
under Apple v Microsoft would require a virtual identity test
as opposed to more substantial similarities.
So I think it overstates things to say that there
would be no jury question in that instance.
If the Court were to find that the material is not
protectable, then there would be no jury question because there
would be nothing protectable that was copied.
THE COURT: Any other comments?
MR. KWUN: No other comments.
THE COURT: Do you agree with the 4500 number?
MR. KWUN: I think that number is in the ballpark.
THE COURT: So have a seat. Thank you.
444
One possibility here. Let me preface this by
beginning, I do not know the answer and I'm going to listen
carefully to the evidence because I think the evidence will be
highly illuminating on this, but I don't know whether at the
end of the evidence the Court is going to say the SSO is -- by
Structure Sequence Organization is protectable or not
protectable.
Now, one possibility is to defer that decision and
let the jury answer the question; go to the jury as if it is
protectable, reserving on that issue so that even if I were to
say later it was not protectable, at least we would have a
record that could go up to the Court of Appeals and give the
Court of Appeals the options to -- you know, both options as
opposed to having to retry the case.
So I want you to know I'm thinking about that, that
possibility, but right now I haven't learned enough evidence
here to give you a decision on whether or not the SSO is in and
of itself copyrightable.
I want to come back to something practical for the
jury. Would you please come up with a list, I hope it can be
one page, of the deposition exhibit numbers. This is too long.
This shows you the -- one of the problems with modern
computers. You see how big that document is? There are really
only four lines on there that make any difference. And what I
want you to do is come up with a one-page simple document that
445
has every single translation needed for the entire case where
you did not follow my guidelines and you nonetheless marked
deposition exhibits out of order.
And so it would say -- I don't know, do it anyway you
want. Say, Trial Exhibit 1, Deposition 517, but you can get it
all onto one page instead of having this (indicating).
particularly confusing document.
You have don't have to give it to them today, but
sometime in the next week or so let's come up with a
comprehensive omnibus, one-page-fits-all for both sides. Both
sides probably have the same problem and we'll give them a
handy-dandy cheat sheet that tells them what deposition exhibit
is a trial exhibit.
All right. The other thing to do is maybe a Who's
Who, a one-page Who's Who of -- they know who the famous people
are, but they may not know who the not-so-famous people are and
what their position is. And I think that would be a nifty
document to give to the jury so they will have that. And I ask
you to meet-and-confer and give to the -- come up with an
agreed-upon one page, like 10 names from each side, 12 names
from each side, something like that.
All right. Anything more before we get started?
MR. BOIES: I have one thing, but go ahead, please.
MR. VAN NEST: We just had two things, your Honor, on
witnesses and exhibits. One is just a heads-up.
446
Mr. Boies and I, I think, have worked this out, but
we received from the plaintiff last night a list of additional
exhibits they wanted to use with Mr. Page. Obviously, they
recognized that's late. They agreed to withdraw those. Mr.
Boies told me if he intends to use one of those, he'll bring it
over and I can see it. We'll confer first.
So there may be a little bit of that if we get into
that. I just want to alert the Court to that possible issue.
THE COURT: You can always use it for impeachment,
but I do regard impeachment as narrow.
MR. VAN NEST: Right.
THE COURT: It has to be a document authored by or
signed by something -- it's not just a broad statement that
contradicts the general themes of your case.
MR. VAN NEST: Right.
THE COURT: It has to be a prior inconsistent
statement by that witness or close to it.
So you could use it for that, but it wouldn't
necessarily come into evidence. It would just -- you would
just have to do it in the impeachment way.
But if you want to get it into evidence as part of
your case-in-chief, then -- now, here is the thing, Mr. Van
Nest. You're going to have the same problem in due course.
You lawyers ought to cooperate with each other and if you're
not really prejudiced, you ought to agree to what Mr. Boies
447
wants to do.
On the other hand, if you were prejudiced, you ought
to stand on your rights and insist on the -- so forth. But I
know before this trial is over, you're going to be begging me
to do exactly what he wants to do and I will remember this
moment.
MR. VAN NEST: I'm sure you will, believe me.
I think we have worked it out in this instance and I
just wanted to alert the Court so that you weren't surprised by
whatever meeting-and-conferring pursued.
Mr. Purcell has a comment on Mr. Screven.
MR. PURCELL: Yesterday afternoon they disclosed a
demonstrative that they want to use with Mr. Screven today and
it's late. They needed to disclose those two days before the
witness examination.
THE COURT: Does that mean for the rest of the trial
if you're late, you're going to be out of luck?
MR. PURCELL: The rule as I understand it is --
THE COURT: That is the rule.
MR. PURCELL: (Continuing) -- if you want cross
exhibits, you have to disclose all the direct exhibits two days
before. They did disclose the other direct exhibits. We did
give them cross exhibits.
We think there is prejudice and we would object to
them using it in the demonstrative.
448
THE COURT: Can I see the demonstrative?
MR. NORTON: We will not use the demonstrative.
MR. BOIES: Your Honor, with respect to what
Mr. Van Nest is talking about, there is one exhibit that I
think it judicious just to raise with the Court in terms of
impeachment, and that is Exhibit 10.
THE COURT: Show it to counsel and then show it to
me. Is this to be used with Mr. Page?
MR. BOIES: Yes, your Honor.
(Whereupon, document was tendered
to the Court.)
MR. BOIES: This is the famous Lindholm email that is
not signed by Mr. Page, but it is a party admission and it does
directly contradict what Mr. Page said on the witness stand
yesterday.
THE COURT: Which part contradicts it?
MR. BOIES: Where he says that he didn't know
Mr. Lindholm and didn't give him any instructions.
What Mr. Page says is what we have been actually
asked to do by Larry and Sergei, which obviously refers to --
THE COURT: Remind me. Yesterday he said he did not
know who Mr. Lindholm was.
MR. BOIES: Yes.
THE COURT: So what's the problem with -- this
document is clearly going to come into evidence eventually.
449
What's the problem with letting him show this to him now? And,
"This email says that Larry asked him to do this, and is that
true or not." What's wrong with that?
MR. VAN NEST: Two things, your Honor. It doesn't
meet your criteria for impeachment. It's not a statement by
Mr. Page or adopted by him, so it falls outside that.
I think it also possibly launches into some
privileged areas, but I'm not sure what the question would be.
I have no problem with Mr. Boies asking Mr. Page
whether he remembers giving Mr. Lindholm any instructions, but
obviously Mr. Page didn't author this. He's not a recipient of
it. I think this would be far outside what you would normally
allow for impeachment, certainly.
Again, it was disclosed after, after he was on the
stand. Not just late, but after he was on the stand.
THE COURT: Here is the ruling. Look. I'm going to
let Mr. Boies use this as follows. This document is clearly
going to come into evidence. The Court of Appeals for the
Federal Circuit has said it's not privileged and every judge
that's ever looked at it says it's not privileged. So it's
going to come into evidence in due course.
It does refer to the witness on the stand and it's a
fair question, whether or not he will stand by what somebody
else in the company says he did. So I'm going to let him --
I'm going to let Mr. Boies ask that question.
450
Now, what I don't want you to do is to get into an
argumentative mode over it. If he says, "No, I don't know who
Mr. Lindholm is. I never heard of him. This is a forgery. He
doesn't even work for the company," whatever. Whatever the
answer is. Let's not get into an argument with him over it.
You have a limited latitude to bring this up, but the
problem is it isn't real impeachment because he didn't sign
this document. But since it refers to him, and somebody else
in the company is probably going to come in and say he did, in
fact, ask us to do this -- we don't know even that really for
sure, but we -- there is enough good faith evidence here in
this email to say that that probably happened that I'm going to
let you ask a limited number of questions on the subject of did
he ask Mr. Lindholm to do this. I think that's -- that's a
legitimate thing.
So you can show No. 10 to the jury, but it is not
actually in evidence yet because he's -- he presumably never
saw this.
All right?
MR. VAN NEST: Your Honor --
MR. BOIES: Your Honor, I just want to clarify one
thing. We did not give these documents specifically for
Mr. Page, but this was one of our 10 documents that we gave to
the Court. And we did notify them that we were going to use
these documents, and we had a misunderstanding on our side as
451
to whether or not those documents carried forward
witness-to-witness. It was our intention to use these 10
documents with every one of the witnesses. And there was a
miscommunication --
THE COURT: I think you've got to tell them
witness-by-witness.
MR. BOIES: Yes, yes.
THE COURT: But this document is the -- it's one of
the top 10 documents in the whole case. There can't be any
prejudice.
I know Mr. Van Nest has been thinking about this
document. There is no -- there's no prejudice to using it in
the limited way that I've said.
Yes, Mr. Van Nest. What were you going to say?
MR. VAN NEST: My only request, your Honor, is,
again, if you're going to allow the examination, that's fine;
but I really don't think this should be published to the jury
with the witness if the witness says, "I've not seen it. I
don't know it."
What he said yesterday is he thinks Mr. Lindholm
works for the company, but he doesn't have a clear recollection
of him.
THE COURT: The thing is Mr. Lindholm is going to
come in and put this into evidence. Then we have to bring back
Mr. Page to go over it all over again. And I have the
452
discretion to order the method of proof, and that's a
cumbersome method of proof. There is no doubt this is going to
come in.
I'm going to be let it be shown to the jury. But
when Mr. Lindholm comes or somebody else comes, you need to --
you need to get it into evidence then.
All right?
MR. BOIES: Yes.
THE COURT: All right. I'm going to hand it back to
Mr. Boies.
(Whereupon document was tendered
to counsel.)
THE COURT: Here is the amount of time. 131 minutes
has been used by Oracle. 62 minutes has been used by Google;
131, 62. Okay? I'm keeping track of your time.
Let's bring back the jury and, but don't bring back
the witness quite yet. I have a few things I want to take up
with the jury. And then we will bring back the witness so he
should be in the ready position to come back.
(Jury enters courtroom at 8:00 a.m.)
THE COURT: Welcome back. Have a seat, please. Okay
this morning?
(Jury nodding affirmatively.)
THE COURT: Have your notepads? The Federal donuts
and coffee still working out?
453
(Jury nodding affirmatively.)
THE COURT: Good. Let me go over a few things and
then we're going to pick right up with the witness that we had
on the stand, but I want to first say that the -- to apologize
for something that is not really an apology, but an
explanation.
In the course of a trial you will undoubtedly --
especially one this long -- run into the lawyers in the
elevator maybe some day or at the coffee stand on the second
floor, or maybe the 10th floor. And you will note probably
that they are -- they don't say much. They say maybe "good
morning" and that's it. Period. And you might think, "Boy,
that's such a rude lawyer. That guy, he wouldn't even talk to
me about the weather."
Well, actually they are not being rude. They are
being very respectful of you and the important job that you
have and showing you respect by making it clear that they're
not trying to curry any favor with you by chatting you up. You
understand that? So if you do run into them, which they --
they actually go out of their way to try to avoid you.
But they do it out of reasons of professionalism and
respect for the process. And I say this to all juries so that
they understand there is no rudeness involved at all. It's
exactly the opposite. It's respect for you and the job you've
got to do. So that's point number one.
454
Point two. You have seen some of these depositions
now and I want you to understand that the testimony given in a
deposition is evidence in the case. So even though the lawyer
may be reading to you the deposition -- you know, I told you
what the lawyers what they say is never evidence -- that is an
exception. If they actually read it out loud, "Question,"
"Answer," "Question," "Answer," verbatim, then that is evidence
in the case that you may consider. So I want you to be aware
of that.
Deposition testimony counts just as much as testimony
here in the courtroom unless for some special reason, which I
might tell you, and every now and then it has a limited use,
but that's rare. So basic rule, deposition testimony counts
just as much as trial testimony.
Now, I have one other thing which is a -- I wanted to
try to describe very briefly some of the things that -- as a
heads-up that you might want to be listening for because at the
end of this part of the trial, I will be asking you to make
certain specific decisions about them. Of course, you need to
be paying attention to everything. There are many issues going
on here.
But putting myself in your position, you may be
sitting over there saying, "My God, what am I going to have to
decide?" You know, you're hearing all about high finance and
computers and, you know, brilliant people who know how to
455
program these gigantic machines. And you're saying, "What am I
supposed to decide at the end of this case?"
So let me give you a very brief summary and I will
give you details on this later. But this is kind of a just an
introduction, is the word I would use.
So first of all: What is a copyright? A copyright
is a right under federal law to exclude somebody else from
reproducing some copyrighted work. A copyrighted work can be a
book, a musical work, a literary work, dramatic work. There
are a quite a number of things, a photograph even, motion
picture, sound recording, architectural work. And it can be a
computer program.
Now, some things cannot be copyrighted. Those are
things like facts or ideas, procedures, processes, systems,
methods of operation, concepts, principles or discoveries
cannot themselves be copyrighted. So if somebody were to write
a book about Einstein and e=mc squared, then that doesn't mean
that they get a copyright on the book. That doesn't mean they
get the exclusive right to use those ideas. E=mc squared is
part of science, right? So that doesn't mean that just because
you get a copyright. But what it does mean is that you have
the right to that -- the words in that book, the way you set
out the book and the copy, so to speak, that belongs to you.
Now, to prove infringement the owner of the copyright
has got to show copying of the original elements of the
456
copyrighted work. And to prove copying what the plaintiff
needs to show is that the defendant had access to the
copyrighted work, access to, and that there are substantial
similarities between the defendant's work and the copyrighted
work.
Now, I have one last thing to say which may be of
some use to you as a framework for you to be thinking about
this case, because you've heard a lot about Java. You have
heard a lot about Android. And you may be wondering over
there, what is it that's actually in contention?
So first I want to say what's not in contention. And
the parties have been pretty good about helping me identify
this. I will tell you what's not in contention.
So Oracle does not accuse copyright infringement of
the following, does not: Android's use of the Java programming
language. That's not challenged, nor is any particular name of
an API -- by now you know what that stands for. It stands for
Application Programming Interface. The particular name of an
API element including names for the packages, the classes, the
exceptions, the fields, the methods, the parameter names.
Those names themselves are not challenged.
Next is not challenged is the Android source code
457
implementing the APIs in these 37 packages, and this is at the
line-by-line level.
Now, I'm going to give you an important exception to
that in a minute, but in this case, as I understand it, Oracle
is not challenging the line-by-line of the millions of lines of
code, except in a few instances. Nor is Oracle challenging the
idea, the idea of an API.
You've heard about a virtual machine that will
translate to different types of computers, like Apple versus
IBM. The Dalvik is one of the names you've heard. The Dalvik
virtual machine is not challenged in this case. That is not
something that Oracle is accusing of having been part of any
infringement.
And, finally, what is not being challenged is
Android's API packages and their contents, except for the 37.
There are 37 API packages that are challenged. There are a lot
more than 37 involved, but 37 is the number that's being
challenged.
All right. So now what is being challenged? All
right. So now I'm going to try to help you on that. And I
think the lawyers did a pretty good job of laying this out for
you in their opening statements, and they will eventually
correct me if I get it wrong. This is, of course, subject to
me, myself, possibly misunderstanding here, but I think I've
got this right.
458
What is being challenged? Now, the part that is
being accused of infringement are these 37 Application Program
Interfaces.
Now, there are two files that -- in the 37
Application Program Interfaces. Two files. Not two
Application Program Interfaces, but two files somewhere inside
all those subparts that contain nine lines of the range check
code and it is accused here by Oracle of being
symbol-by-symbol, line-by-line exactly the same. And that's
accused of being copied.
In addition, there are two files within the 37 where
there are some comments in the file that are accused. Now,
what is a comment? I think what you will find, and this is
subject to the evidence, is a comment is something that is
actually listed there in the listing of the program, but it is
not part that gets compiled by the computer; but is a plain
English statement for the reader so that the reader comes along
later and looks at it and tries to figure out, you know, what
was this meant to do? What does this line of code do? And the
comment says, this is the one that, you know, picks the greater
of A versus B or whatever. Whatever the comment wants to say.
The programmer is trying to keep track of -- be kind of like
recipe maybe. You put a little side note out there saying what
is the point of this step in the recipe. The comment is trying
to say: What is the point of this line of code?
459
Anyway, those don't get compiled by it computer, but
they are in plain English that are read to the -- that the user
can look at. All right. So that is the comments.
So to back up. Two files are accused of having
identical comments.
Okay. In addition, in these 37 Application Program
Interfaces accused are declarations. I'm not going to try
really to explain what a declaration is. I'll just say the
evidence will tell you, but the declarations are something
that -- it's like a title in some ways. A title of a method.
Or a title of a routine. And it's specific language with dots
and parentheses and so forth that the computer will recognize
and the program will recognize to call up a particular method.
A declaration.
And accused here in this system is a -- it is said
that the declarations are identical word-for-word,
symbol-by-symbol.
460
the same file organization; that the files, the subfiles, the
subsubfiles, everything is organized exactly the same way or
very close to it according to Oracle. And so that while the
line-by-line code wasn't copied, the overall architecture,
according to Oracle, was copied.
So that's another item that you should be listening
for, is Sequence Structure Organization. One last item on the
37 Application Program Interfaces. You know how when you buy a
car or anything really, you get a user manual, tells you how to
use it? And, well, there is documentation that is pretty thick
in this case that explains what the various methods and classes
and fields, you know, what they do for a living. And it's
precise statements of what a particular method would do so that
a programmer, you know, who wants to do an application can look
at that and say, "This is the one I do need to use. This is
the one I don't need to use," and it tells the programmer who
is doing the application what that item does. It might specify
more than that. It might even say what inputs are needed, what
outputs are going to be returned. It's a detailed booklet.
That's written, though, in plain English. That's not
something the computer reads. That's written so that the user
can understand what's going on. In this case, Oracle accuses
Google of having plagiarized the documentation.
Okay. So just to put a point on it. I'm going to go
back in reverse order.
461
Sort of the user manual documentation, that's in
issue. That you should be listening for.
Structure, Sequence and Organization. Not at the
line-by-line level, but the overall architecture, that's in
issue.
So that's the story on the 37 Application Program
Interfaces. Those are things that you should be paying a
little extra attention to, though you must pay attention to
everything in the case.
Now, beyond the 37 I will just say one last sentence.
I believe there are eight additional files that Oracle claims
that are word-for-word copied from its copyrighted materials.
Now, this is not the final word. What I have just
told you is subject to changing events, the way the evidence
comes in. And nothing that I have said to you is evidence. Nothing.
What I have said to you is simply a heads-up to try
to help you, you being brand new to this whole case. And I
know you're over there doing your best to try to understand it.
What I'm trying to do is give you the benefit of what I have
learned are the issues between these two sides.
I'm in no way suggesting to you which way you ought
to come out. That would be entirely up to you. I'm not saying
462
who is right and I'm not saying who is wrong. I'm just trying
to help you understand the issues that you will have to look at
when we get a couple weeks down the road.
All right? Now, one thing that you can do over there
if you -- as you go along, if you are confused about something,
I encourage you to write out a note and at the next break you
give it to Dawn, and Dawn will give it to me, and I'll give it
to the lawyers. Then the lawyers might be able to work --
answer your question through one of the witnesses. So you're
free to do that. I want you to know you are -- you're not only
free, I encourage it. If it's something you feel would help
you understand the case better, just write it out and then the
lawyers will address it in due course.
All right. So the lawyers want to add or subtract
anything from my summary?
MR. BOIES: No, your Honor.
MR. VAN NEST: No, your Honor.
THE COURT: All right. Good. Thank you.
We can bring the witness back in.
(Brief pause.)
THE COURT: Mr. Boies, while we're waiting, can you
give us a heads-up of how much longer you have on direct?
MR. BOIES: I would think 30 to 40 minutes, something
like that.
THE COURT: Any stipulations you want to read to the
463
jury while we're waiting?
MR. BOIES: I don't think we have those ready, your Honor.
(Mr. Larry Page enters the courtroom.)
THE COURT: So, Mr. Page, welcome. Please have a
seat. Make yourself comfortable. The microphone needs to be
about this close. Please have a seat. You can move it back.
It moves all around.
And I remind you that you're still under oath. All
right?
THE WITNESS: Yes.
THE COURT: Mr. Boies?
LARRY PAGE,
CROSS-EXAMINATION RESUMED
BY MR. BOIES:
Q. Good morning, Mr. Page.
A. Good morning.
Q. Yesterday we were talking about the issue of certain
claims that Oracle has made that Google had engaged in the
literal copying of certain copyrightable material from Sun and
Oracle.
Do you recall that subject generally?
464
A. Yes, of course.
Q. All right. Now, let me ask it this way: Would it have
been a violation of Google policy for Google engineers to copy
the copyrighted material of other companies?
A. Again, as I said yesterday, I think we -- we did nothing
wrong and we really looked carefully. I imagine that whatever
process would be used for clean room implementation we were
very careful about what information we used and did not use,
which is the definition of what a clean room is.
Q. My question, I think is a "yes" or "no" question. Is
whether it is a violation of Google policy for Google engineers
to copy the copyrighted material of other companies?
A. I already told you I wasn't familiar with the details of
how we would operate a clean room.
THE COURT: He's not asking that.
Does Google have a policy about whether or not it's
okay to copy somebody else's copyrighted materials?
THE WITNESS: I think that -- I'm not aware of any
such policy. I think we do a lot to respect intellectual
property. And in our core business on search and other things,
obviously, we search lots of copyrighted material and we
provide snippets and other things. So that seems like a pretty
complex question.
THE COURT: All right. So that's the answer. I
think the witness has answered the question.
465
MR. BOIES: Thank you, your Honor.
BY MR. BOIES:
Q. Did you ever ask anyone to investigate whether or not
Google engineers had copied Sun or Oracle copyrighted
materials?
A. I don't recall any such asking of people.
Q. Okay. Was anyone at Google ever disciplined in any way for copying any Sun or Oracle copyrighted materials?
A. I'm not aware of any, any such action.
Q. Let me --
MR. BOIES: May I approach the witness, your Honor?
THE COURT: Yes.
(Whereupon, document was tendered to the witness.)
MR. BOIES: Let me hand had you Trial Exhibits 1
and 2.
MR. VAN NEST: Excuse me. What's the number?
MR. BOIES: 1 and 2.
MR. BOIES: Exhibit 1 -- and perhaps we can publish
that -- was admitted in evidence.
(Document displayed)
Q. This was a document that you previously identified that as
a document that had been presented in July of 2005. And it was
presented to the top executives of Google; correct, sir?
A. Yeah, that's what I believe.
466
Q. And if you look at the next to last page, Page 9 of 10 of
the exhibit?
(Witness complied.)
Q. There was the statement: "Must take license from Sun."
Do you see that?
A. Yes, I see that.
Q. Now, this was in July of 2005. And subsequent to July of
2005 Google attempted to negotiate a license from Sun, correct?
A. I don't remember the details of when we were not or not
negotiating with Sun. It seemed like it went on a long time.
MR. BOIES: May I approach the witness, your Honor?
THE COURT: Yes.
(Whereupon, document was tendered to the witness.)
MR. BOIES: I'm handing the witness Exhibit 7, which
I would offer as a party admission.
THE COURT: Any objection to 7?
MR. VAN NEST: It's in evidence, your Honor.
THE COURT: 7 is already in evidence. All right.
MR. BOIES: Thank you.
MR. BOIES: And if we could publish the email from
Mr. Rubin to Mr. Page?
(Document displayed)
BY MR. BOIES:
Q. This is an October 11, 2005 email to you from Mr. Rubin,
467
correct?
A. Yeah. There's a thread of emails here, but the bottom of
it is an email to me, yes.
Q. And the second paragraph Mr. Rubin writes:
"My proposal is that we take a license" --
And that's a license from Sun, correct?
A. That's what's written here, yes.
Q. (As read)
"My proposal is that we take a license from
Sun that specifically grants the right to us
to Open Source our product. We'll pay Sun
for the license" -- do you see that -- "and
the TCK."
And you know what a TCK is, do you not, sir?
A. That's some sort of Java testing thing, I think.
Q. And that is a Test Compatibility Kit that is designed to
assure that what you prepared or what Google prepared or what
somebody prepared is compatible with standard Java, correct?
A. My understanding is it does that and, also, generally
collects revenue for Sun. So it does many things, but -- yeah,
I think this is in the context of us negotiating with Sun for
their technology. The TCK is part of their technology.
Q. I agree that TCK is our way that Sun and Oracle make
money, but they are also a way in which they assure the
compatibility of versions of Java that are developed; correct,
468
sir?
A. That's correct.
Q. Okay. And the next sentence says:
"Before we release our product, the Open
Source community will make sure our JVM
passes all TCK certification tests so that we
don't create fragmentation."
Do you see that?
A. I see that.
Q. And you knew in 2005 that Sun wanted to avoid
fragmentation of Java, correct?
A. It's hard for me to speculate what Sun -- what Sun's
priorities were or what was important to them. It wouldn't
surprise me.
Q. Well, is it your testimony that you would have to
speculate to know whether Sun wanted to avoid fragmentation of
Java?
A. I think there are different editions of Java. There are
mobile editions or whatever.
I think that Java is a complex thing involving many,
many different things. So it's hard for me to speculate,
again, on what Sun -- what Sun's priorities were.
Q. Is it your testimony that you can't tell me without
speculating whether Sun wanted to avoid fragmentation of Java?
Is that your testimony?
469
A. No. I'm stating that we, obviously, were working on a
mobile edition of Java which, as I testified previously, was
causing a lot of problems. Like, we couldn't develop software
for the Java that existed. We had a closet full of 100 phones
that all worked different.
And I think Sun, and now Oracle, you know, needed
something that was -- actually worked. And so, obviously,
that's not the same thing. So that's fragmentation in a sense,
but actually it's something that needs to work. So it's kind
of hard to answer that question.
Q. Let me try to ask it this way. And this is a "yes" or "no" question, Mr. Page.
Do you, from your own personal knowledge and your
experience in the industry, know that Sun wanted to avoid
fragmentation of the Java Platform?
A. I think that they wanted to control the Java Platform.
THE COURT: No. You can answer that question "yes"
or "no," please. You can say either "yes" or "no" and then
give your explanation, or you can say "I don't know." But
you've got to say "yes," "no," or "I don't know" and then you
can have one sentence of explanation.
THE WITNESS: All right. Sorry.
A. Repeat the exact question?
BY MR. BOIES:
Q. I'll try to.
470
p>
Do you know, sir, from your own personal experience
in the industry that Sun wanted to avoid fragmentation of the
Java Platform.
A. Now or previously?
Q. Let me break it up.
Did you know from your own personal experience in the
industry, in 2005, that Sun wanted to avoid fragmentation of
the Java Platform?
A. Yeah. I mean, yes. Subject to the control and the other
things I mentioned.
Q. And did you know that in 2006 as well, sir?
A. I don't remember any difference between 2005 and '06,
seven years ago.
Q. Do you know that that was true in 2006, 2007, 2008, 2009,
2010, 2011, and today in each of those years, and including
today, Sun wanted to avoid fragmentation of the Java Platform?
Do you know that, sir?
A. I'm sure, yes. You know --
Q.
A. Periodically I feel like I was informed by somebody.
Q. And you played a particular role with respect to Android;
did you not, sir?
A. I think I was a big proponent of doing the Android
471
acquisition.
Q. And, indeed, you were the -- what is called within Google
the "executive champion" of the Android acquisition; correct,
sir?
A. Yeah. We require an acquisition to have a supporter, and I was listed as that supporter.
MR. BOIES: May I approach the witness, your Honor?
THE COURT: Yes.
MR. BOIES: Handing the witness Trial Exhibits 431
10 and 432.
(Whereupon, documents were tendered
to the witness.)
MR. BOIES: Each of which I would offer as party
admissions.
THE COURT: Any objection?
MR. VAN NEST: Objection, your Honor. 403.
THE COURT: May I see copies?
(Whereupon, documents were tendered
to the Court.)
THE COURT: Well, the 403 objection is denied as to
431.
MR. VAN NEST: Your Honor?
THE COURT: Yes.
MR. VAN NEST: May I be heard briefly on that?
THE COURT: Yes.
472
MR. VAN NEST: It's a -- 431 is really a Phase 3
issue not a Phase 1 issue. And it relates to some of our
earlier objections about numbers being thrown around. I note
he's not even on the exhibit.
MR. BOIES: I believe he is, if you look at the
bottom. But --
THE COURT: Is that the point of this document, is to
put big numbers out there?
MR. BOIES: No, your Honor. This document was talked
about specifically. This document was raised by counsel to the
Court. The Court denied the objection. This is exactly the
same document.
THE COURT: I'm going to let you use the document,
but if it goes where it should not go, then I will interrupt
you.
But the witness may not know anything about the
document. You've still got to lay foundation.
So subject to foundation being laid, I'll let you use
the documents.
MR. BOIES: Thank you, your Honor.
THE COURT: But the 403 objection is overruled, but
the foundation objection has not been ruled on. So you've got
to lay a foundation.
MR. BOIES: Okay.
473
MR. BOIES: And do I understand that 432 is admitted?
THE COURT: Neither are admitted yet. You still have
to lay the foundation, but the objection based on 403 is
overruled.
BY MR. BOIES:
Q. Let me ask you to look at Exhibit 432 first.
(Witness complied.)
Q. Exhibit 432 is --
MR. VAN NEST: Excuse me, your Honor. This should
not be published to the jury at this point.
MR. BOIES: It's not being published. Counsel is
entitled to establish what the document is. That much can be
done.
Go ahead.
BY MR. BOIES:
Q. This was a presentation in April of 2005 to the EMG;
correct, sir?
A. Sorry. Let me read it for a minute.
(Brief pause.)
THE COURT: It's not coming -- I don't want it to be
in the jury box yet. Dawn, is it just court and counsel?
THE CLERK: Correct.
THE COURT: Okay. Mr. Page, do you know what the
document is or not?
THE WITNESS: It's something about -- the email chain
474
seems somewhat random. The --
THE COURT: Do you know what it is or not?
THE WITNESS: I mean, I -- I don't recall it. It
looks like a presentation that would have been given to the
executive group, but this doesn't look necessarily like the
right version of it.
THE COURT: There is not enough foundation for it to
be admitted at this time.
MR. BOIES: May I be heard, your Honor, on that just
briefly or not?
THE COURT: Yes. Go ahead.
MR. BOIES: There is no question of the authenticity
of this document. The authenticity is not objected to.
This is directed to the EMG. He's on the EMG. It's
the executive management group. It's the very top executives
of Google.
THE COURT: Is there an objection or not?
MR. VAN NEST: There is.
THE COURT: What is the objection?
MR. VAN NEST: Lack of foundation.
THE COURT: I'm sustaining that. You've got to get
it in through a witness who can tell us what it is, unless you
want to put a young lawyer from your law firm on the stand that
says where this document came from, that the other side
produced it and so forth.
475
But right now I'm not going to suspend the Rules of
Evidence just because you believe it was produced by Google.
Maybe it was, but that's not been proven yet.
MR. BOIES: Your Honor, could I have --
THE COURT: The witness says it looks like a
goofed-up document.
MR. BOIES: Your Honor, they don't object that it was
produced by Google. That's not their objection.
THE COURT: The objection is being made that there is
no foundation.
MR. BOIES: Okay.
THE COURT: I'm sustaining that. We're going to do
it the right way.
The right way is if this witness can't identify it we
will bring this witness back after some other witness has
identified it and then you can ask your questions of Mr. Page
about the document since he's unable to identify it.
MR. BOIES: Thank you, your Honor. We will proceed
that way.
BY MR. BOIES:
Q. Let me ask you to look at Exhibit 431.
(Witness complied.)
Q. And I would direct your attention particularly to the
bottom of the page, of the first page of the document where
there is an email of October 11th, 2010.
476
Do you see that?
A. Yes.
Q. And it says it is copying "theoc." Do you see that?
A. Yes.
Q. And what is "theoc"?
A. Theoc is sort of the major executive management group at Google.
Q. And it is being copied in preparation for the board
meeting. Do you see that?
A. Yeah. I can read the document.
Q. And the board meeting is the Board of Directors meeting;
correct, sir?
A. I think that's -- I think that's what they mean, why.
Q. And if you look at the next two pages.
(Witness complied.)
Q. These were pages that were produced and presented to the
Board of Directors of Google, of which you are a member;
correct, sir?
A. I don't recall it, but I assume so.
MR. BOIES: Your Honor, I would offer Exhibit 431.
THE COURT: Any objection?
MR. VAN NEST: Objection, your Honor. Still lacks
foundation. The witness says he doesn't recall.
THE COURT: All right. From the -- whether you
recall or not, from the form of the document, just from the way
477
it looks, does it look like something that was produced by
Google?
THE WITNESS: Yeah. No, it was definitely produced
by Google.
Let me read the email thread a little bit and try to
understand whether it was the right version and such.
THE COURT: Take your time.
(Brief pause.)
A. I don't think it's clear from this this was used. I mean,
it says:
"I had not gotten any response from Andy on
the Android talking points I sent to him.
(You said you had talked to him in Dublin and
gotten a good set of remarks), so this slide
may be useful for that."
I mean, that's -- that's --
THE COURT: All right. There is not sufficient
foundation to allow this document into evidence yet. So the
objection is sustained.
BY MR. BOIES:
Q. You believe that Android was a critical asset for Google; correct, sir?
A. I believe Google -- or Android was a very important thing
for Google. I wouldn't say it's critical.
Q. You would not say it was critical?
478
A. I feel like we're splitting hairs here, but in general I
would say that we work hard to get our products out to our
users and get distribution for those products. We have had
challenges in getting people products on wireless, on their
phones, and so we look for ways to solve that problem. And I
think it's important, very important for us to solve that
problem. There are very many different ways we can do that.
Q. You're a member of the Google Board of Directors, are you
not, sir?
A. Absolutely.
Q. Was the Google Board of Directors told that Android was a
critical asset for Google?
A. I mean, that wouldn't surprise me, but I'm not sure, like
I said, I would agree with that.
Q. Let me ask you now. You have Exhibit 2 in front of you,
do you not?
A. Sorry. Which one was 2?
Q. It's in the manila folder that has Trial Exhibit 2 on it.
THE COURT: Why don't you go up and help the witness?
A. I have got it. I've got it. Thank you.
BY MR. BOIES:
Q. Now, this is a document that you personally received,
correct?
A. That's correct.
MR. BOIES: And I would offer that exhibit?
479
THE COURT: 2 is already in evidence.
MR. BOIES: Thank you, your Honor.
THE COURT: It may be shown to the jury.
(Document displayed)
BY MR. BOIES:
Q. Now this is dated July 26, 2005; correct sir?
A. That's what it looks like, yeah.
Q. And at the very bottom it talks about the Sun negotiations
concerning Java. Do you see that?
A. That says --
Q. The very bottom line.
A. Very bottom line says:
"Action to follow up with Sun negotiations
regarding open sourcing Java."
Q. Right. And do you remember telling me yesterday that you
didn't recall Mr. Tim Lindholm?
A. I said I -- you know, I believed based on this that it's
somebody who works for us, but I didn't recall him
particularly, no.
Q. And that you did not recall giving him any directions; do
you recall that?
A. Yeah. No, I didn't recall that.
Q. Now, the "Tim" that is referenced here in this email that
you received in 2005, that was Mr. Tim Lindholm, correct?
A. I mean, I'm not sure which Tim it would be.
480
Q. Did you know at the time you received this email?
A. I mean, I don't know that I read this carefully. I don't
recall.
Q. Let me ask you to look at Trial Exhibit 6.
MR. BOIES: May I approach, your Honor?
THE COURT: You may.
(Whereupon, document was tendered
to the witness.)
BY PLAINTIFF'S ATTORNEY:
Q. Is this a document that you have seen before, sir?
(Brief pause.)
A. I think so.
MR. BOIES: Your Honor, I would offer Trial
Exhibit 6.
THE COURT: Any objection?
MR. VAN NEST: No objection, your Honor.
THE COURT: 6 is received.
(Trial Exhibit 6 received
in evidence)
MR. BOIES: May I publish the first page?
THE COURT: Yes.
(Document displayed)
BY MR. BOIES:
Q. This is dated September 6, 2005; correct sir? And it's
from Mr. Rubin to the EMG. That includes you; correct, sir?
481
A. That's the email here.
Q. And a copy to Mr. Tim Lindholm, correct?
A. That's on the email, yeah.
Q. And if you turn to Page 4 of 25 of the exhibit...
(Document displayed)
Q. ...this shows that this is a report on project Android as
of August of 2005; correct, sir?
A. Which page? Page 5, you said?
Q. August of 2005.
THE COURT: How far into the document?
MR. BOIES: Page 4 of 25. The pages are numbered at
the bottom left-hand corner.
A. On the first page it says August 2005, Page 4 -- oh, I
see. I'm looking at different numbers. There are two sets of
page numbers.
BY MR. BOIES:
Q. Are we on the same page now?
A. Yes.
Q. Good. Now, if you turn to Page 7 of 25...
(Document displayed)
Q. ...you see Mr. Lindholm listed there as one of the project
advisors?
A. Yeah, I see that.
Q. Let me now ask you to look at Trial Exhibit 10, which is
not in evidence.
482
(Whereupon, document was tendered
to the witness.)
MR. BOIES: Pursuant to the discussion with counsel,
I would ask to publish to the jury at this time.
THE COURT: This exhibit is not yet in evidence, but
because the witness who will sponsor this is not yet here and
the Court and counsel have gone over this, we will allow this
document to be shown to the jury, subject to it being connected
up.
By that I mean that Oracle gets it into evidence
through some other witness, but for now the jury will be
allowed to see it so that they can follow the testimony.
So Exhibit No. 10 not yet in evidence, but it will be
shown to the jury.
(Document displayed)
BY MR. BOIES:
Q. Now, this is an email from Mr. Lindholm to Mr. Rubin with
a copy to Mr. Grove dated August 6, 2010.
Have you ever seen this document before, sir?
A. I don't recall.
Q. Now, I would like to direct your attention to the second
paragraph that says:
"What we've actually been asked to do (by
Larry and Sergei)..."
Do you see that?
483
A. Yeah.
Q. That's a reference to you as Larry, and to Sergey as the
other cofounder of Google; correct, sir?
A. Yeah. Sergey is misspelled but, yeah.
(Laughter)
Q. It says.
"What we've been asked to do by Larry and
Sergey is investigate what technical
alternatives exist to Java for Android
Android and Chrome."
Do you see that?
A. I can read the document, yes.
Q. Does that refresh your recollection that you knew who
Mr. Lindholm was and, in fact, asked him to investigate what
technical alternatives exited to Java for Android in or about
August of 2010?
A. No. I mean, it doesn't refresh my recollection. Sounds
like Tim was somebody who was assigned to do this, probably by
Mr. Rubin, I would guess.
Q. And at the end of that he says:
"We conclude that we need to negotiate a
license for Java under the terms we need."
Do you see that?
A. Yeah, I can read that.
Q. And were you told in or about August of 2010 that
484
Mr. Lindholm or other people had concluded that Google needed to negotiate a license for Java?
A. I think there's free Java, and there's the Java that's
Sun's technology. I think the reason we negotiated with Sun
for so long was to try to get a license to their technology.
MR. BOIES: Your Honor, may I ask the Court to ask
the witness to be responsive to the question.
THE COURT: The question was:
"Were you told in or about August of 2010
that Mr. Lindholm or other people had
concluded that Google needed to negotiate a
license for Java?"
That's either yes, no, or, I don't remember.
THE WITNESS: Uhm, I don't recall, uhm, at that time.
Q. You do know that Google never got a license from Sun or
Oracle for Java; correct, sir?
A. Uhm, I know that we worked hard to negotiate a business
partnership what Java.
MR. BOIES: May I ask that the witness be asked just
to respond to the question.
THE COURT: It is important that you try to -- most
of the questions are yes or no. And you should try to answer
it in that spirit. And so you must do that.
So that's a yes or no. Is it true that you never got
485
a license?
THE WITNESS: Uhm, I'm not sure whether we got no
license to anything or ...
THE COURT: Ask the question again. I didn't do a
good job on the question.
BY MR. BOIES:
Q. Did Sun ever get a license -- excuse me.
Did Google ever get a license from Sun or Oracle for
Java?
A. Uhm, I don't -- I don't think that we did, no.
Q. Now, you are aware that Google uses certain Sun or Oracle
APIs in Android, correct?
A. Yeah, I'm aware that we use APIs, Java APIs, in Android.
Q. And you are aware that Sun includes those APIs, or some of
them, in what it copyrights; correct, sir?
A. I have no idea what Sun copyrights or not.
Q. Did you ever ask anyone whether the APIs that you're using
in Android for Java were copyrighted by Sun?
A. I don't recall.
Q. Google copyrights its APIs; correct, sir?
A. I'm not sure whether we do or not.
Q. Are you sure whether or not Google copyrights its Android
APIs?
A. Uhm, I'm not sure. I think that things are copyrighted by default. I think everything you write is copyrighted by
486
default, but I'm not a lawyer.
Q. Does Google tell the public that its intellectual property
and its copyrights are very valuable to it?
A. Uhm, I mean, Google's a company based on intellectual
property.
Q. And the way you protect intellectual property is, at least
in significant part, through copyrights; correct, sir?
A. Uhm, that's one of the, you know, major intellectual
property protections.
Q. You are aware that many companies take licenses from Sun
and now Oracle to use Java, correct?
A. Uhm, yes.
Q. And are you aware of any company, other than Google, that
uses Java APIs, that does not take a license from Sun or
Oracle?
A. I mean, I'm not an expert on that. I know that IBM has
had a long and tortious relationship with Sun over Java. And
I'm not sure what the status of their, you know, API use, or
whatever, is over time.
Q. Is it your testimony that you think IBM does not have a
license from Oracle or Sun?
A. Sorry. Apache Harmony, I don't know, has some
relationship with IBM, was developed with them. I don't know
the history of it very accurately. But it was developed as an
open source project. I don't know what their license is, but
487
it wouldn't surprise me if they didn't.
Q. Let me ask the question as directly as I can.
Can you name a single company that uses Java APIs
that has not taken a license from Sun or Oracle, except for
Google?
A. As I said, I'm not an expert on that, and I already said
that I didn't.
MR. BOIES: Your Honor, I have no more questions.
THE COURT: Cross-examination -- or at least
examination by Mr. Van Nest.
MR. VAN NEST: May I proceed, Your Honor?
THE COURT: You may.
REDIRECT EXAMINATION
BY MR. VAN NEST:
Q. Good morning, Mr. Page. How are you?
A. Good.
Q. Welcome back.
You were asked a series of questions about various
e-mails in the process of your consideration of the Android
project, and I want to try to give the jury a little context
for those, so back up a little bit.
What was it -- why was Google setting out, in the
first place, to create a smart phone platform? What was the
goal?
A. I think we had been really frustrated in getting our
488
technology out to people. We had very basic software, like
showing photos and things, and it was almost impossible to make
it work. We had a closet full of other phones, a lot of which
ran Java. But it was almost impossible to develop for those
phones and to get meaningful/good software out to people.
It's hard to think back that seven years, but it was
pretty awful.
Q. What were the benefits of having such a platform available
to consumers?
A. I think we primarily looked at it as just providing a
great way to get software out to people and have it work. And,
you know, existing services, search and so on, and Gmail and
things like that. It was very, very hard in the environment
that existed -- which included a lot of things we are talking
about, Java ME, and so on -- to get that stuff to work. Just
didn't work.
Q. Mr. Page, were you one of the people that was an advocate
of acquiring the Android company and bringing Mr. Rubin on
board?
A. Yeah, I was really excited about having solutions to that
problem that would get our software and other people's software
really out to people, and have it work well.
Q. Now, back in the early days, back in 2005 and 2006, can
you tell the jury, what was Google seeking in terms of a
relationship with Sun?
489
A. I think that we really wanted to be able to use Sun's
technology. They had all sorts of software that had been
developed and, you know, as what mentioned, carrier
certifications and all these kinds of things.
And it would have really saved us a lot of time and
trouble to be able to use their technology, to use their -- you
know, all the code that they developed, and so on.
And when we weren't able to come to terms on having
that business partnership, which would involve a lot of
complicated things, we went down our own path and we took the
free Java, the Java language, and we reimplemented it
carefully, as was mentioned, in a clean room, and provided
that.
It certainly would have been our preference to have a
real deep business partnership and relationship with Sun, but
we were unable to really come to terms on that. And I think we
tried long and hard to negotiate that. We spent a lot of time
on it. It slowed us down a lot.
And, ultimately, we had to then make a big investment
in developing our own technology, which we think is really good
and works well. And the market has shown that.
Q. How would a partnership with Sun have benefited Google?
490
Obviously, those didn't matter because things like
the iPhone didn't have Java at all, so somehow magically got
into consumers' hands.
So I don't think that the issue of Java carrier
certifications is very significant in the end, but it would
have been a help in getting things out. It's kind of
irrelevant now, I think.
Q. So can you tell the jury, from your perspective, Mr. Page,
why were Google and Sun unable to reach agreement back in that
period of time?
A. Uhm, I think there are a lot of --
MR. BOIES: Objection. Foundation.
THE COURT: Sustained until foundation is shown.
BY MR. VAN NEST:
Q. Were you kept advised by your team as to the negotiations
between Sun and Google?
MR. BOIES: Objection.
THE COURT: Mr. Van Nest, he has to have been
personally present and actually remember it. Earlier in the
direct examination he did not have -- he didn't remember quite
a lot of things. So you need to show he has actual memory.
BY MR. VAN NEST:
Q. Do you remember being briefed by the Android team from
time to time -- I think you've testified to this the other
day -- on status of negotiations with Sun?
491
A. Yes.
Q. Was -- did that happen on a regular basis?
A. Uhm, I remember being appraised from time to time on it,
yes.
Q. Were you appraised when the deal failed to come together?
Were you updated as to the reasons why?
A. I remember being updated after the deal failed to come
together, many times.
Q. All right. And what -- based on your understanding --
just from Google's perspective, why were the parties unable to
reach a deal?
MR. BOIES: Objection still, Your Honor.
THE COURT: Sustained. No foundation. If he wasn't
in the room, he doesn't know. Unless he made the decision to
terminate the discussions, then he would know why he did it.
MR. VAN NEST: Well, let me ask him that question.
BY MR. VAN NEST:
Q. Were you one of the people that participated in deciding
to break off efforts to reach agreement with Sun?
A. I definitely participated in that, from my memory. But I
also say I'm not sure they've ever broken off. Continue to
have discussions to this day.
Q. Well, why don't you tell the jury from your perspective,
from your perspective, why, why were you satisfied in moving
forward in a different path back in that '05-'06 time period?
492
A. Uhm, I think, you know -- I don't remember exactly how
long stuff went on, but we tried, like I said, very, very hard
to negotiate with Sun over the terms of Java.
And I think that, ultimately, the kind of business
models and things we had in mind for Android, which is a very
open source system, were in conflict with the things I
mentioned. Like the TCK, where they charge money, for example,
just to test that you maintain compatibility, which seemed kind
of uhm, uhm, not a good way of proceeding, in our mind. And we
were unable to convince them of that and, I think, a whole
bunch of other issues.
Q. So once the parties failed to reach agreement, how did
Google proceed to develop its own platform?
A. Well, you know, we took the free part of Java and we --
MR. BOIES: Objection, Your Honor. Foundation.
THE COURT: That is true. Sustained.
BY MR. VAN NEST:
Q. Mr. Page, were you involved in discussions concerning how
Google would move forward in the absence of an agreement with
Sun?
A. I definitely remember being updated on that, yes.
Q. And was EMG, the executive committee, updated on a regular
basis about that?
A. I don't recall specifically, but I'm sure that they were.
Q. Tell the jury what you know about the reasons that you
493
went forward on your own, without a license or without a
partnership from Sun.
MR. BOIES: Objection, Your Honor.
THE COURT: Well, let me ask this question.
Did you make the decision to go forward on your own
without a license or without a partnership from Sun?
THE WITNESS: I remember that we discussed that
point, and that we decided to go forward.
THE COURT: No, no. Did you make the decision?
THE WITNESS: I don't recall if I specifically made
that decision. I think, uhm --
THE COURT: Were you -- all right. Were you present
in a group where a group made the decision?
THE WITNESS: I mean, I was -- I was definitely aware
of such decision. I don't remember the process used for it,
but I'm sure if I had objected I would have been part of it.
THE COURT: I don't think the foundation is
sufficient for him to answer the question.
MR. VAN NEST: Fair enough, Your Honor.
BY MR. VAN NEST:
Q. You were asked on cross-examination, Mr. Page, about APIs
and whether they were copyrighted. Did you ever ask anybody
whether APIs are copyrighted?
A. I don't recall ever asking anybody that.
Q. What understanding did you have back in 2005 and 2006,
494
about APIs?
A. I don't think the subject really ever came up, in my
recollection.
Q. Has anyone ever discussed with you back in that period of
time the structure, selection or organization of APIs?
A. I can't remember anything like that until very recently.
Q. Mr. Page, how many employees does Google have today?
A. I think we've got over 33,000.
Q. And I take it you attend many meetings every week?
A. Too many, yes.
Q. And meet with many employees?
A. Yes. Pretty much what I do.
Q. Can you give the jury any estimate of how many employees
you speak with on a weekly basis?
A. I don't know. I think during this time that was
represented here, we would have many meetings a week with, you
know, many kinds of people, not all of which I would know.
MR. VAN NEST: I have no further questions, Your
Honor.
THE COURT: Thank you.
Recross.
RECROSS EXAMINATION
BY MR. BOIES:
Q. Mr. Page, did I understand you to just tell Mr. Van Nest
that back in 2005 and 2006 the subject of APIs never came up?
495
A. Yeah, I don't recall that.
Q. You still have trial Exhibit 6 in front of you?
MR. BOIES: May I approach, Your Honor?
THE COURT: You may.
MR. BOIES: This has already been admitted. Now, if
we could put the first page of the presentation up, just to
remind the jury what this is.
(Document displayed.)
BY MR. BOIES:
Q. This is a Project Android GPS presentation, August 2005.
Do you recall that, Mr. Page?
A. Yes.
Q. And let me ask you to look at page 8 of 25 of the exhibit.
And Mr. Van Nest asked you how Google benefited from Android.
Do you recall that?
A. I think he asked me how Google would have benefited from a
Sun partnership.
Q. Yes. And -- well, perhaps he did. I thought he asked the
other one, but let me ask you.
Was the benefit that Google was looking for from
Android to have more control of the user experience in built-in
Google apps?
A. I think you're referring to the slide here that says:
"Google benefits by having more control of
the user experience in built-in Google apps."
496
Q. Yes.
A. I think -- trying -- look at the date of when this was.
It's 2005. And that was pretty early on.
I think that was definitely one of the benefits the
team speculated about that they would get. And I don't
disagree with that as a potential benefit.
Q. And one of the ways that you were going to get that
benefit was -- if we go to the next page -- through, at the
bottom, where it talks about:
"Eventually build a community force around
Google handset APIs and applications."
Do you see that, sir?
A. Yeah, I see that. I don't think that refers to Java,
though.
Q. This certainly refers to APIs, correct?
A. Yeah, but not Java APIs.
Q. So is it your testimony that APIs came up, but just not
Java APIs?
A. We talk about APIs, you know, every day, yeah. We didn't
talk about Java APIs specifically.
Q. Okay. So we're on common ground, did you talk about APIs
every day?
A. Maybe not every day, but --
Q. A lot?
A. Yeah.
497
Q. Okay.
A. We talked a lot about Java, but not specifically the API
part of Java, in my recollection.
Q. Well, sir, let me ask you, do you still have Exhibit 2 in
front of you?
A. Yes.
Q. Okay. And this is also in evidence, so we can perhaps
display that.
And let me ask you just to look at the very first
line here, where it says.
"Sergey: Application delivery part of APIs?"
A. Yeah.
Q. And then it says:
"Yes, but actual delivery is a negotiation."
Do you see that?
A. Yeah.
Q. Now, that's clearly Sun APIs; correct, sir?
A. Sorry, some?
Q. Sun. Sun. S-u-n. Sun's APIs?
A. Sorry, that's not clear to me from this -- let me look at
the document.
It's not obvious to me what that's about. It seems
that most of the points here are about some sort of
negotiation, but I have no idea if application delivery is part
of -- was part of their current APIs or not, or what the issues
498
around -- I mean, this looks like one of the hundred issues,
probably, that were discussed.
Q. Let's take it one step at a time.
First, this clearly has to do with Android, correct?
A. Yes.
Q. And it clearly has to do with Java, correct?
A. Yes.
Q. And it clearly has to do with negotiations with Sun,
correct?
A. Yes.
Q. And when they talk about actual delivery of the APIs being
a negotiation, that's a negotiation with Sun; correct, sir?
A. Sorry. Not actual delivery of the APIs, but application
delivery, and the actual delivery of those. Sorry.
Q. That is delivery by Sun; correct, sir?
A. Uhm, that's not clear to me.
Q. The negotiation that's referred to, that's clearly Sun,
correct? That's who you were negotiating with in July of 2005,
correct?
A. Yeah, I'm just not really sure what that means. I mean, I
think it's not obvious.
Q. Let's see if we can get some agreement.
When it talks about "negotiation," that's a
negotiation with Sun, correct?
A. It could be a technical negotiation, too.
499
Q. But --
A. I assume that it means negotiation with Sun, yes.
Q. Yes. And it's a negotiation with Sun about APIs, correct?
A. Yeah, but I'm not sure that has to do -- sorry. I think
my previous testimony I was saying that the API -- you know,
what's part of the APIs or not with regards to the Java
language was not something that we discussed.
I'm not suggesting we never negotiated with Sun over
a myriad of different components of Java and how that would
work and how the partnership would work. That's not what I was
trying to say.
Q. This is a negotiation with Sun about APIs; correct, sir?
A. I'm not even sure these APIs were part of Java. I don't
know if application delivery was or was not. I'm not an expert
on that.
Q. You got a copy of this in July of 2005, correct?
A. Not disputing that.
Q. What?
A. I'm not disputing that.
Q. And, indeed, these are notes of a conversation in which
you participated, correct?
A. Yeah.
Q. Okay. And in that conversation that you participated in
and is memorialized in this e-mail that you got a copy of in
2005, what Sergey was talking about was a negotiation with Sun
500
about APIs. That's clear; isn't it, sir?
A. Yeah.
Q. Okay.
MR. BOIES: No more questions, Your Honor.
THE COURT: Any more?
MR. VAN NEST: I have nothing further, Your Honor.
THE COURT: All right. Then may the witness -- does
anyone want the witness on recall, or not?
MR. BOIES: Yes, Your Honor. After we get the
document that --
THE COURT: Mr. Page, you'll have to come back in due
course, after other witnesses get those documents into
evidence. But counsel will give you a reasonable notice as to
when that will be. But for now you're free to go. Thank you
for coming.
(Witness steps down.)
THE COURT: I think it's time for a short, 15-minute
break for the jury before we go to the next witness. Remember
the admonition. No talking about the case. And we'll see you
back here in a few minutes.
THE CLERK: All rise.
(Jury out at 9:19 a.m.)
THE COURT: Please be seated. Any issues for the
Court?
MR. BOIES: No, Your Honor.
501
MR. VAN NEST: No, Your Honor.
THE COURT: All right. We'll take our 15 minutes, as
well.
(Recess taken from 9:20 to 9:39 a.m.)
THE COURT: Back to work. Bring in the next witness.
Bring in the jury and then the next witness. All right. Let's
do that. Please, be seated.
(Jury enters at 9:40 a.m.)
THE COURT: Welcome. Please be seated.
Mr. Norton, who will your next witness be?
MR. NORTON: The plaintiff calls Edward Screven.
THE COURT: Please come forward. Welcome.
THE WITNESS: Thank you.
THE COURT: Raise your right hand, please.
EDWARD SCREVEN,
called as a witness for the Plaintiff herein, having been first
duly sworn, was examined and testified as follows:
THE WITNESS: I do.
THE COURT: Thank you. Have a seat. See how this
moves around?
THE WITNESS: Okay.
THE COURT: You've got to move it so that it's that
close.
THE WITNESS: Is that good?
THE COURT: That's fine. What's your name?
502
THE WITNESS: My name is Edward Screven.
THE COURT: How do you spell that?
THE WITNESS: S-c-r-e-v, as in Victor, -e-n.
THE COURT: Screven?
THE WITNESS: Yes, sir.
THE COURT: All right. Welcome. Again, your voice
is soft so pull it a little closer.
THE WITNESS: All right. Is that good?
THE COURT: That's good. Thank you.
Go ahead, Mr. Norton.
DIRECT EXAMINATION
BY MR. NORTON:
Q. Good morning, Mr. Screven.
Where do you currently work?
A. I work for Oracle.
Q. And when did you start working at Oracle?
A. In 1986.
Q. Before you joined Oracle, what did you do?
A. I was a student at Carnegie Mellon University.
Q. And did you graduate from Carnegie Mellon before you
joined Oracle?
A. No. I studied there for four years, and then took a job
at Oracle.
Q. What did you study at Carnegie Mellon?
A. I studied math and computer science.
503
Q. When you first joined Oracle in 1986, what was your job
there?
A. I was a programmer in what was the very beginnings of the
applications division.
Q. How long did you continue to work as a programmer at
Oracle?
A. I worked as a programmer until the early 1990s.
Q. Did you have any experience as a programmer before you
joined Oracle?
A. Yes, I did. I started writing programs when I was 13,
actually, and had my first job writing programs when I was 16.
Q. About how many years of your professional career was your
primary responsibility to be a programmer?
A. Uhm, I guess that would be not counting -- actually, even
a time in college I worked as a programmer, so I guess that
would be ten years, 12 years, 13 years.
Q. And do you still program now?
A. I do.
Q. At some point, did your job at Oracle involve different
responsibilities from just programming?
A. Yes. In the early 1990s, I had started working for one of
our founders in an advanced development group. And when he
became ill and had to leave the company, I started working for
our CEO, Larry Ellison, basically as his technical staff.
That job eventually evolved into what I do now, which
504
is being Oracle's chief corporate architect.
Q. And what are your responsibilities as Oracle's chief
corporate architect?
A. As chief architect, my responsibility is to provide
technical direction across all of Oracle's product lines. And
that also means being involved in our mergers and acquisitions,
doing technical due diligence, making recommendations, you
know, to Mr. Ellison about technology.
Q. So as -- in your capacity as chief corporate architect,
are you familiar with the various technologies that Oracle uses
in its businesses?
A. Yes, I am.
Q. And is Java one of those technologies that you're familiar
with?
A. Yes. Java is one of the most important technologies that
we use in our business.
Q. Can you explain a little bit more how it is that you are
familiar with the Java technology?
A. Well, as you asked before, I program still, and so one of
the important ways I'm familiar with Java is, of course, I
write a lot of Java programs.
Now, beyond that, various business units within
Oracle report to me. So I'm responsible for our MySQL business
and our Linux business and virtualization businesses.
And, you know, those groups all use Java, in part, to
505
create their products. So I program in Java, and I manage
people who also program in Java.
Q. Now, the virtualization in MySQL business, the Linux
business, are those significant businesses to Oracle?
A. Yes, yes, they are.
Q. Now, the middleware business in particular, were you
involved -- could you describe for a moment what the middleware
business is and how it uses Java.
A. So middleware, generally, is sophisticated software that
helps enterprise -- that means companies and governments and
other organizations -- create applications that run on servers
and that often have Web user interfaces used by users, and then
often interact with databases to store data.
Now, Oracle's middleware is based almost entirely on
Java.
Q. So is the middleware business, is it written in the Java
language?
A. Yes. Almost every bit of our middleware is written in
Java.
Q. And does it use the Java APIs?
A. Yes, it uses the Java APIs extensively.
Q. And do Java applications written by other persons or other
companies, do those run on top of Oracle's middleware?
A. Yes. There are many customer applications and third-party
applications that use Oracle's middleware. And that means, of
506
course, they themselves are also written in Java.
A. Yes, I was.
Q. What was your involvement in that decision?
A. Well, we had had an earlier attempt at creating middleware
that was not based on Java, that was based on C and C++. And
that proved to be awkward. And so as we looked around for
other technologies to use to -- instead of that, Java seemed
like a very natural choice.
Q. And were there particular reasons why Oracle decided to
base its middleware business on Java?
A. Yes. So Java has some very interesting characteristics.
For one thing, Java is a very productive programming
15 environment.
So the language coupled with, you know, the APIs
are -- make it easy to write sophisticated programs with large
numbers of people involved.
So that would mean something like I could run it on
Windows, I could run it an Mac OS. Also, I could run that
program on implementations of the Java runtime environment
507
provided by different vendors. So I could run my program in
Java provided by Oracle, or I could run my program in Java
provided by IBM.
So as a software creator, Java means that I can write
my program once and use it, sell it, deploy it on lots of
different platforms and lots of different places.
Q. With respect to the Java language itself, was one of the
reasons that Oracle decided to base its middleware business on
Java, did that have anything to do with the benefits of the
Java language itself?
A. Yes. Java is a very well-specified language. And part of
the way it's well specified is, you know, being very specific
about the way Java behaves independent of the platform it's
running on.
Now, that's very different than some other
programming languages, especially programming languages we were
using at the time.
So, for example, the C programming language back then
was not as well specified. So, for example, if I had an
integer, a number in my program, I couldn't be sure exactly how
large that integer would be, how many bits. You know, to use a
technical term, you know, a particular integer value may be
comprised of. So what that meant was that I, as a programmer,
had to often write specialized code by platform in order to
have my program be able to run on different platforms.
508
In Java, I didn't have to do that. Java was very
well specified, and it had a set of language features which --
which enabled me to quickly and easily write programs.
Q. Let me just make sure I have this right. When you say the
language is well specified, can you just explain what
"specified" means in this context.
A. So there is a -- there is a document called the Java
language specification. It's, you know, a few hundred pages
long. And it describes what is the syntax of the language.
In other words, you know, what are the key words I
use when I write a Java program. What order I have to put them
in. You know, what are the basic operations that are part of
the language.
And that document is very -- it's very precise,
right. And doesn't leave a lot of wiggle room for
implementations.
So that characteristic of being precise and not
compromising on a platform basis means that programs written in
Java will run the same on every platform or in every
implementation, as long as those implementations are compatible
implementations.
Q. So is the use of the Java language alone sufficient to
have write once, run anywhere?
A. No, it's not, actually.
So, it's a necessary part of write once, run
509
anywhere, but you also need APIs. So you need prebuilt Java
programs to provide additional functionality to the
application. Things like, you know, being able to talk to
other computers over a network, or being able to store data on
a disk drive.
You need those other prebuilt programs to run the
same on every platform for your application that relies on
those facilities to have write once, run anywhere.
Q. If I could pause here and ask you to define or explain
what an API is in the sense you're using it here.
A. So an API is a part of a program. So when -- if you -- if
you -- if you look at the prebuilt programs that are shipped by
Oracle with Java, and shipped by other vendors who license
Java, you know, they -- they -- those programs have two parts
to them.
One part is an -- is the definition of the -- of the
structure of the programs and the ways in which -- the ways in
which programmers can use those prebuilt programs.
The other part are a sequence of statements that
carry out the facilities that are part of the program.
So in -- I think, for example, I think if you were
doing something like manipulating a list, there are -- there
are methods of lists that say, you know, add an entry, remove
an entry. Right.
So the fact that there is such a thing as a list, the
510
fact that there is add entry and remove entry, you know, those are all part of the API, you know, that is part of the Java
prebuilt program list.
Q. So is there any relationship between the API itself and
the -- the -- start over with that.
What is the relationship between the prewritten
programs, the class libraries, and the API specification
itself?
A. Well, the APIs in Java are actually directly embedded
within those prebuilt programs.
In Java, there is no distinction between -- between
creating the API and creating the code that actually implements
the API.
A Java program is described as -- by a set of text
files called Java files, .java files. And those .java files
contain a structure and key words and other kind of Java
language elements.
And some of those Java language elements are -- would
be deemed part of an API, and some of those Java language
elements would be procedural statements implementing the API.
But in Java, they are commingled. There is no separation
between them.
Q. So there's a separate thing or a thing called the API
specification; is that correct?
A. Well, what there is is, there is human readable documents
511
that are created, actually, by processing those Java source
files and extracting out, you know, that human readable form.
The source of truth about what the API is and what it
does, that is actually part of those Java source files that
define the Java programs.
Q. So does -- is the API specification, in fact, part of
the -- the Java program?
A. Yes. The API specifications are part of the Java program.
MR. PURCELL: Objection. Leading, Your Honor.
THE COURT: Well, it was leading. I'll allow it in
this instance.
Be careful not to lead. Go ahead.
MR. NORTON: Thank you, Your Honor.
BY MR. NORTON:
Q. Can you see from the stand this file cabinet (indicating)?
A. I can.
Q. Is this, is this an API?
A. No, that is not an API.
Q. Is this like an API?
A. No, that's not like an API.
Q. Is there any similarity between this file cabinet and an
API?
A. No, there's no similarity.
So, look, an API is Java language program text which
does two things. It gives form and shape to -- to the rest of
512
the Java program, those procedural statements. And it's --
informs programmers on how to use those prebuilt Java programs.
You know, that is a metal box. You know. It -- it
can -- you can put things in it. You can put folders in it.
You can put books in it. You could put old shoes in it.
Right? But it has a big difference between an API.
An API is part of the program. The file cabinet is
in no way part of what you are putting into it. It doesn't
affect them. It doesn't define them.
An API defines the programs. It gives the program
structure.
Q. Now, are you yourself -- do you design APIs?
A. Yes.
Q. Do you consider the designing of APIs to be a creative
process?
A. It is a very creative process. It's one that requires
insight and thought. Compared to other programming tasks, I
would say it is the most creative.
Q. Can you explain what it is about the process of designing
APIs that is creative?
A. There are two -- there are two significant aspects that a
person has to consider when they're designing an API. You
know, one is -- is what is the functionality that is required
by the potentially thousands and thousands of users of that
API. In the case of some of those Java APIs, it's millions of
513
users. Right.
So it's -- it takes a lot of thought to consider
what -- what is the vast range of programs that are going to be
using it? You know, what should I include within that API?
You know, what -- what -- how should I structure the API?
You know, in Java, API is not just a simple list of
program entry points. It's a complex web of classes that you
lay out and design. Right.
You also have to consider what is the implication for the underlying implementation. Because in many ways the
implementation of the API is going to be very strongly affected
by the layout and structure of the API.
Q. Can I interrupt you for just one moment.
Can you explain, when you use the word
"implementation of the API" what you're referring to.
A. Yes. I'm referring to the additional Java program
language statements that appear in Java source files that are
not the API.
So, for example, I think I mentioned an example of,
you know, add to a list. Right. So if you looked into a Java
language source file that was implementing a list, and then you
would find -- you would find a point in that file where the add
to list entry point is declared. You know, that's part of the
API. You'd see a small number of Java language statements
following it which actually describe how to add it to the list.
514
So that how to add it to the list, that's the
implementation part. The fact that there is an add to list
function and what kind of information must be provided when you
add to the list, and what kind of information is returned when
you add to the list, that is all part of the API.
Q. And are those choices that are made during the designing
of the API, or choices that are made during the implementation
of the API?
A. Well, the choices of exactly what information must be
presented when you add to the list, whether or not there is
going to be a way to add to the list, what gets returned when
you do add to a list, that is all part of the API design
process.
The subtle thing about the API design process is
that, you know, you also must reflect upon what you're going to
do to implement that API entry point.
So as I'm designing an API, I have to understand that
even though I may not actually be providing the code to
implement that API entry point right away, I need to understand
at least what is going to be required to implement it.
Because, otherwise, I could create an API which is
unimplementable that no person could actually cause to exist,
or perhaps would be very slow or cumbersome to build.
So that is why it is so critical to think carefully,
you know, when you design APIs, because you have implications
515
both on hundreds, thousands, or millions of users in the
future, and also on programmers who are going to actually
provide an implementation of the API later.
Q. When an API is designed well, does that have any
implications for the productivity of the programmers who will
then use those specifications?
A. Yes. I mean, if an API is designed well, that means it
provides very useful functionality and it -- it's easy for
programmers to use.
And that means that programmers who then use the API
have to write less code themselves, and they get to take
advantage of useful functionality.
Q. Now, are you familiar with the 37 API packages that Oracle
asserts Google infringes?
A. I am.
Q. And how is it that you're familiar with those 37 in
particular?
A. Well, I'm generally familiar with all of the APIs that are
part of the Java Standard Edition. And I've seen a list that
was provided to me of the particular APIs for which there's an
assertion.
Q. Now, what you've described about APIs in general -- let me
ask specifically.
The design of the 37 APIs that Oracle asserts are
infringed, does that reflect creative design?
516
A. Yes.
Q. Are those APIs well designed?
A. Yes.
Q. Do you -- when you program in Java, do you use those 37
API packages?
A. Definitely.
Q. And do you find them to be practical?
A. I find --
MR. PURCELL: Objection, Your Honor. This is expert
testimony.
THE COURT: It is.
MR. NORTON: I think the question was when he
programs.
THE COURT: No more so than everything we've heard so
far from this witness. I mean, the entire thing is
specialized, specialized testimony, isn't it?
MR. PURCELL: I think so, Your Honor.
THE COURT: Well, are you going to cross-examine on
these points?
MR. PURCELL: I will.
THE COURT: Well, then, I'm going to let him go ahead
because you're going to be asking the same character of
questions.
But I am going to sustain the objection as leading.
You are leading this witness up and down. You must stop
517
leading your own witness, Mr. Norton.
MR. NORTON: I understand, Your Honor.
BY MR. NORTON:
Q. In order to use the Java language, must you also use APIs?
A. Well, okay. So the APIs that come standard with Java,
they're very useful and very productive. And I think Java
programmers using a compliant implementation invariably use
those APIs.
You do not, however, have to actually use the APIs
that come with Java. The APIs are defined independently of the
Java programming language. And, you know, so you could create
your own independent APIs, if you wish.
In fact, for some aspects of the standard APIs, I
mean, there are parties out there who have created alternate
implementations, you know, or totally different APIs that
accomplish many similar things.
So, for example, there are different ways to log.
And logging here means the program writes out information about
what it's doing so that system administrators can understand
what's happening behind the scenes.
There are different -- there are different APIs,
alternate APIs for doing mathematics. So there's built-in
mathematical functions within -- within the standard Java APIs,
but there's alternatives out there produced by -- by other
folks.
518
There are encryption libraries that are part of the
Java Standard libraries. There are alternate APIs for doing
encryption.
So, yes, it's very, very common for Java programmers
who use the standard APIs because they are very good. But it's
also possible to not use any of them.
Very few, very, very few of the classes that are part
of the Java Standard libraries are actually mentioned at all
within the Java language specification. And even of the ones
that are mentioned, almost no methods, almost no parts of the
actual entry points for those classes is defined.
So someone who is starting from the Java language
specification could go out and create an alternate set of APIs
that is totally different and totally independent of the
standard APIs that Oracle ships.
Q. Now, has Oracle ever redesigned the 37 APIs that are in
suit?
A. No, no, we have not.
Q. Is there any reason why Oracle has not done so?
A. Well, I mean, for one thing, there's no reason for us to.
I mean, the APIs are well designed and they're well specified.
They are proven over time. Millions of Java programmers use
them.
To redesign and re-create them would be a lot of
work. I mean, there's a lot of creativity that went into
519
designing them in the first place. Why redo all of that?
Right? It really makes no sense.
If we did redo it all then, of course, that means,
you know, there would be millions of Java programmers out there
who are -- know how to use the standard APIs as they currently
exist, and would have to be reeducated to use these new APIs.
So there's just -- there's just no reason and too
much expense.
Q. Is there any technical reason why Oracle would be unable
to come up with alternate API specifications for those 37 --
A. No, no. We definitely could come up with alternate APIs
than the standard ones.
Q. Were you involved in Oracle's decision in 2009 to acquire
Sun Microsystems?
A. Yes, I was.
Q. And can you just describe, briefly, what that involvement
was.
A. Well, we -- we -- the opportunity to acquire Sun came upon
us, and we needed to make a decision as to whether or not to
proceed.
So myself and a small number of other Oracle
executives performed a quick investigation by talking to Sun
employees and reading some of the material to try to -- try to
evaluate the company. My particular focus was on the products
and the technology.
520
And did you have a position either for or against Oracle's
acquisition of Sun?
A. Yes, I was very much in favor of acquiring Sun. And for
me the primary reason was because of Java.
Q. And why was Java the reason that you were in favor? What
in particular about Java was the reason you were in favor of
the acquisition?
A. Oracle had very large businesses that depended on Java,
so, our middleware business and our applications business. And
so being able to acquire Sun and add Java to that -- to that
set of products made a huge amount of sense.
Java was a very valuable asset. It still is a very
valuable asset. I mean, to me, if all we did was get Java by
buying Sun, it was easily worth whatever we had to pay.
Q. Relative to the rest of what Oracle acquired when it
bought Sun, did you have a view as to how much Java was worth?
Without using numbers but just relative to the rest of it, how
important was Java in the acquisition of Sun?
A. Well, like I said, I mean, we picked up compelling
technologies when we acquired Sun. But if the only technology
that we were able to acquire was Java, then the purchase price
was worth it.
I mean, even if we had to throw away every other part
of Sun and only keep Java, it was worth paying that
$7.4 billion.
521
MR. PURCELL: Objection, Your Honor.
THE COURT: Sustained.
Ladies and gentlemen, the $7.4 billion number has
nothing to do with this case. Disregard it.
Mr. Norton, we talked about this before.
MR. NORTON: I understand, Your Honor.
THE COURT: All right. Continue.
BY MR. NORTON:
Q. Have you ever heard of the Apache Software Foundation?
A. I have. It's a nonprofit organization that is largely --
largely backed by IBM, that creates open source components or
products or projects licensed out under their Apache license.
Q. Have you ever heard of an Apache project called Harmony?
A. I have.
Q. What is or what was Harmony?
A. Harmony was an effort to create a clone of Java.
Q. Any particular version of Java?
A. I think they were based on Java version 5.
Q. And is that SE?
A. Yes. You mean the edition. Yes, it was what we call Java
SE, Standard Edition.
Q. Now, at some point in time did Sun itself release Java SE
under an open source license?
A. Yes, it did. It released something called the OpenJDK,
which was Java SE released under the GPL, the GNU Public
522
License, a different open source license.
Q. A different open source license from what, please?
A. I'm sorry. A different open source license than the
Apache license.
Q. When you refer to the Apache license, is that a
standardized form license?
MR. PURCELL: Objection. Leading.
THE COURT: Sustained.
BY MR. NORTON:
Q. What is the Apache license?
A. The Apache license is an open source license that was
created by the Apache Foundation. And all of the -- of the
products or components that are produced by the Apache
Foundation are licensed out to others under the Apache license.
Q. You referred, also, to the GPL license?
A. Yes. The GPL -- that stands for GNU Public License. That
is G-N-U. And that is a different open source license created
many years ago by the Free Software Foundation.
Q. Was the GPL created by Sun?
A. No. The GPL was not created by Sun.
Q. Now, after Sun released Java SE under an open source
license, did the Apache Harmony project continue or stop, or
did anything change?
A. It continued for some time afterwards.
Q. Now, at some point in time was there a disagreement
523
between Sun and Apache with respect to Harmony?
A. Yes.
So, the Apache Foundation, in order to release
Harmony, sought licenses from Sun. They sought a specification
license in order to release Harmony. And Sun did not want to
provide one to them.
Q. Do you know -- strike that.
When you say that Apache wanted a specification
license, can you explain what you mean in this context by the
"specification."
MR. PURCELL: Objection, Your Honor. Foundation.
THE COURT: Do you know the answer to the question?
THE WITNESS: Yes.
THE COURT: Overruled.
Please answer.
THE WITNESS: So, Apache sought a Java specification
license, basically covering what they were producing in Apache.
BY MR. NORTON:
Q. And did Sun have a position with respect to Apache's
request?
A. Sun was willing to grant Apache a specification license
and also what's called a test kit license, which is used to
ensure compatibility, as long as the Apache Harmony product or
component was -- was only available for use on desktop machines
or servers, not mobile devices.
524
Q. Is there a term that's used to describe that type of
restriction?
A. Yes. It's called a field of use restriction.
Q. At some point, did Oracle become involved in the dispute
between Sun and Apache?
A. Yes. At one point Oracle cosigned a letter that we --
that was sent to Sun, Jonathan Schwartz, the Sun CEO
specifically, encouraging Sun to grant an unencumbered license
to Apache.
MR. NORTON: May I approach the witness?
THE COURT: Yes, you may.
MR. NORTON: I'm handing the witness 2347.
BY MR. NORTON:
Q. Do you recognize Exhibit 2347, Mr. Screven?
A. Yes, I do.
Q. Can you say what it is?
A. It is the letter I just mentioned. It's the letter that
Oracle and others, other companies, sent to Sun to encourage
Sun to grant an unencumbered license to Apache?
MR. NORTON: I offer 2347.
MR. PURCELL: No objection.
THE COURT: 23 --
MR. NORTON: -- 47.
THE COURT: Is now in evidence. Go ahead.
(Trial Exhibit 2347 received in evidence.)
525
(Document displayed.)
BY MR. NORTON:
Q. Now, Mr. Screven, if we can see the second page of the
letter, do you see your name there?
A. Yes, yes, I do.
Q. And there's no formal signature, hand signature, but did
you effectively sign this document?
A. Yes.
Q. And did other companies sign this document, as well?
A. Yes, they did.
Q. Was one of the other companies that signed onto this
document Google?
A. Yes. Yes, it was.
Q. And on the document it says, Bill Coughran, vice president
of engineering, Google.
A. Yes, that's right.
Q. Are all of the companies that appear on this letter, as
signatories to this letter, did they have any involvement with
Java?
A. Yes, they were all very involved in Java.
I think most, if not all, of them were part of the
Java Community Process, which is a -- which is Sun, and now
Oracle -- organized consortium to help advance Java.
Q. Now, what did you sign this letter?
A. I think there's multiple reasons. I mean, one, one reason
526
is that even back then Sun as a company was not doing well.
And, you know, there was general concern that if Sun
began to fail as a company, then, you know, their behavior with
respect to Java in terms of investment or licensing could
become very difficult.
So Oracle, of course, we were wholly dependent on
Java. We had very large businesses that were -- that were
dependent on Java. And so, you know, faced with having to at
some point in the future negotiate with Sun on renewing our
Java license at a time when Sun the company may be in serious
jeopardy, that was something that was, frankly, frightening to
us.
And so having -- having Sun grant unencumbered
licenses to Apache would mean that we would have an alternate
source of Java technology. So we would be in a better
negotiating position with Sun, and certainly in a better
position with respect to our dependence, in general, on Java.
Q. Now, did Sun ever agree to Apache's request for a
specification license with an unencumbered TCK?
A. They did not.
Q. Did Oracle continue to pay Sun for specification licenses?
A. Yes, we did.
Q. Now, at the time that you signed this letter, did you have
any concerns about whether an open source Apache Harmony
implementation would have -- would harm Java?
527
A. I didn't because, you know, all of the parties who were
co-signers of this were very involved in Java. And, I mean, at
the time it seemed, you know -- frankly, it seemed
inconceivable that any of the parties involved in signing this
letter would want to do anything to harm Java or fragment Java.
Now, that turned out not to be the case.
Q. Just so we're clear -- refer to the timeline here -- what
is the date on the letter that we're discussing, Exhibit 2347?
A. It is June 22nd, 2007.
Q. All right.
MR. NORTON: May I read from the timeline, Your
Honor?
THE COURT: You may.
BY MR. NORTON:
Q. So November 2007, Google released the Android software
development kit?
A. Yes.
Q. And the date of the letter is how many months before?
A. Roughly five months before.
Q. Now, was it of any relevance to you in signing this letter
that Apache had asked for a TCK?
A. Yes. So Apache clearly wanted their implementation to be
compatible with the standard implementation of Java because
that's why they're asking for test kits.
I mean, what a test kit does is it provides a way for
528
an independent implementation of Java, to ensure that, in fact,
it is compatible with the standard implementation.
So it's a whole bunch of, basically, little programs
that exercise the -- the Java implementations and make sure it
has the correct behavior.
So the fact that Apache wanted test kits means they
wanted their Java implementation to be compatible with all the
other standard Java implementations.
Q. Now, at the time you signed the letter in June 2007, did
you have any knowledge that Google was developing a platform
that used the Java language and some but not all of the Java SE
APIs?
A. No, definitely not.
Q. Had you known that, would that have had any bearing on
your decision to sign the letter?
A. There's no way we would have pursued this course if we had
known that Google intended to fragment and fracture and fork
Java.
To be perfectly fair to Sun, they always resisted
granting these licenses to Apache. And, frankly, they were
right because they foresaw, I imagine, that granting Apache
licenses would lead to fragmented/forked Java implementations.
We did not envision that because we couldn't imagine anyone who depended on Java like we did could think that that
would possibly be in their best interests. Apparently, Google
529
did.
Q. What is the status of Apache Harmony now?
A. It's basically shut down. It's in what Apache Foundation
called the attic. It just means a project that is no longer
being developed.
Q. Now, given your -- do you have any role with respect to
the Java Community Process as a result of your position at
Oracle?
A. Yes. The Oracle employees who are responsible for the
Java Community Process work for me.
Q. And as a result of your responsibilities in -- as chief
corporate architect and overseeing Oracle's role in the Java
Community Process, would you expect to be aware of any
implementations, commercial implementations of Apache Harmony?
A. Yes, because Apache Harmony never received a license and
is not compatible, they never ran the compatibility tests, then
any -- any meaningful implementation of Apache Harmony, any
meaningful use of Apache Harmony would naturally come to the
attention of the -- of the individuals and companies that are
part of the Java Community Process; and, therefore, I would be
aware of it.
Q. Are you aware of any commercial implementations of Apache
Harmony in the world today?
A. Only Android.
Q. What is GNU Classpath?
530
A. GNU Classpath was an effort to create a GPL-licensed
version of the Java class libraries that are part of J2SE.
Q. Did Oracle ever take a license for the GNU Classpath?
A. No, no. As a project, GNU Classpath was always
incomplete. They never implemented the whole API. They
never --
Q. I'm sorry. That was a little quick.
A. Too fast. I'm sorry. I'll repeat.
It was always incomplete. They've never fully
implemented the full J2SE API. They did not have a license
from Sun. They did not ever run the test kit. So it's of
absolutely no interest to Oracle as a -- as a company licensing
Java.
Q. And are you aware of any commercial implementations of GNU
Classpath?
A. No, I'm not aware of any commercial use of GNU Classpath.
The reason for its existence simply disappeared when Sun
released OpenJDK under GPL.
So once Sun released OpenJDK under GPL, then open
source programmers had a GPL version they could use.
Q. Now, prior to Oracle's acquisition of Sun, did Oracle have
any experience building applications for mobile handheld
devices?
A. Yes. Yes, we did. So we built -- we built handheld
applications for managing warehouses. We built handheld
531
applications for salespeople in the field. We built handheld
applications for service people in the field. So repairmen
visiting a data center to repair a computer. We built mobile
applications for things like e-mail.
Q. Prior to the acquisition of Sun, did Oracle have the
technical -- have any experience building a smart phone
platform?
A. We built smart phone applications and mobile device
applications, but we didn't have smart phone platform software.
Q. Now, once Oracle made the decision to acquire Sun, were
you involved in any efforts to investigate building a smart
phone platform with Java technology?
A. Yes. After we -- after we acquired Sun, we considered
whether or not we should enter the smart phone platform market
because we had acquired Sun, and Sun had Java. And Java was,
seemed to us, an excellent base for building a smart phone
platform.
Q. And were you involved in these --
A. Yes, yes, I was involved in discussions with our CEO Larry
Ellison and other -- other senior Oracle executives about the
prospect of entering that market.
Q. Did you reach any conclusion as to whether -- purely as a
technical matter, whether it would be possible for Oracle, with
Sun's Java technology, to build a smart phone platform?
A. Yes. We were confident that from a technology basis we
532
could build a compelling smart phone platform. However, we
concluded from a business perspective that it would not be a
profitable venture for us.
Q. What were the reasons -- when you say "we concluded," were
you part of that decision, as well?
A. Yes, yes.
Q. And what were the reasons for your decision not to go
forward with a Java-based smart phone?
A. Well, you know, when you enter a market, especially a
competitive market like smart phone platforms, it's important
to be first with a compelling advantage.
Our compelling advantage would have been Java. But
Android had already been released. Android was already out on
millions of devices. So Google's Android-Java clone had
basically foreclosed the market from us.
MR. NORTON: Nothing further.
THE COURT: Thank you. Cross-examination.
CROSS EXAMINATION
BY MR. PURCELL:
Q. Good morning, Mr. Screven.
A. Good morning.
Q. On direct examination you mentioned that there were
various, different editions of the Java platform, correct?
A. Yes.
Q. There is Java SE, which is Java Standard Edition, correct?
533
A. Correct.
Q. And Java Standard Edition, Java SE, that was the original
Java platform, correct?
A. Uhm, yeah. It grew out of what was the original Java
platform.
Q. And Java SE is designed to run on desktop computers,
correct?
A. No, I wouldn't say so. It's designed to run on any
platform that has sufficient computing power. And today that
includes servers, desktops, laptops and smart phones.
Q. Java SE is primarily used in desktop computers and laptop
computers, isn't it?
A. I wouldn't characterize it that way.
Q. Isn't there another platform called Java EE?
A. There is something called Java EE.
Q. And that other edition of Java, Java EE, that stands for
Java Enterprise Edition, correct?
A. Yes.
Q. And Java Enterprise Edition is primarily focused on larger
computing devices like servers, correct?
A. No, that's a mischaracterization.
Q. Why is that a mischaracterization?
A. So Java Enterprise Edition is actually additional
functionality. It's not a different version of Java at all.
Q. All right.
534
A. I'm not finished with my answer.
(Reporter interrupts.)
A. So Enterprise Edition is additional functionality. It's
not a different version of Java at all.
And that additional functionality in Enterprise
Edition is implemented on top of J2SE, which is wholly and
completely embedded it Enterprise Edition.
Q. By additional functionality in Java EE, you mean there are
additional APIs and class libraries available in JAVA EE?
A. Yes, there are additional APIs.
Q. And there are applications written for Java EE devices
that depend on those additional APIs that are present in EE but
not SE. Correct?
A. That is true.
Q. And that means that an application that is written for EE
and depends on those additional applications that aren't in SE
would not run on a device that's a Java SE device. Correct?
A. It would only run on that device if you put the Java EE
classes on that device.
Q. So unless the Java EE classes were put on the SE device,
the EE application wouldn't run on the SE device, correct?
A. But that's true of every computer. If I don't put the
Java EE classes on a server, the application won't run there
either.
Q. And there's also something, I think you mentioned, called
535
Java ME, correct, Java Micro Edition?
A. That's correct.
Q. And that is a Java edition that is designed primarily for
smaller devices, correct?
A. So the Java Micro Edition was a version of Java that was
designed to run on devices that did not have the computing
capacity to run full Java.
Q. Right. And because Java ME was designed for smaller
devices with less computing capacity, it uses a stripped-down
version of the APIs and class libraries, as compared to SE,
correct?
A. I wouldn't call it stripped down. I would call it
reduced.
Q. It has fewer APIs and class libraries, ME, as compared to
SE. Correct?
A. Yes, because those additional entry points require
essentially too much memory or too much CPU power --
(Reporter interrupts.)
A. CPU. Central processing unit.
-- and too much memory to run on very, very small
devices.
Q. And so that means that an application that's written for
Java SE and depends on the Java SE APIs won't necessarily run
on a Java ME device that doesn't have some of the Java SE APIs.
Correct?
536
A. That's correct.
Q. And then there's yet another platform, a Java platform
called Java Card, correct?
(Reporter interrupts.)
MR. PURCELL: Platform called Java Card.
THE WITNESS: C-a-r-d.
MR. PURCELL: I'll try to slow down.
BY MR. PURCELL:
Q. So, Mr. Screven, the question is, there's yet another Java
platform called Java Card, correct?
A. Yes.
Q. And that runs on yet simpler devices as compared to ME,
like smart cards, correct?
A. That's right.
Q. And that has yet fewer APIs and class libraries than JAVA
ME. Doesn't it?
A. That's right.
Q. So that means that an application written for Java Card
wouldn't necessarily run on a Java ME device because it
wouldn't have the same APIs and class libraries, correct?
A. I'm sorry. Could you ask that question again. I got
mixed up between which direction you're talking about.
Q. I may have gotten it backwards.
That means that an application written for Java ME,
that depends on the Java ME APIs and class libraries, wouldn't
537
necessarily run on a Java Card device because it doesn't have
all those APIs and class libraries. Correct?
A. That's right.
Q. So, essentially, whether an application runs on a
particular Java device depends on which edition of Java that
application is written for, correct?
A. I would say whether or not a given application runs in a
given Java environment depends on the APIs that are present.
Q. And there are APIs -- strike that.
There are different APIs and class libraries present
in each of the different four environments we just discussed.
Correct?
A. That's right.
Q. Differences in APIs between Java EE, Java SE, Java ME, and
Java Card. Correct?
A. I think the difference between Java EE and Java SE is
different than the difference between Java SE and Java ME.
In the case of Java EE and Java SE, all of the Java
SE --
Q. Mr. Screven, my question was just, there are
differences --
A. Your question doesn't make sense.
Q. Mr. Screven, my question -- and you can say it doesn't
make sense, if you want -- there are differences in the APIs
between Java EE, Java SE, Java ME, and Java Card, correct?
538
A. There are differences, but those difference are not the
same depending on which particular pair of editions you're
talking about.
Q. Fair enough. But, nonetheless, despite the fact that the
differences may not be the same, there are differences in the
APIs among all four of those platforms. Correct?
A. So for in the case of Java SE and Java EE, for, let's say,
the list API that we've talked about now, the list API is the
same on Java SE and Java EE. It's exactly the same. There is
no difference at all.
Now, it is true that there's additional libraries,
additional APIs that are part of Java EE. But there are no
differences between what a list is on SE and a list is on EE.
Now, I don't know, actually, a particular list, but
there are some Java SE APIs that have -- that are simpler. You
know, the same classes exist on Java ME, but they have some
entry points that have been removed. And that is because --
Q. Mr. Screven --
A. -- the computer environments have less power.
Q. Mr. Screven, whether or not an application will run on a
particular Java device depends on which version of Java it is
written for. Correct?
A. Well, yes, that's right.
Q. So that's not write once, run anywhere; is it?
A. Actually, I think it is write once, run anywhere.
539
Q. How can it be write once, run anywhere, Mr. Screven, if a
particular application written for Java EE won't run on a
Java ME device?
A. Yes, but an application that's written to work against
Java EE runs on every computer that runs Java EE, whether or
not it's provided by Oracle or another vendor.
An application that's designed to run on Java SE runs
on every computer running Java SE, whether the Java
implementation was provided by Oracle or not.
An application that was written to run on Java ME
runs on every device that runs the Java ME, whether it was
written by Oracle or not.
An application that's written to run on Java Card
runs on every device running Java Card, whether that
implementation was created by Oracle or not.
So write once, run anywhere exists across every one
of those editions because exactly the same processes are
followed across every one of those editions.
Q. But write once, run anywhere doesn't work across the
different Java platforms; does it?
A. It works upwardly. So if I take an application that I
wrote against Java SE, I can run it directly in Java EE. But
if I depend on Java EE APIs, that's right, it doesn't work
unless the Java EE APIs are there.
Q. And if you're taking an application that was written for
540
Java SE, you wouldn't be able to run it on a smart phone that's
running Java ME; would you?
A. You would not. However, today smart phones actually are
capable of running Java SE, and so phone manufacturers and
customers are not interested in Java ME on smart phones
anymore.
Q. Mr. Screven, during your direct examination I think you
testified that there's no separation between the English
language specifications in the APIs and the underlying computer
program --
A. That's right.
Q. -- APIs, correct?
They're together in the same file?
A. Yes.
Q. The specification is part of the source code file. That
was your testimony, correct?
A. Yes. When -- people often create additional language
artifacts. But what Java programmers look at day-to-day, when
they're trying to understand the API, what's called the
Javadoc, that is directly embedded within the source file.
Q. All right. And those English language comments are then
extracted from that file and used as the basis for Java
documentation. Correct?
A. Well, it's more than the English language comments. It's
also the associated Java language elements which form the class
541
declaration, method declaration, constant declarations, and
other components which comprise the API, along with the
comments.
Q. So it includes the Java language elements, like the
declaration and the API name?
A. Yes.
Q. So the JAVA API name and the language declarations, those
are Java language elements. Correct? That's what you just
said?
A. Yes.
Q. Now, even though the plain language descriptions might be
in the source code file, they're not actually part of the
source code. Are they?
A. To me, they're part of the source code. They are in the
file. If I look at -- if I go and I look at the Java API
source files for, you know, the class files in question here or
any Java source file, right, it's -- you see a very structured
set of comments specifically tied to syntactic elements of the
Java programming language, which will then be extracted out as
part of the Java documentation.
Q. The English language comments in the source code file,
they don't actually get compiled into bytecode that tells the
device what to do; do they?
A. No, they do not.
Q. The plain language descriptions don't actually serve any
542
purpose at all, as far as telling the device how to run the
program. Correct?
A. Yeah, the purpose of the English language text is to tell
the programmer who's using the API how to use it, but, also,
the programmer who's implementing those API entry points what
to code.
Q. So if the English language specifications were stripped
out of the source code file, the source code would run exactly
the same on the device. Correct?
A. Yes. But, of course, if you stripped out the API, the
file wouldn't compile. So, you know, the Java language program
elements which are the API, independent of the English language
comments, right, are absolutely essential to the Java source
file.
Q. But as far as, actually, the source code that tells the
computer what to do, the English language specifications don't
provide any instructions to the computer. Correct?
A. That's right. It's the part of the API which is Java
language which tells the compiler what to do with the rest of
the statements and is part of that source file and is essential
to the program.
Q. And it's part of the Java language that tells the
programmer what to do. Right?
A. The part of that source file which is the steps the
computer should take to implement the API, that is written in
543
Java programming language, along with the API elements, right,
which also become extracted into the Javadoc.
Q. I think you said that some APIs come standard with the
Java language. On direct, didn't you say that?
A. I say it comes standard it Java. Java is an umbrella term
that refers to many things. It refers to Java virtual machines
which actually execute Java at runtime. When you go to run the
program, it actually is the thing which is causing the program
to run. It is the Java language itself and associated tools
like the compiler. And then it is libraries.
Right now, the Java language itself is separate from
the Java virtual machine, and it's separate from the libraries.
Q. So some of the Java language APIs are required by the Java
language specification. Correct?
A. Very, very little of it.
Q. Okay. But some of the 37 APIs at issue in this case are,
in fact, required by the Java language specification. Correct?
A. I think that there are thousands of classes that are part
of this case, and there's probably two dozen which are
mentioned in the Java language specification.
Q. You testified on direct that programmers are used to using
these particular Java language APIs, correct?
A. Yes. They are very common. They are very popular.
Q. The programmers depend on them. Correct?
A. Well, programmers depend on all kinds of programming
544
libraries. So --
Q. Including the Java language APIs?
A. Well, let's -- let's -- a programmer writing a program in
Java, a modern programmer probably depends on -- if they're
writing Java from Oracle, they almost certainly and definitely
are using those Java APIs that Oracle provides. They are very
likely to be using totally different APIs also provided by,
let's say, the Apache Foundation. Right. They are very likely
to be using APIs created by these other vendors who provide
other interesting functionality.
Q. I think you testified that if the Java language APIs at
issue in this case were stripped out of Java by Oracle,
millions of programmers who work in Java would have to learn
the new APIs. Correct?
A. What I was testifying about is, it made no sense for
Oracle to create a different, alternate set of APIs because the
ones we have are good and they're known by millions of
programmers. We have no incentive to try to replace them.
Now, from the technical standpoint, we definitely
could replace them. Right. But why would we? We have no
incentive to do so.
Q. It wouldn't be very popular with the community of Java
programmers if Oracle were to strip out the current APIs and
replace them with new ones. They would have to learn new APIs.
Correct?
545
A. Actually, what would happen is, they just wouldn't use our
Java implementation. They would use IBM's Java implementation
instead.
Q. Mr. Screven, you testified that you participated in the
due diligence process when Oracle was deciding whether to buy
Sun?
A. Yes.
Q. After analyzing Sun's business, you provided; a
recommendation that Oracle ought to buy Sun. Correct?
A. Yes.
Q. And that entire due diligence process took two or three
days?
A. That's right.
Q. And your role in that two or three day process was to
evaluate all of Sun's products and technologies. Correct?
A. Well, you know, of course, we -- we briefly surveyed their
technologies. But, of course, we had very little time, and so
we had to focus on, you know, a small number of things we
thought were key.
Q. And during the due diligence process, you didn't evaluate
a single specific piece of Sun intellectual property; did you?
A. That's not right. I mean, we talked to Sun engineers
about specific products and technologies that they had, were
working on.
Q. You didn't evaluate any specific Sun copyrighted material.
546
Did you?
A. Can you please define what you mean by "evaluate."
Q. Did you calculate the market value of a single piece of
Sun copyrighted material during this two to three day due
diligence process?
A. Well, we -- our goal during the technical due diligence is
to understand, you know, is there a reason not to buy the
company? Is there some problem with the underlying technology
we are not aware of from general public information?
Now, with respect to Java, Oracle was deeply involved
in Java before --
MR. PURCELL: Your Honor, the witness is not
answering the question.
THE COURT: That's true. He asked you whether or not
you calculated the value of any copyrighted material during the
two to three day due diligence. Either you did or you didn't.
You can tell us yes or no.
THE WITNESS: So what do you mean by "calculate"?
BY MR. PURCELL:
Q. Did you look at a single piece of Sun copyrighted material
during the two to three day due diligence period and assign a
value?
A. Yes. I personally assigned a value greater than or equal
to the amount of money I'm not allowed to mention, right, for
Java technology. That is the amount of money --
547
Q. That's not my question, Mr. Screven.
My question is, did you look at a single, individual
Sun copyrighted material and assign a value to it during the
due diligence period?
A. You mean like one single file out of Java? Is that what
you mean? Or you mean all of Java?
Q. I don't mean all of Java, Mr. Screven. I mean a single
piece of Sun copyrighted material.
A. The value of Sun technology is not in some individual
autonomic piece.
So our job and what I did was say, how much is Java
worth to Oracle? Is it worth at least the amount of money that
we're paying? The answer is yes.
So I calculated, based on my expertise, based on my
experience, that to Oracle Java as worth at least what we were
paying for all of Sun.
Q. There's a lot of components to Java other than the 37 APIs
at issue here. Correct?
A. Yes.
Q. Sun had a hardware business, right; they sell servers?
A. Yes.
Q. And Sun had other businesses, as well, where they sold
other pieces of hardware. Correct?
A. Yes.
Q. And Sun had other software businesses, apart from Java.
548
Correct?
A. Yes.
Q. You mentioned the MySQL line of software.
A. Yes.
Q. That's a separate Sun software business that's not Java.
Correct?
A. That's correct.
Q. And there is many other items of value under the Java
umbrella apart from the 37 API packages at issue in this case,
correct?
A. Yes.
Q. There were thousands of patents that Sun had related to
Java, correct?
A. Yes.
Q. There is the Java trademark, correct?
A. Yes.
Q. And that's pretty valuable. Sun made sure that people
were complying with compatibility requirements before they got
to use the Java trademark, right?
A. Yes.
Q. You couldn't use the Java coffee cup unless you certified
that you were compatible with Sun's Java TCK, correct?
A. Well, I don't know about the coffee cup.
Q. In any event, all of these different components were items
of value related to Java, correct, at the time you bought Sun,
549
Oracle bought Sun?
A. They were all part of the value of Java.
Q. And then in addition to Java, there were the other
hardware and software businesses that Sun had that I discussed,
correct?
A. Yes.
Q. Now, during the due diligence process, you never prepared
any document contemporaneous at that time that put any value on
Sun's Java business, correct?
A. That's right.
Q. You never actually put in writing at the time, your
testimony here today, that the value of Java to Oracle was
greater than the value that Sun paid for the entire -- or,
Oracle paid for the entire company, correct?
A. That's right.
Q. Talking a little bit about Sun's business, you mentioned
that in 2009 when Oracle decided to buy Sun, that Sun was
having some financial struggles, correct?
A. Yes.
Q. It's your opinion that Sun had a very strong focus on
engineering, correct?
A. They did.
Q. And you would agree that Sun created some very good
terminology, correct?
A. Yes.
550
Q. But despite its technology, you also think that Sun just
wasn't very good at running a profitable business, correct?
MR. NORTON: Objection. Beyond the scope of direct,
your Honor.
THE COURT: I'm sorry?
MR. NORTON: Beyond the scope.
MR. PURCELL: The direct was all about the value of
Sun to Oracle.
THE COURT: Well, there was testimony about Sun might
go out of business and what would that mean to Oracle and it
was already failing. This is close enough to being within the
scope. I will allow the question.
Please ask the question again.
BY MR. PURCELL:
Q. Despite Sun's good engineering practices, it was your
impression that Sun just wasn't just very good at running a
profitable business, correct?
A. That's right.
Q. You believe that Sun had lost its way in terms of its
business strategy, correct?
A. Yes.
Q. Sun was never particularly good at bringing technologies
to market in your opinion, correct?
A. I would not agree with that part. I think they had gotten
to a point where they were particularly good at bringing
551
technology to market. I mean, there were times in the past
when they were very good at it.
Q. All right. But in the few years before the Oracle
acquisition, whatever skill Sun might have had at bringing
technologies to the market had waned and Sun in that time
period was no longer very good at bringing technologies to
market, correct?
A. I would say overall they were -- they had lost their way.
Q. In fact, talking about the Java product line specifically,
under Sun's direction the momentum for Java products had
stalled, correct?
A. I think the external progress, the apparent progress of
Java had definitely stalled.
MR. PURCELL: May I approach the witness, your Honor?
THE COURT: Yes.
(Whereupon, document was tendered
to the witness.)
BY MR. NORTON:
Q. Mr. Screven, I've handed you Trial Exhibit 2237. Do you
recognize this document, sir?
A. Yes, I do.
Q. And is this is a report that Oracle prepared about the
acquisition of Sun to submit to the European community?
A. Yes.
MR. PURCELL: Your Honor, I would like to move 2237
552
into evidence.
MR. NORTON: No objection.
THE COURT: 2237 in evidence. You may show it to the
jury.
(Trial Exhibit 2237 received
in evidence)
(Document displayed)
BY MR. PURCELL:
Q. Mr. Screven, just for the jury's edification, the European
Commission is the body, among other things, that regulates
commerce throughout various European nations, correct?
A. Yeah. I'm not expert on exactly what they do in total.
You know, they are they have some purview over mergers and
acquisitions in Europe.
Q. They are a regulatory authority in Europe?
A. Yes.
Q. And they are a regulatory authority that has authority to
approve or disprove mergers and acquisitions?
Excuse me. Let me say that again.
They are a regulatory authority in Europe that has
the power to approve or disapprove mergers and acquisitions,
correct?
A. Yes, I believe so.
Q. All right. So in submitting information to the European
community about the Sun acquisition, Oracle would be sure that
553
everything in its submission was true and accurate, correct?
A. Yes.
Q. If you could turn to Paragraph 15 of the submission. This
is on Page 13.
A. Turn to Page 15 or 13?
Q. Page 13, Paragraph 15.
A. Okay, yes.
Q. So Paragraph 15 starts with the sentence:
"Java's success - for Oracle in the industry
- depends on Java remaining open and unified.
Momentum for Java has stalled under Sun's
stewardship and will benefit from Oracle's
guidance and ability to make substantial
financial investments in its continued
development."
Do you see that?
A. Yes.
Q. And that was a true statement, correct?
A. Yes.
Q. If you look at the first bullet point under Paragraph 15,
that begins with the sentence:
"First, Sun's stewardship of Java and its
approach to the Java Community Process (JCP)
has recently discouraged broad participation
in the continued development of Java as a
554
industry standard, as evidenced, for example,
by the submission of only five JCP
specifications in the past 12 months, a small
fraction of those submitted just three years
ago."
Do you see that?
A. Yes.
Q. And that's a true statement?
A. Yes.
Q. Sun had stopped releasing new Java products at regular
intervals, correct, prior to the Oracle acquisition?
A. Well, certainly the release process had slowed.
Q. And Sun's failure to deliver new Java releases was doing
damage to Java, wasn't it?
A. Umm, you know, it was frustrating programmers. It was
frustrating companies that relied on Java. I think, you know,
it was starting to create angst, and that angst is damaging,
yes.
Q. Mr. Screven, Oracle is very focused on making money,
correct?
A. Yes.
Q. Always has been, correct?
A. Well, I mean, I've worked at Oracle for a long time. So
probably at least for the time I've been there, yes.
Q. And it's your impression that Sun was never as focused on
555
making money as Oracle is, correct?
A. No. I would say my impression was that they did not seem
particularly focused at the time that we acquired the company.
Now, years in the past under different leadership
they maybe had very different attitudes.
Q. At the time prior to the acquisition it was your
impression that Sun wasn't as focused on making money as
Oracle, correct?
A. My impression is that they just weren't as focused,
period, so.
MR. PURCELL: I'd like to play as a party admission
from Mr. Screven's deposition at Page 70, Lines 16 to 21.
MR. NORTON: Objection. There were disclosures,
designations for Mr. Screven and, therefore, should not be used
as an admission. And I don't believe that it's offered for
impeachment.
THE COURT: Overruled. Go ahead.
(Videotaped deposition played in open court.)
BY MR. PURCELL:
Q. So when Oracle was deciding to acquire Sun, Oracle was
confident that it could take Sun's assets and find a way to
make more money off of them than Sun had been doing, correct?
A. Yes. That's true in every acquisition.
Q. That was what drove Oracle's decision to acquire Sun,
25 correct?
556
A. Yes.
Q. And a necessary part of Oracle's strategy for making money
off Java is to assert its intellectual property rights in Java
against other companies, correct?
A. No. I think the most important way for us to make money
in Java is to make sure that Java remains a widely-used
evolving technology platform so that we can use it in our
middleware business, we can use it in our applications
business, it remains popular with companies. And doing that
requires that we maintain the integrity of Java. That means no
non-compliant Forks of Java.
MR. PURCELL: I would like to play as a party
admission from Mr. Screven's deposition at Page 110, Lines 19
to 24.
THE COURT: Does it contradict what he just said?
MR. PURCELL: It does.
THE COURT: All right. Go ahead.
(Videotape played in open court.)
BY MR. PURCELL:
Q. Mr. Screven, you're familiar with the differences between
feature phones on the one hand and smart phones on the other
hand, correct?
A. Yes.
Q. Feature phones were less advanced devices with less
computing power as compared to smart phones?
557
A. Yes.
Q. And because feature phones have less computing power, to
the extent you can even run applications on feature phones,
those applications would be much less sophisticated than the
applications you can run on smart phones, correct?
MR. NORTON: Objection. Beyond the scope, your
Honor.
THE COURT: Why isn't that true?
MR. PURCELL: This goes to Sun's ability to actually
get into the smart phone business.
MR. NORTON: Objection. There was no testimony --
THE COURT: I don't think he testified about Sun
getting into the smart phone business. Sustained.
BY MR. PURCELL:
Q. You testified on direct examination that prior to buying
Sun, Oracle had never managed to develop a smart phone
platform, correct?
A. We didn't try to develop a smart phone platform.
Q. I believe you testified that Oracle didn't have, prior to
acquiring Sun, the expertise to develop a smart phone platform,
correct?
A. I don't think we said "expertise." I think we might have
said we didn't have the technology. That's different than
expertise.
Q. All right. And then you testified that after buying Sun,
558
Oracle felt that it did have the technology necessary to buy a
smart phone platform, correct -- to build a smart phone
platform?
A. Yes.
Q. And since buying Sun in February, 2010 Oracle never has
actually built a smart phone platform, correct?
A. That's right.
Q. And do you have any understanding as to why Sun, prior to
the acquisition by Oracle, with Sun's technology hadn't built a
smart phone platform of its own?
A. No.
Q. The fact is that Sun, prior to Oracle's acquisition in
2010, never had built a smart phone platform, correct?
A. Not as far as I know, no.
Q. And even prior to Android's release on the timeline in
October of 2008, before Android was on the market Sun had never
taken its Java technology and created a smart phone platform,
had it?
MR. NORTON: Objection. Scope.
THE COURT: Go ahead. Answer the question.
A. Not as far as I know.
BY MR. PURCELL:
Q. You also testified that one of the important reasons why
Oracle bought Sun was because some of Oracle's business lines
depended on Java technologies, correct?
559
A. Yes.
Q. I think you testified that much of Oracle's middleware is
written in the Java programming language?
A. Correct.
Q. And many of Oracle's business application platforms are
also written in Java, correct?
A. Yes.
Q. So making sure the Java technologies were well taken care
of, that was important to Oracle, correct?
A. Yes.
MR. PURCELL: Can we put Trial Exhibit 2347, which
was admitted during Mr. Screven's, direct up on the screen?
(Document displayed)
BY MR. PURCELL:
Q. Now, this is a letter that you signed on behalf of Oracle,
correct?
A. Yes.
Q. And you signed this letter requesting that Sun grant a
license to the Apache Harmony project, correct?
A. Yes.
Q. And you wanted Sun to grant a license free of any Field of
Use restrictions to Apache Harmony, correct?
A. Yes.
Q. And now you testified, I think, that Sun never gave a
license to Apache, correct?
560
A. No. They never gave a license, that's right.
Q. The other way to look at that is that Apache never agreed
to abide by the terms of any license, correct?
A. Well, that's true, because Sun offered them a license with
a Field of Use restriction and Apache turned it down.
Q. Despite never agreeing to that Field of Use restriction,
Apache had been making its product available on its website
since 2005, hadn't it?
A. You could download their source.
Q. Right. So anybody could have taken, as of 2005, the
Apache source code that included the Java class libraries that
eventually made their way into Android, correct?
A. They could have taken it, yes, just like Google did,
that's right.
Q. And anybody could have then used those APIs under the
terms of the Apache license, correct?
A. Well, I think -- of course, you know, from what I
understand, you know, this whole trial is about -- you know,
dispute about intellectual property rights and, you know, that same dispute would now exist between Oracle and whoever did
that, Google or otherwise.
So the fact that Apache made that source code
available under the Apache license doesn't mean it was free to
use for anyone under the Apache license.
Q. Sun never sued Apache, did it?
561
A. No.
Q. Sun never told Apache that by making the source code
available and the APIs available for free for anyone to use on
its website, that Apache was violating Sun's copyrights, did
it?
MR. NORTON: Objection, foundation.
THE COURT: Well, you, yourself, Mr. Norton, laid
this letter before the witness and asked him to testify all
about it. So he has sufficient foundation to answer those
questions.
This is a fair question within the scope of that line
of questions. The objection is overruled.
Please answer that question.
A. Could you repeat the question?
BY MR. PURCELL:
Q. Sure.
Sun never asserted that Apache, by making its source
code and the Java APIs available on its website for anybody to
use from 2005 onward, was violating any Sun copyrights, did it?
A. Well, okay. I don't know about "asserted." They didn't
sue Apache, right, but you know whether they wrote letters to
people or talked to people, I don't know.
Q. Are you aware of any letters that Sun ever wrote to
Apache --
A. No.
562
Q. (Continuing) -- accusing Apache of copyright infringement?
A. No, but I wouldn't necessarily be aware of those letters.
MR. PURCELL: Nothing further.
THE COURT: All right. Redirect?
REDIRECT EXAMINATION
BY MR. NORTON:
Q. Mr. Screven, you were asked some questions about different
editions of Java on cross examination.
A. Yes.
Q. Is Java ME a Fork of Java SE?
A. No. No, it's not.
Q. Is Java SE a Fork of Java EE?
MR. PURCELL: Objection, your Honor. This calls for
expert testimony.
THE COURT: It's within the scope of the questions
you asked. Overruled.
A. No, it's not.
BY MR. NORTON:
Q. Is Java ME a Fork of Java Card?
A. No.
Q.
Are any of those four editions Forks of the other?
A. They are not Forks.
Q. Why not?
A. Well, they are each -- they are each editions of Java
specifically designed for a particular purpose. In the case of
563
Card ME SE they spanned a range of compute hours.
So Java Card runs on -- they are like a little smart
card, like a credit card. It's a very small processor and very
little memory. So it's Java reduced down to run in a tiny
little form factor. Right?
Java ME is designed to run on devices which are much
less powerful than, say, a modern smart phone, but still more
capable than just a little credit card size device. Something
like your flip phones that you use.
Java SE is designed to run on anything from smart
phones, you know, on up in terms of the compute power.
Now, each one has exactly the same sort of you know,
like once run through it characteristic within that class of
compute devices.
Q. You were asked some questions about APIs on
cross-examination. Are the names of the API classes and
subclasses, are those part of the Java language?
A. There are syntactic elements within the Java language.
So I know this is going to sound like Greek to most of the
people sitting in the audience, but the program language is --
program language, including Java, has something called a
syntax. And that syntax describes all of the kinds of key
words and literals and characters and other things that may
appear within the programming language. And so the names of
methods and classes and other elements which you see appearing
564
in API are syntactic elements within the Java language
specification.
Q. So does the Java language specification require that one
use any particular class?
A. No.
Q. No. No, it does not. I mean, there is nothing in the
Java language specification that requires that there be a class
named tree, but there is a class named tree within -- within
the standard APIs.
You know, there is no requirement that there be a
class called list, but there is a class actually, something
called an interface called list within -- within, you know, the
standard APIs.
Q. When you say "within the standard APIs," are you refusing
to the language specification or the API specification?
A. I'm referring to the API specification.
Q. Is there any -- aside from what you described in your
testimony on cross-examination as approximately two dozen
elements, is there any functionality called for by the Java
language that requires that you use any particular class?
A. Its very, very little. So, for example, if I have a
string literal. So within my Java program that has a type.
The type is -- you know, it's an instance of the class string.
Now, you know, there are similar kind of requirements
for, you know, a class called integer or a class called double,
565
but the actual programmatic interfaces of those classes is not
specified or dictated within the Java language specification.
And, you know, beyond that couple dozen class names that appear
within the Java language specification, you know, the many
thousands of classes which are part of the APIs in question
here are not mentioned at all as part of the language
specification.
THE COURT: Let me ask a question on that.
You say there are about a dozen. What are the names
of the dozen that are called out in the Java programming
language? Do you know that by heart?
THE WITNESS: So it will be incomplete because it's
off the top my head. But Double.
THE COURT: Double?
THE WITNESS: Yes.
Float?
THE COURT: Float?
THE WITNESS: Long.
THE COURT: Wait a minute. Float?
THE WITNESS: Float, F-L-O-A-T.
THE COURT: Yes.
THE WITNESS: Long, L-O-N-G.
Integer.
Bullion.
String.
566
Thread, I believe is there.
Object.
Class.
THE COURT: Class?
THE WITNESS: Class, C-L-A-S-S.
Now, I'm sure I have missed some that are mentioned.
Now, if you actually look at the Java language
specification document, you'll notice that there are some
example program texts. They mention other classes that are
part of the standard library, but that -- but they are shown as
program examples. They are not actually part of the language
specification proper. So that -- so that if you remove them
out of the libraries, you would not affect the behavior of the
Java compiler.
Those other classes are a little special just because
the compiler knows that they exist and have to exist, you know,
as it's interpreting a program to compile, but that's it.
Other than those two dozen classes, there is nothing
else.
THE COURT: Are these classes or are those methods?
Like Double?
THE WITNESS: They are -- they are classes. They are
classes.
THE COURT: So do they -- within each one do they
have more than one method?
567
THE WITNESS: Yes. They have several methods.
Now, the methods themselves are -- almost none of the
methods are actually described or mentioned in the Java
language specification. Some of the methods are used in
examples, but they are not actually part of the language
proper.
So, for example, for the Class string has a method
which is find a given character within the string. So if I'm
looking at -- if I'm looking at a telephone number string and
I'm looking for the dash, you know, there is a method of string
that will let me find the dash. That method is not mentioned
in the Java language specification. It's not part of the Java
language. It is part -- part of the standard API that comes
along with Java.
THE COURT: Okay. Thank you.
Go ahead Mr. Norton.
MR. NORTON: Thank you, your Honor.
BY MR. NORTON:
Q. Now, if you -- you were also asked some questions about
the value of Java. If Java did not write once, run anywhere,
would that have any effect on the value of Java to Oracle?
A. Yes, in two very important ways. One important way is
that it would mean that our software would be harder to write.
If we wanted to run on a given platform and there was not a
compliant Java implementation there, then we would have to
568
change our software to make it run there. So that would make
our software development expenses much higher.
The second way is that because it would make Java
less appealing to other developers outside of Oracle, it would
mean that our products being implemented in Java would be less
appealing to them.
So programmers like using our middleware and they
like using our applications because they are implemented using
this compatible programming environment, language, APIs, JVM.
And if they can no longer be assured that Java is the same
everywhere, then our middleware and our applications will be
less appealing to them.
Q. You were asked on cross-examination whether you ever told
anyone in writing that you believed that the value of Java was
equal or greater to the purchase price of the company? Did you
ever tell anyone orally?
A. Yes --
MR. PURCELL: Objection, hearsay.
THE COURT: Yes, but the -- I'm going to allow it in
light of the cross-examination.
Go ahead. Overruled.
BY MR. NORTON:
Q. What did you say and to whom did you say it?
A. I told Mr. Ellison, our CEO, in a telephone conversation
that we should buy Sun for no reason other than Java. Java was
569
easily worth the purchase price.
Q. And did you say this prior to the date on which Oracle
decided to acquire Sun?
A. Yes.
Q. And so what year would that have been in?
A. Geeze, 2009 I guess.
Q. So, and at that time had Oracle brought any litigation
against Google over Android?
A. No.
Q. If we can turn to the exhibit Mr. Purcell showed you,
Exhibit 2237, which is the larger of the two documents.
(Witness complied.)
Q. And Mr. Purcell directed you to Page 17 of 205, which was
Paragraph 15.
(Document displayed)
Q. And he identified the sentence that begins Paragraph 15:
"Java's success - for Oracle and the
industry- depends on Java remaining open and
unified."
Would you please explain what was intended by
"unified" here?
A. "Unified" means --
MR. PURCELL: Objection, your Honor. I don't know
that this witness wrote the document. No foundation.
THE COURT: But you, yourself, asked him about this
570
paragraph, correct?
MR. PURCELL: I did.
THE COURT: Then it's fair game for the witness to go
back to the same paragraph and explain it.
Overruled. Go ahead.
MR. NORTON: If I may, your Honor.
BY MR. NORTON:
Q. Mr. Screven, were you involved in the preparation of this
document?
A. Yes.
Q. And did you review the document before it was filed?
A. Yes.
Q. And would you please explain what was intended by the word
"unified"?
A. "Unified" means that the various parties that create and
ship Java implementations have compatible implementations.
They were all implementing the same programming language and
that if we were shipping a Java implementation, it has passed
the test kits and, therefore, compatibility is ensured.
Q. Mr. Purcell showed some deposition testimony of yours in
which you discussed that enforcing intellectual property rights
is a necessary part of monetizing.
Can you explain what you meant by that?
A. Right. So Oracle is the hardware and software businesses.
Now, in the software business we sell software. So people pay
571
us for licenses to use our software. And it's important to us
that we actually enforce the intellectual property rights
around our software. Otherwise, people would take and use our
software without paying us and that would -- that would
undermine and destroy our business model.
Q. And, I'm sorry. One more question on Exhibit 2237 on that
same page that Mr. Purcell showed you, Page 17 [sic].
MR. NORTON: If we can scroll down to the second
bullet on that page?
(Document displayed)
MR. NORTON: Thank you.
BY MR. NORTON:
Q. It begins, that paragraph begins.
"Second, as a result of this stagnation in
the JCP process, vendors already have and
will likely continue to fragment Java as a
programming language and environment for
developers."
Stopping there. Was that true?
A. Yes, yes.
Q. All right. And then if we go down a little further
there's a sentence that begins "Google's." And that sentence
says:
"Google's Android is also an example of
splintering the Java software developer
572
community with an implementation that is a
Sun Java Mobile Edition clone."
Now, is that one of the sentences that you reviewed
in the preparation of the document?
A. It is, although I think -- I mean, there is a mistake
there that it's actually a clone. I would say a Standard
Edition more than a Mobile Edition.
Q. But a clone of Java?
A. A clone of Java.
Q. And when was this document prepared, do you know?
A. Actually, I don't remember now exactly when it was
prepared.
Q. Was it prepared prior to the date on which Oracle closed
its acquisition of Sun?
A. Yes, yes. It's between when we announced the acquisition
and we closed the acquisition.
Q. And if you would actually turn to the very last page of
the document?
19 (Witness complied.)
Q. There is a place and date that appears.
A. Yes.
Q. What is that date?
A. That is July 30th, 2009.
Q. So does that refresh your recollection that this document
was prepared in July of 2009?
573
A. Yes, that's right. That is when it was prepared.
Q. And, again, using the timeline, July 30, 2009 was before
Oracle filed any lawsuit against Google?
A. Yes.
Q. And in this document Oracle asserted that Android was
splintering Java, is that right?
A. Yes.
MR. NORTON: Nothing further.
THE COURT: All right. May the witness step down?
MR. PURCELL: He may.
THE COURT: Okay. Thank you, sir. You may step
down. You're excused not subject to recall.
(Witness excused.)
THE COURT: Time for a 15 minute break, isn't it?
Please remember the admonition.
THE CLERK: All rise.
(Jury exits courtroom at 11:13 a.m.)
THE COURT: Please be seated.
Here are some more things on the issues that I have
to decide.
Now, I don't want you to give me this unless it's
going to actually wind up being in evidence, but if it is going
to be put into evidence, then I would like to have some advance
thinking about it.
With respect to Java programming language being
574
something stand-alone and separate and apart from the APIs, I
would like to have a listing of the commands or statements or
declarations, whatever the more limited set is, of the Java
programming language. Like, go to... whatever. But the whole
list. Is it several hundred? Is it a few dozen? I'd like to
see that list. And, also, the syntax rules, if there are
syntax rules.
With respect to the -- also, with respect to the --
the witness referred to these 12 classes. I would like to know
the 12 classes and the methods that are included within the 12
classes and then also to see these examples that he referred
to, which he said were just examples, but, nonetheless, they
are there. I would like to know what those examples are. They
refer to other APIs, he said. I don't know those 12.
Then a different question. Within the 37 the
plaintiff has made a big deal out of interrelationships, but
it's always been very vague. What I am assuming that it
means -- but I don't know, because it's never been proven,
maybe it will be, but that's why I'm asking -- is that some particular method and some particular library in some
particular class will borrow the code that is, and call up some
method in a different class and so as not to have to repeat the
same code, which is, you know, perfectly understandable that
you would do it that way.
The suggestion has been made that in every single
575
instance Google copied those interrelationships so that we
could find a one-for-one correspondence of -- if you go to,
say, the ABS method, you would find that it calls up some other
method, and the suggestion has been made that in every single
instance Google calls up the exact same method within the
method; i.e., copying exactly the interrelationships.
Is that true, Mr. Jacobs? Is that the way it works,
or is it just some of those interrelationships?
MR. JACOBS: I think it's going to sound a little
circular, your Honor, but to the extent that Google has
implemented the application programming interfaces contained
within the 37 packages, then Google has copied all of the
elements, including the interrelationships.
We'll explain the interrelationships with the next
witness actually. It might be a little --
THE COURT: All right. I can wait on that, but I
would like to see some proof of that and that it -- and all of
these 4500 or so methods where one of them calls up another
method.
In other words, the witnesses have been referring to
these as prewritten programs. Okay. I understand that. And
maybe a prewritten program borrows from another prewritten
program so you don't have to repeat that. And what I hear you
saying is in every single instance where that occurs, Google
has duplicated it, in fact, calling up the same method in the
576
same way that it's done in that particular method. I would be
interested in knowing whether or not that's true.
So I know that that's what you allege. That's what I
hear you saying. But the devil is always in the details and I
would like to know if that bears out 4500 times.
MR. JACOBS: Understood, your Honor.
THE COURT: All right. So somebody surely has looked
at that and knows the answer.
All right. We'll take our 15 minutes now.
(Whereupon there was a recess in the proceedings
from 11:19 a.m. until 11:30 a.m.)
MR. JACOBS: Before we begin, your Honor, because
would be tedious for the jury, we have reached agreement on a
set of Java-related copyright registrations to offer into
evidence.
THE COURT: All right. Go ahead.
MR. JACOBS: 450, 451, 452, 453, 454, 455.
THE COURT: All agreed?
MR. PURCELL: No objection.
THE COURT: All of those are now received in
evidence.
(Trial Exhibits 450, 451, 452, 453, 454, 455 received
in evidence)
MR. JACOBS: 460 -- you will see why we're doing this
here, your Honor. 460, 461, 462, 463, 464.
577
MR. PURCELL: No objection.
THE COURT: Received.
(Trial Exhibits 460, 461, 462, 463, 464 received
in evidence)
MR. JACOBS: 475, 476.
MR. PURCELL: No objection.
MR. JACOBS: 509, 510, 511.
MR. PURCELL: No objection.
THE COURT: Okay. All received.
(Trial Exhibits, 475, 475; 509, 510, 511 received in
evidence)
MR. JACOBS: 513, 518.
MR. PURCELL: No objection.
MR. JACOBS: 520, 521.
MR. PURCELL: No objection.
MR. JACOBS: 523, 524.
MR. PURCELL: No objection.
MR. JACOBS: 526.
MR. PURCELL: No objection.
MR. JACOBS: 595, 596, 597.
MR. PURCELL: No objection.
MR. JACOBS: 598, 599.
MR. PURCELL: No objection.
MR. JACOBS: 601, 602, 603.
MR. PURCELL: No objection.
578
MR. JACOBS: 659.
MR. PURCELL: No objection.
MR. JACOBS: End of dramatic reading.
THE COURT: All right. Thank you. All received in
evidence.
(Trial Exhibits 513, 518; 520, 521; 523, 524; 526;
595, 596, 597; 598, 599; 601, 602, 603; 659 received
in evidence)
THE COURT: Ready to go?
MR. JACOBS: Yes, sir.
THE COURT: Let's bring in the jury.
(Jury enters the courtroom at 11:33 a.m.)
THE COURT: Thank you. Welcome back. Please have a
seat.
And Oracle may call its next witness.
MR. JACOBS: Oracle calls Dr. Mark B. Reinhold as its
next witness, your Honor.
THE COURT: All right. Please stand there and raise
your right hand.
MARK B. REINHOLD,
called as a witness for the Plaintiff herein, having been first
duly sworn, was examined and testified as follows:
THE WITNESS: I do.
THE CLERK: Please be seated.
579
THE COURT: Have a seat. Thank you.
You need to sit about this close to that. This base
of the microphone will move all around to suit your
convenience.
Why don't you say your name?
THE WITNESS: Mark B. Reinhold.
THE COURT: That's good.
Go right ahead, counsel.
DIRECT EXAMINATION
BY MR. JACOBS:
Q. Dr. Reinhold what is your position now at Oracle?
A. I am the chief architect of the Java Platform Group.
Q. What did you do before you were employed at Oracle?
A. I was at Sun Microsystems.
Q. How long were you at Sun?
A. I joined Sun in 1996, so I was there until the
acquisition; about 14, 15 years.
Q. In your work for Oracle and Sun have you designed APIs for
Java?
A. I have.
Q. Can you tell the jury, please, a little bit about your
educational background?
A. So I have a PhD from the Massachusetts Institute of
Technology. Before that I did an undergrad degree at the
University of Pennsylvania.
580
Q. And what is your PhD in?
A. Computer science.
Q. Can you explain what you do in your job as a chief
architect of the Java Platform Group?
A. Sure. So at a high level I'm responsible for steering the
technical direction of the work that the group does. I'm also
responsible for the engineering processes and practices we use
to build our software. And I also help get -- I'm involved in
the actual work of getting new releases ready and built and
shipped out.
Q. And when you talk about software, what are you referring
to?
A. I'm referring to Java.
Q. The word "architect" is in your title. How does that
relate to what you do?
A. Well, in my kind of role it's a little bit like being --
like being a building architect in that a big part of my job is
to look after the coherence of the Java Platform as a whole, to
make sure everything is fitting together well, to make sure
that new things fit in properly, and so that the whole thing
continues to make sense.
In a little -- in a little bit it's also like being a
civil engineer, because I'm also responsible for the integrity
of the internal structure of all code.
Q. Do your responsibilities include the Java APIs and class
581
libraries?
A. Yes.
Q. For which software platforms in particular?
A. For the Java SE Platform primarily.
Q. Do you actually write code yourself these days?
A. I do still write code. I'm an engineer at heart. I would
be very unhappy if all I did was supervise other people writing
code.
Q. How long have you held the role that you hold now?
A. I was in a similar role at Sun starting in about 2006.
Q. And before you became this -- into this -- you came into
this chief architect role, were you working on Java?
A. Yes. I worked on Java my entire time at Sun.
Q. So how many years have you worked on the Java Platform?
A. By now it's about 16.
Q. Does that include for that period working on API design
and implementation?
A. Yes.
Q. Just tell the jury a little bit about Sun Microsystems,
especially as you encountered it when you joined the company?
A. So Sun, when I joined it in 1996, was still on an upward
growth path. The dot com boom was starting to happen. The
company couldn't build these big servers fast enough. And Java
was kind of the hot knew thing. That's why I came to Sun, was
for the opportunity to work on a software platform that looked
582
like it was going to be widely adopted. And there were a lot
of smart people on the team, which also made it attractive.
Q. Just to make sure we're using the calculated way the jury
by now has become familiar with, when you talk about Java, what
do you mean?
A. I mean the Java Platform, platforms as a whole.
Q. And what are the main components of the Java Platform?
A. The main components of the Java Platform are the Java
Virtual Machine.
Above that there are the Java -- well, the Java
Virtual Machine, the Java language, the programming language,
and the class libraries.
Q. Did you learn how the name Java was chosen when you joined
the group?
A. Yeah. It was chosen just a little bit before I started.
The story goes -- the -- there was this original skunk works
project at Sun and they were working on software for boxes and
stuff, and that project was called Oak. But then as they
repurposed that technology for the internet and for use in web
browsers, they did a trademark search on "oak" and that was
taken by some other technology company.
So there was this big brainstorming meeting and
everyone who was there tells a different story about it, but
the essence of it was that one of the engineers in the room was
drinking a cup of Peet's coffee and he spoke and said "Java,
583
how about that?" And at first people didn't like it much, but
it turned out to stick, and it also passed the trademark
search. No one else had trademarked it yet.
Q. I'd like to get right to the topic of the class libraries
and the APIs. So have you actually designed Java APIs
yourself?
A. Yes, I have.
Q. And have you built the class libraries?
A. I have done that, also.
Q. Can you explain to the jury what a Java class library is?
A. So a class library in Java is -- it's a kind of software
library, and software libraries are extremely common in
software engineering. They are libraries of prewritten code
that are general purpose and can be reused by software
developers in a wide variety of different programs.
Q. And what do you mean here by "prewritten"?
A. A library contains code that's already written. It's
already been tested. It has clear documentation. So that if a
developer needs to perform a certain task, they can go to the
library, see if there's a class or whatever type of code they
need in there, and then reference it in their own code.
Q. Can you give an example of one of the important Java class
libraries?
A. So one example would be there is an API for creating
secure network connections over the internet. This is the sort
584
of thing you would do if you need to transmit something like
your credit card information, right? You don't want to do that
in clear text that any snooper could just read. So there is an
API for creating secure network connections. It's a package
with several classes in it.
Q. How many segments of prewritten code like this are there
in the Java class libraries?
A. If you're counting classes in the Java 5 Platform, which I
understand is the topic here today, if you're counting classes,
then that number is about 3,500.
Q. And then what's the next -- in the hierarchy within a
class -- within a class what comes next?
A. So classes, classes themselves contain things called
methods and fields. And if you counted out methods and fields
in the Java 5 class library, the number is about 35,000.
Q. What is an Application Programming Interface?
A. An Application Programming Interface is, it's essentially
the blueprint for the class libraries. The class libraries are
in compiled form that the machine can understand.
So a human being looking at a class library, it's
just impossible to figure out what's going on. The API is a
specification of the class library. It's a description of it.
It tells you what -- what its structure is, what the names of
all the elements are, and it includes English prose that
describes how every element is expected to work. It also
585
defines all of the relationships between the different
elements.
Q. And by "relationships between the different elements," at
a very high level what do you mean?
A. Almost any element in a class can refer to another class.
It can refer to another element of another class.
Q. Let's talk in more detail about the actual structure of
8 Java's APIs.
Have you prepared some slides to help explain your
work in APIs and what they mean?
A. Yes, yes.
MR. JACOBS: Can we have them up on the screen?
(Document displayed)
MR. JACOBS: So, your Honor, if it would be okay with
you, I would hand Dr. Reinhold the clicker and have him walk
through these slides himself.
THE COURT: Is this for illustrative purposes?
MR. JACOBS: It is, your Honor.
MR. PURCELL: Your Honor, we object. This is in the
nature of expert testimony. It's not about facts. It's an
illustrative abstract tutorial.
MR. JACOBS: Your Honor, this is to explain his work
in designing APIs at Sun.
THE COURT: Was his deposition taken?
MR. JACOBS: Yes.
586
THE COURT: Was it taken on this subject?
MR. JACOBS: It was taken, yes, on the subject of
what is an API and what is a class, et cetera.
THE COURT: All right. I will allow him to do it.
Overruled. Go ahead.
MR. JACOBS: May I give him the clicker?
THE COURT: Yes.
(Whereupon, clicker was tendered
to the witness.)
A. Okay. So the first slide introduces basically the concept
of classes. And here I'm just using examples from the real
world. A class is a description of a group of objects. We
could have, for example, a Car Class and every car out in the
world is a member of the Car Class. Similarly, we can have a
Train class and every train is a member of the Train Class.
And we can have a Plane Class and every airplane is a member of
the Plane Class.
Now, classes are interesting because they can be used
to relate -- they can relate to other classes. For example,
cars, trains and planes are all -- all together they are all kinds of vehicles, right?
MR. PURCELL: Your Honor, I object. This is
narrative. We should proceed by question and answer.
THE COURT: I will interrupt when it becomes a
problem.
587
MR. PURCELL: Thank you.
THE COURT: I understand the point you're making and
it's not a problem yet.
Continue on.
A. Okay. So all of these things are types of vehicles. So
we could introduce a Vehicle class, which groups the three
together.
So now if we were designing -- if we were actually
designing an API here and we just wanted to talk about
vehicles, we could use the Vehicle Class rather than Car, Train
and Plane separately.
Now, moving on. As I said earlier, classes can have
things within them. One of things they can have are methods.
Methods describe the actions available to members of the class.
So a car, for example, could have a start method to
start the engine, a stop method to stop the engine, a blowHorn method to blow the horn. Of course, you could have a whole
bunch of other methods; turn the lights on, turn the lights
off, you know, accelerate, decelerate. I'm just showing three
here.
A train is a lot like a car. It also has stop, start
and blowHorn methods.
A plane is kind of like the other two. It will have
methods to start and stop the engines, but I have yet to see an
airplane have a horn you can blow. So there is no blowHorn
588
method in the Plane Class.
Now, another kind of thing that can be in a class are
fields. Fields describe the properties of the -- for a
particular member, it describes properties of that member of
that class.
So here I've just shown a couple in green. In the
Car Class we could have a model field. That could be the model
like Chevy Volt or Honda Insight or whatever. MaxPassengers
could be a number, which is the maximum of passengers. Maybe
it's two, maybe it's four, maybe it's five. And similarly we
could have additional methods on train and plane -- sorry,
additional fields.
Now, there is another thing called interfaces.
Interfaces in the Java language are kind of like classes,
except they can cut across this tree structure that we've shown
so far. So far this is just a tree. You can think of vehicle
as the root; car, train and plane are sort of branches coming
out of it.
Q. Let me just interrupt you for a second because that word
"Interfaces" is showing up.
A. Yes.
Q. Is this the same interfaces that is Application
Programming Interface?
A. No, it is not.
Q. Okay. So could you just get --
589
A. This is a much more specific interface. The term
"Application Programming Interface" includes these interfaces
in the classes and methods and everything else.
Q. Okay.
A. So there are other things in the world that have horns you
can blow. For example, a factory. Factories often have horns
that are blown to signal the beginning and end of a shift. So
if we had a Factory Class, it could have a blowHorn method.
What interfaces do is let us capture what is common
across Factory, Train and Car, which otherwise those are very
different kind of things.
So we could define an interface called ThingWithHorn,
for example, and that's for things with horns. It specifies
the blowHorn method. And we can say that Car, Train and
Factory, but not Plane, are related to the ThingWithHorn
interface. What we say is they implement the ThingWithHorn
interface.
So if you were writing code against this API and you
wanted to have some instructions about things with horns, you
could just think about the ThingWithHorn interface and whether
it's a car, a train, a factory or something else that someone
hasn't thought of yet, you have a way of capturing that
concept.
Now, additional classes can be useful. As more
classes come into the picture, it's useful to introduce yet
590
more to help structure the entire hierarchy. So here I've
added Truck, Rocket, and Office and House. And since that's
getting to be a fair number of classes, I've introduced some
more grouping classes to organize things.
So Car, Train and Truck are grouped under the
GroundVehicle Class, which itself is under the Vehicle Class.
Plane and Rocket are under the FlyingVehicle Class, which is
also under the Vehicle Class. And Factory, Office and House
are under the Building Class.
And we still have the case that Factory, Car, Train
and, oh, now Truck are things with horns that you can blow, so
they implement the ThingWithHorn interface.
As time goes on and the API gets richer, the picture
just keeps becoming more complicated. You can see there's
starting to be a fair amount of structure here.
I have PowerTools; Drill BandSaw, Router.
TransportStructure; Highway, Tunnel, TrainTrack. We need
something to help us understand this. You can imagine if this
were far larger, how hard it would be to understand.
This is where packages come in. So packages are the
highest level concept in the language and they are used to
organize related classes together.
So here I've shown Vehicle and PowerTools. I put
those into a package called Machines. I've put Building and
TransportStructure and all of those other classes into a
591
package called Structures. And I've put the ThingWithHorn
interface, which sort of stands on its own, into a package
called Soundmakers, which, you know, might have some other --
other things in it; maybe an orchestra, or a violin, classes
for other things that make sounds.
Now, I could have organized this all differently. It
was a deliberate choice to do things this way. I could have
organized classes that have to do with things on roads in one
package or under one grouping class. And I could have had --
you know, could have done many of these things differently.
THE COURT: What is a library?
THE WITNESS: What is a library?
THE COURT: A library. You said "package." Is that
the same thing as a library?
THE WITNESS: No. A package can describe part of a
library, your Honor.
THE COURT: What then is a library?
THE WITNESS: A library is the compiled form of the
code that can be used directly, sir.
So when the phrase "Java class library" is used,
what's the reference there to library? So Java class library
means the compiled code, form of the code that is ready for the
virtual machine to run.
And in the case of Java class libraries that are
associated with the APIs then what are those Java class
592
libraries? They're the compiled form of -- they are the
compiled form of the source code, which includes the APIs, but
also includes all of the instruction code as well.
BY MR. JACOBS:
Q. So what elements of classes, et cetera, have you
introduced to us that are -- you're now going to rely on as we
discuss actual APIs?
A. Okay. So going from the top down. Packages are the
highest level concept. Packages can contain classes and
interfaces.
Within a class or an interface you can specify a
method. Within a class you can also specify things called
fields. I've showed a couple examples of those.
So now let's talk about an actual Java API. The
java.nio.channels Package.
A. Right.
Q. First of all, can you explain your involvement with
java.nio.channels?
A. So, this was some work that I led in around 2000 to design
a set of new I0 APIs for the Java Platform that could offer
higher performance than the old IO APIs could do.
Q. Did you have a particular role in that API development?
A. Yes. The role I had was what we call specification lead.
Q. Can you explain what a specification lead is, please?
A. So a specification lead at the end of the day is
593
responsible for all technical aspects of an API design.
Q. Can you tell us what this slide here, which is Slide 9 of
the demonstratives, is showing us, please?
A. Sure. So the java.io API is divided into five packages.
This is one particular package called the channels package. It
has a number of classes. Those are shown on the left. This is
using the same hierarchal tree notation that I used on the
previous slides.
And it also has some interfaces. Those are displayed
over on the right with dashed lines. Just like we had
ThingWithHorn and the interfaces relate some of the classes and
cut across the hierarchy, just like ThingWithHorn did.
Q. Just so the record is clear on this, can you identify the
classes in the java.nio.channels that are illustrated on this
slide?
A. They are Object; Channels, FileLock, Pipe, SelectionKey,
Selector, AbstractInterruptibleChannel; FileChannel --
Q. Slow down.
A. Sorry.
FileChannel, SelectableChannel,
AbstractSelectableChannel, DatagramChannel, ServerSocketChannel
and SocketChannel.
Q. And what are the interfaces that are illustrated here?
A. The interfaces are on the right. ByteChannel,
GatheringByteChannel, ReadableByteChannel,
594
ScatteringByteChannel, WritableByteChannel, Channel,
InterruptibleChannel and Closable.
Now, I should say just to be completely clear that
some of these classes and interfaces they are shown here for
reference. They are not actually defined in the channels
package. They are defined elsewhere.
Q. What do you mean by that?
A. So Object, for example, is in another package called
java.lang. Closable is in the java.io Package. And the two
classes whose name begins with the word "Abstract" are in a
related Java.io package, but one with a different name.
So is this an example of a kind of an interrelationship
among classes?
A. Yes.
MR. PURCELL: Objection, leading.
THE COURT: It is leading, but it's okay in this
case.
Go ahead. Overruled.
BY MR. JACOBS:
Q. Can you explain what the nature of the interrelationship
is here?
A. The interrelationship with these elements that are in
other packages?
Q. Correct.
A. So in Java, Object is the class under which all other
595
classes are grouped. Every single object in Java is somehow an
instance of the Object Class. So that's always relevant to the
picture.
The Closable interface is over in the java.io package
because that is a very general purpose interface. If a class
implements the Closable interface, then what that means is it
has a method called Closed. Closed is a method you invoke when
you're finished using the resources provided by a specific
member of a class so that its resources can be reclaimed. And
many kinds of things are Closable in the Java APIs.
AbstractInterruptibleChannel and
AbstractSelectableChannel, they are in a subpackage called
java.io.channels.spi. And the reason for that is those classes
are only of interest to developers who are extending the
java.io IO framework itself. And that's a fairly uncommon
thing to do. So in order not to clutter up the channels
package proper, we put those in a subpackage since most
developers won't need to look at those.
Q. Now, does this Slide 9 show the entire java.nio.channels
Package?
A. It shows all of the top level classes, but some
information has been omitted.
Q. What's been omitted?
A. Well, the interfaces, for example, have -- there's a
richer structure of these interfaces than what's shown here.
596
Interfaces, just like classes, can be grouped under each other.
So if we can go to the next slide, that richer
structure is shown now on the right-hand side. As you can see
there, there is a little tree structure there, just like we
have for the classes.
Q. And how about methods and fields? Are they shown?
A. Sorry. In the channels package, no, methods and fields
are not shown. There would be a lot of them.
Q. Thinking back to your work in designing this package, did
it have to have this particular structure?
A. No. It could have had many alternative structures. As we
worked on this design, many different ideas were suggested and
evaluated.
What we wound up was something that we thought was
coherent, would be easy to use and attractive to developers,
but it could have ended up in many different ways and been just
as good.
Q. How many packages, API packages, are there in Java SE?
A. In Java 5 there were 166 API packages.
Q. And how about in the latest release of Java SE?
A. In the latest release, Java 7, which we shipped just last
year, there are 209 packages.
Q. I'd like to show you a poster.
THE COURT: Do this. You can take it over. My law
clerk may not be able to see, but you can put it right there
597
where the jury is going to have to walk in and out.
MR. JACOBS: Thank you, your Honor.
THE COURT: And you can move the easel over
temporarily.
MR. JACOBS: Okay.
THE COURT: And most of the jury will be able to see
fine, or at least better than if you leave it there.
(Demonstrative displayed.)
THE COURT: The witness won't be able to see it, but
maybe he knows it by heart or something.
All right. Can all of you on the jury see that?
It's tiny, I know. All right. So do your best.
Go ahead, Mr. Jacobs.
BY MR. JACOBS:
Q. Dr. Reinhold, what is this poster?
A. So this poster is a visual depiction using the visual
notation that we have seen on the slides thus far of about half
of the Java SE 5 APIs.
Q. Who uses this poster?
A. Developers use this poster.
Q. To do -- to understand what?
A. Well, it's a handy reference to the high level structure
of the API set.
Q. Was it created for this litigation?
A. No, it was not created for this litigation. This was
598
something that was produced by Sun around the time that Java 5
was released and you could buy it, you know, on Amazon and
other places like that.
MR. JACOBS: Your Honor, I offer Exhibit 1028 into
evidence. And we will figure out how to get it in a form for
the record.
MR. PURCELL: No objection.
THE COURT: 1028 received.
(Trial Exhibit 1028 received in evidence)
BY MR. JACOBS:
Q. Does this poster include all of the packages for Java
Standard Edition 5, all of the API packages?
A. No. As I said, it's only about half. I think these are
about 85 of the 166.
Q. Does it include all of the 37 packages that you understand
are at issue in this dispute?
A. No, it's missing three. So there are 34 disputed packages
on this poster.
Q. Does this poster illustrate the methods and the fields
that are part of the API packages?
A. No.
Q. Why not?
A. Well, if it did, either the type would be really, really
small our the poster would be gargantuan.
Q. Does this poster show all the different structural
599
relationships for the classes and interfaces even of the
packages that it lists?
A. No.
Q. Can you give us an example of what this poster is showing?
MR. JACOBS: May the witness stand down?
THE COURT: Yes. Let's hand to the witness the 1942
pointer stick that in 13 years has not failed me yet.
THE WITNESS: Reliable technology.
THE COURT: You may step down and be a professor.
THE WITNESS: Do you have a microphone?
THE COURT: No. Just keep your voice very loud.
THE WITNESS: Okay.
(Witness steps down.)
A. So each one of these brown headings is a package. That's
the name of the package and most of the stuff inside it.
For example, the java.nio.channels Package we were
discussing was right here (indicating). You can see that
structure is exactly the structure -- well, maybe you can't
see. ...is exactly the structure that I was talking about on
the slide. There are a whole bunch of others.
There are also things that are missing. For example,
in the Java APIs there is something called Exception Classes.
These are classes used to report some kind of an error
condition. Those aren't shown here because for the most part
if you're looking at this just trying to understand, "Okay,
600
I've got a problem, how am I going to solve it?" you don't care
about all the Exception Classes. Eventually you might care
when you find an error condition could happen, but if you care
about that, then you can read the more detailed documentation.
BY MR. JACOBS:
Q. And can you focus for a minute on what this tells us about
relationships between classes?
A. Sure. So just in the diagram, as in the diagram I was
showing, there are tree structures on the left relating
classes, and then there are also structures on the right
showing interfaces, and dotted lines between the classes and
the interfaces showing the relationship between the classes and
the interface.
Now, moreover, as we were -- as I was saying earlier,
some classes are shown in a package even if they are defined in
some other package, and that's just for reference. So here in
the java.nio.channels Package, there is the Object Class. Then
there is a little blue icon here indicating that Object is
actually defined in the package with that particular blue icon.
That blue icon is for the java.lang Package and here is Object (indicating).
Similarly, in the Channels Package we have reference
to the Closable interface. As I said, that's not defined in
the Channels Package. That's defined over in java.io which is right above, so here is the definition of the Closable
601
interface (indicating).
Q. Now, again, does the poster shows us methods or fields?
A. It does not show us methods or fields.
Q. Did methods or fields have relationships themselves that
would extend to different interfaces or classes?
A. Methods and fields can be -- are related to other
interfaces or classes.
Q. And can you maybe return to your --
A. Yes.
(Witness resumes stand.)
Q. I think you have slides to illustrate this?
A. Yeah. If we can go to the next slide, please? That one.
(Document displayed)
A. Right. So let's go back for just a moment to the Car
Class that we started with. So car has Stop, Start and
blowHorn methods. Suppose it had another method called Paint.
Can you click that in, please?
So if you want to paint a car, you need to specify
what color you want. And so the Paint method has what we call
an input parameter and that input parameter is the color you
want the car to be painted.
Now, to talk about a color, we need some way to
represent that. And the way -- the most natural way to do that
is to create another class called Color. And maybe, maybe
members of the Color Class have fields that are, for example,
602
they could be red, green, blue and the mixture of those
describes the color that you want.
So in order to paint a car, you specify a member of
the Color Class as input, and that's the color that you'll get.
Now, methods can also return members of other
classes, but I haven't shown that here.
Q. Let's talk a little more about how the Java APIs relate to
the class libraries, to the code that you were discussing
earlier. And let's use the java.nio.channels Package again to
illustrate that.
So what do you want us to focus on on this
demonstrative -- on this slide No. 12?
A. So this is the slide we've seen before. It's the same
notations on the poster. It's a very high level view of what's
in the java.io.channels Package.
So to explain the relationship between an API and
its -- the corresponding part of the class library, let's zoom
in, if we can, on just one of these classes, the class called
Channels there.
So on the next slide I'm showing the relationship
between the Channels Class API and the zeros and ones for that
class in the class library. So on the right-hand side is the
Java class library. It has a bunch of compiled classes in it,
zeroes and ones, ready to be run by the Java Virtual Machine.
I've zoomed in on the channels class within that
603
library. On the left is the tree structure, very high level
API description. And as you can see, even though that
description is high level, it corresponds exactly to what's in
the class library zeroes and ones so that the channels Class
has its name. It gets that from the API. It has four methods
called newInputStream, newOutputStream and two variant methods called newChannel. And those methods take input parameters of
a given type.
Now, if we go not next slide?
The part on the right is the same. On the left what
I'm showing is the full API specification for the Channels
Class. So this is html, viewable in a web browser.
Q. Just pause there for a minute. Html is?
A. Hyper Text Markup Language. Text you can read on the web
with a browser, in a computer.
Okay. So the Channels API specification describe the
Channels Class. And as you can see on the upper left, it
declares, okay, this is the java.nio.channels Package. The
class name is Channels. There is some -- there are little
fragments of actual Java programming language, constructs near
the top telling you that the Channels Class is grouped under
java.lang.Object.
There is some English prose describing generally what
this class is about. And if you read it it says, "Utility
methods for channels and streams."
604
"This class defines static methods that
support the interoperation of the stream
classes of the java.io packages with the
channel classes of this package."
And "Since 1.4" just means it was first introduced in
Java 1.4.
Then below that we have a summary of all the methods
in this class. That summary is fairly terse, but it's a very
useful reference to developers who are trying to figure out,
well, which of these methods might I want to use.
Then once you figure that out, you can scroll down --
and we have shown that on the next slide -- and look at the
detailed API specification for one of these methods.
So here is some detail. On the upper left we have
the newInputStream method. There is some typewriter text
there. That's a fragment of Java programming language code.
It says:
"Public static InputStream newInputStream
19 (ReadableByteChannel, ch)."
So that's the fragment of actual Java programming
language code. What it means is we're declaring a method
called newInputStream. It takes as an input parameter a
ReadableByteChannel and it returns as an output parameter
InputStream.
There is also in English prose here, just as there
605
was at the top of the class, and that prose describes what this
method will do. It says:
"Constructs a stream that reads bytes from
the given channel."
Q. And then there is additional prose?
A. There's additional prose. I won't belabor this.
As you can see, there is a still a direct match-up
between what's in the API specification on the left. We have
the -- the programming language fragment describing
newInputStream. And that exactly corresponds to the compiled
method in the compiled class inside the class library.
And it's a similar story for NewInputStream and the
newChannel methods and other methods in this class.
Q. So what is the relationship between the structure of the
Java APIs to the structure of the java class libraries?
A. They are exactly the same.
Q. In what sense do you mean that?
A. Well, if we -- if we can go to the next slide, this shows
why they simply have to be exactly the same. The class library
and the API specification for the class library are created
from the exact same input, the exact same source file.
So in the bottom middle of this picture, that's an
actual fragment of the source code for the Channels Class.
THE WITNESS: Sorry about the small type, your Honor.
THE COURT: Can you blow that up? I can't read it.
606
MR. JACOBS: It's fixed, your Honor.
THE COURT: I want to make sure I understand it.
What do you mean, it's exactly what is in the source file?
THE WITNESS: If I could explain, sir.
So, when a Java developer creates an API in a class
library like this, you know, when I was working on this, I was
working on one file. That's the file in the bottom middle.
That's a Java source file. It's in the Java programming
language. That source file is processed in two different ways.
It's run through the Java Language Compiler. That's the gears
with the blue arrow on the right. The Java Language Compiler
compiles the parts of the API that describe the names and the
structure and everything, and it also compiles all of the
actual instructions within the methods into the zeros and ones
that the virtual machine can understand. And those zeros and
ones wind up in the class library, along with all the other
classes.
Now, we also run that source filed through another
tool called the Java Documentation Extractor or JavaDoc for
short. That tool processes this file. It pulls out the
structure, the names. It ignores the actual instructions in
the methods. It also pulls out the English prose, which is in
comments in this file, and produces the web page that we have
been looking at already.
So in a very real sense this is software that
607
contains its own blueprint. All right. An API is a blueprint,
well, the blueprint is in the source file along with all of the
instructions that actually wind up in the class library.
THE COURT: So let me ask a question about that. You
see in the one on the left it says, "Utility methods for
channels and" -- is that "streams"?
THE WITNESS: Yes, sir.
THE COURT: Very small.
All right. So that wording, in exactly that form,
1are you saying we would find that somewhere in the middle
diagram?
THE WITNESS: Yes, sir. In fact, if you look -- you
can see on the diagram on the middle part, that typewriter
text, the very third line, I believe, says exactly, "Utility
methods for channels and streams."
THE COURT: I can't read it. It's so small. I'll
take your word for it. But that's what it says?
THE WITNESS: Yes, sir.
THE COURT: So everything on the -- you see up there
where it says, "Overview Package Class Use, Tree Depreciated
Index Help." You're saying all of that, every single word on
the left is going to be found somewhere in the middle?
THE WITNESS: No, sir.
THE COURT: Okay. Which part is there and which part
is not there?
608
THE WITNESS: So, the elements on the top of the page
to which you just referred, those are on every JavaDoc output
page. Those are just navigational elements that let you click
around and find different parts of the documentation because
there's a separate page for every class and interface.
In terms of the actual text, the words are copied
over, the API structure is copied over from the source file,
and all of the words describing each method or field are also
copied over.
THE COURT: Where does it start being copied over?
What's the first thing on the left that is copied over?
THE WITNESS: The first thing on the left that is
copied over would be the name. Java.nio.channels Package, and
that's right above the big words which say "Class Channels."
THE COURT: And then all the way down to the bottom,
including where those boxes -- what's in those boxes, that is
extracted from the middle?
THE WITNESS: Yes, sir.
THE COURT: How about the word "Method Summary," is
that part of the template?
THE WITNESS: No, sir. That's part of the template.
That's on every page.
THE COURT: How about that word "Since"? Is that
part of the template?
THE WITNESS: "Since" is part of the template. The
609
1.4 value came out of the source file.
THE COURT: Thank you. I understand.
MR. JACOBS: Actually, your Honor, would you like --
we have some copies, if it would be of assistance to the Court.
THE COURT: Well, this is not part of the -- if
counsel is okay with giving it to me, I'm fine with you letting
me have a set.
But what do you say? Is that all right?
MR. PURCELL: No objection.
THE COURT: I'm sure counsel is going to have a
similar set and we'll do the same with this witness or a
different one.
(Whereupon, document was tendered
to the Court.)
THE COURT: All right. Thank you.
BY MR. JACOBS:
Q. I would actually like to step through that one more time
so that we're precise.
To summarize your testimony, there are three sources
of information in the documentation. There is template
information such as "Method Summary" --
MR. PURCELL: Objection, leading, your Honor.
THE COURT: Well, is this meant to be a summary of
what we just went over?
MR. JACOBS: It is, your Honor.
610
THE COURT: Overruled. Go ahead.
BY MR. JACOBS:
Q. There is template information such as "Method Summary"
that is inserted in the paper by the Java Documentation
Extractor, right?
A. Correct.
Q. And then there is some information on the upper left-hand
corner which comes from developer written comments in the
source file?
A. Correct.
Q. And there's some information that comes from developer
written code in the source file, correct?
A. Yes.
Q. Okay. So can we just -- let's just go through that
step-by-step with the material in the upper left-hand corner.
A. Okay. So you want me to look at each element and say
where it came from?
Q. Until it gets tedious. So, yes.
A. All right. Oh, zoom. Thank you.
Okay. So starting at the top, everything down to the
first horizontal gray line, that is part of the template.
Although the specific links -- you know, you see links there,
"prev class," that's for previous class. "Next class," that's
for next class. If you click on those, you will go to other
classes in the same package. So the text for those things is
611
the same on every page, but where that link will take you is
different for every page and is actually determined from the
source file. So below that first horizontal line we have in
smaller type the java.nio.channels Package name. And then
below that in quite large type "Class Channels." This is
telling you this is a class. Its name is Channels. It's in
the java.nio.channels Package.
Then next below that, in the typewriter font --
essentially whenever you see typewriter font, that is a
fragment of Java programming language code that has been copied
literally from the source file. So the typewriter font is
saying java.lang.Object -- sorry, I misspoke. Java.lang.Object
doesn't occur in the source file, but most everything else
does.
So java.io.channels.channels, this class here, is
grouped under java.lang.Object. Now, in this particular class,
that's not very interesting, but if they were looking at some
other class, there could be a whole nother tree here. Just
like the other trees we've been looking at that show you all of
the intermediate classes between java.lang.Object and the class
in question.
Okay. Now, after the next horizontal line, the
second horizontal line going down on the page, we see words in
typewriter font saying "public final class Channels" "extends
Object."
612
So "public final class Channels," those words were
copied from the source file.
Q. And when you say "copied from the source file," which
aspect of the source file are you referring to?
A. They are copied from the programming language constructs
in the source file, not from the English prose.
Then "extends Object," in that particular case that's
inserted by the tool just as a handy reminder that it extends
object. You won't find that in the source file. It could have
been in the source file, but it doesn't really serve any
purpose.
Then we have in the Roman font the paragraph "Utility
methods for channels and streams."
And then following that another -- another bit of
English prose telling you that, "This class defines statistic
methods that support the interoperation," and so on and so
forth. I've already read that through.
So the English prose is all copied from what we call
a documentation comment in the source file.
So in pretty much every programming language a
developer can write comments which can describe what's going
on.
In the Java programming language you can write two
kinds of comments. You can write a regular comment that's just
a reminder for yourself or somebody else who is going to be
613
reading the source code later about what's going on. You can
also write a special kind of comment called a documentation
comment, and that documentation comment, that is what is copied
by the java.tool into the sort of a web page. You can even
have formatting and formulas and tables in a documentation
comment.
So moving down we have the word "Since." That's
inserted by the tool. The value "1.4" comes from the inside of
the top most documentation comment for this class. That's just
saying it was introduced in the 1.4 release.
Q. And "Method Summary" comes from the Java Documentation
Extractor?
A. Right. So this table and its title comes from the
extractor tool. The content of each cell comes from -- comes
from the corresponding word part of the source file that
describes the method and what it does.
So just to take the very first one, that's the
newChannel method, which we saw before.
Just keep highlighting to the right, please.
It takes an InputStream. There is English -- the
first sentence of the English prose from its documentation
column that's copied, it says, "Constructs a channel that reads
bytes from the given stream."
And then in the left-hand cell that's highlighted, we
see the word "ReadableByteChannel." "ReadableByteChannel" that
614
was copied from the source code part, the language code part of
the source file. And the word "static" was also copied. That
word "static" occurs also in the source file.
And it's a similar story for the rest.
THE COURT: I'm back on this one. It has three
boxes. I was with you until we got to "static
ReadableByteChannel" and I don't see that in the middle
diagram. So I'm surely just missing it. Where would that be?
THE WITNESS: So that middle source code image was
highly compressed. Much of the source file was omitted because
otherwise it would be even more unreadable than it already is.
If we can go back to that, maybe I can find it; but I
don't remember right now, sir, whether that particular method
declaration made it into that highly summarized fragment.
THE COURT: So this is something gemmed up just for
the lawsuit or is this a real thing?
THE WITNESS: This is a real thing. This is the
actual documentation for this class. And I could show you
the -- the actual whole source file, if you wanted to see it.
MR. JACOBS: We have that, your Honor, if you would
like. We can set it up at a break.
THE COURT: I think at some point it ought to be put
in evidence. I realize this is for illustrative purposes and
may be abbreviated.
All right. Go ahead.
615
BY MR. JACOBS:
Q. I would like to ask you about some of the other API
packages that are in issue in this case. This is a list of the
37 packages that Oracle identified in the lawsuit. Can you
talk about what some of these packages do?
A. Sure. So earlier I mentioned the example of an API for
creating secure internet connections. It's to pass information
securely over the internet. That would be found over in the
right-hand column the package called javax.net.ssl. That's an
abbreviation for the secure socket layer, which is a technical
standard.
Another examples in here. Another one that might be
interesting is the one called java.sql. SQL is the structured
query language for relational databases. SQL is a package,
provides an API so that a Java developer can write code that
can pull information out of a relational data base and, also,
update information in a relational data base. And this is a
value to Java developers because relational databases is where
you find a lot of data, and it's also valuable because it works
with a wide variety of relational databases.
THE COURT: What is a relational data base?
THE WITNESS: A relational data base is a data base
organized in tables. Basically, you can think of it as a data
base of spreadsheets.
616
BY MR. JACOBS:
Q. If you run these packages through that JavaDoc creator, it
creates documentation for these packages. How many pages does
that take?
A. So if you ran the source files for all of these packages
through the tool and printed out all of the pages, I believe
the number you would get is about 11,000.
THE COURT: That's for these 37 or for all of them?
THE WITNESS: That's for these 37, sir.
BY MR. JACOBS:
Q. And to illustrate what that's like, do you know how many
boxes that might fill?
A. I reviewed a printed form of this. It fits three entire
banker's boxes and about, I don't know, a quarter or a third of
a fourth box.
Q. I would like you to take a look at Exhibit 610, please.
(Whereupon, document was tendered
to the witness.)
Q. And did you take a look at this before when you testified
today?
A. Yes, sir, I did.
Q. What is in Exhibit 610?
A. Exhibit 610 is a DVD archive of files which contain the
source code for JDK 5, which is the implementation of Java 5.
MR. JACOBS: I offer into evidence.
617
THE COURT: Any objection?
MR. VAN NEST: No objection.
THE COURT: All right. That's received. But it says
610.2 on the screen. So is it 610 or 610.2?
MR. JACOBS: This is 610, your Honor.
THE COURT: 6.10 admitted into evidence.
(Trial Exhibit 610 received
in evidence)
THE COURT: Whatever is on the screen is not the
right one. Don't show that to the jury yet.
(Discussion held off the record
amongst counsel.)
MR. JACOBS: I'm sorry. I think we got mixed up,
your Honor. 610.2 is the documentation.
THE COURT: 610 is what's in evidence.
MR. JACOBS: We'll check this at the break and make
sure we have got the right numbering your Honor.
Withdrawn for the moment.
THE COURT: What's withdrawn?
MR. JACOBS: 610.
THE COURT: Well, it's already --
MR. PURCELL: We don't object to them withdrawing it.
THE COURT: 610 is no longer in evidence.
(Trial Exhibit 510 withdrawn from evidence)
THE COURT: We'll get it straightened out and not
618
take up the jury's time on this.
MR. JACOBS: Exactly.
THE COURT: Please go ahead.
BY MR. JACOBS:
Q. Let's talk about the process for designing these APIs.
What kind of particular detailed organization and
structure is required in order for Java API to interact with
the computer or operating system?
MR. PURCELL: Objection, leading.
THE COURT: That's not -- it's a "what" question.
That's not a leading question.
Overruled, please answer.
A. So very little organization or structure is required for
the virtual machine and the computer running it to understand
code that be written.
In the Java Platform APIs, for example, we could have
put all of the classes into one giant package. We could have
given classes packages, interfaces, methods, fields. We could
have given them completely random names and they would still
run just fine on the computer. They would be really hard to
use from the developer's, the software developer's standpoint,
but in a certain sense the computer doesn't care. They are
just names.
Q. So what are -- as you do API design in your work at Oracle
or before that at Sun, what are your main goals?
619
A. So there are many considerations for the API design
process. One of the most important ones and one of the big
values of the Java Platform is that APIs should be easy to
learn and easy to use; that the Java APIs are well known for
having that property, and that's something that we work hard to
preserve.
Now, there are other considerations as well.
Q. What are some of those?
A. Well, for example, you don't want to design an API that
inherently requires an inefficient implementation. You know,
we have had examples of this in the past where that kind of
mistake was made and, for example, every time you invoke a
method, it goes off and creates a new member of some other
class, just to give you a very simple answer. And if you do
that hundreds of thousands of times in a second, it can slow
down your program, when all you really wanted was a simple
answer that didn't require creating a new object. So
performance is important.
Another aspect is portability. The entire -- the
Java theme of write once, run anywhere is all about allowing
developers to write an application once that can run across a
wide variety of actual computers and operating systems without
change.
So, for example, we wouldn't want to define an API
for doing graphical displays on a screen that only works on the
620
Windows operating system or only works on the Linux operating
system. We defined an API that hides those details. So from
the developer's point of view, you're writing to the Java API
for graphical user interfaces and the library takes care of
making the right things happen on top of different operating
systems.
Q. If you are launching an API development process, how do
you begin?
A. So that generally begins with, you know, a kind of
abstract high level exercise to figure out, well, what are the
general problems we're trying to solve? What are the
constraints of the technical design space that limit us?
And a very useful tool in that process is to collect
what we call use cases. So one way to do that is you actually
sit down with other software developers and ask them, "So, if I
were going to design an API for, say, data structures for a
spreadsheet, give me some examples, just sketch out here what
sorts of things would you -- problems would you want to be able
to solve with that API?" And in creating the use case, the
developer you're talking to might actually give you a code
fragment. They haven't even seen an API yet, but by showing
you code that they might like to write, they are giving you an
idea of exactly the sort of problem they want to solve.
Once you have a set of use cases and some general
requirements, then you sit down and start to think about, well,
621
what are the core classes and interfaces and methods I would
want in the API? And it's important fairly quickly to get to a
high level summary of that so that you can understand, you
know, what a possible structure may be and so that you can show
it to other people and get feedback on it.
And when you do that, you actually -- I mean, what I
do, what every Java API developer I know does, is you start
writing in fragments of actual Java programming language code.
You would sketch out in a file -- maybe it's just an email.
It's not an actual source file. You sketch out in a file,
well, there is going to be this class called Channels and it's
going to have a NewInputStream method and maybe some other
method in it, and sketch out a few other classes, and you send
that around to get comments from your colleagues, other people
you're working with.
As time goes on, as you get feedback, you revise that
design. It starts to get a little bit longer because it's
getting more real. Maybe you start to insert some of the
English prose. It's really sketchy right now, but you started
to do that.
And then another thing to get to, not too quickly,
but as quickly as you can, is to write actual instructions in
the method, write actual code into those so that you can
compiled this file, which is now a Java source file. You can
compile it and share that compiled version of this class with
622
other developers to get their feedback.
Some developers are really good at looking at just a
design and saying, "Oh, well, yea, I could use that," or, "No,
that doesn't solve my use case." Other developers really like
to have code that they can run and write their own code to use
directly to see how it works. So it's important to have that.
Another reason that working on the implementation at
the same time is important is that when you're designing an
API, working on the implementation at the same time often
identifies bugs in the API design. You might notice, for
example, that the point I said earlier about an API
requiring -- sort of requiring bad performance. You might
write some code, do a few tests and see, Well, no, I don't
actually need to allocate an object every time. Let me change
the API to work in a different way so that bad performance
isn't required.
Q. How long does it take you to design a substantial Java API
package?
A. So to continue with the java.io Package example, that was
an effort that took almost exactly two years. I was probably
working on it around half time during that two-year period.
THE COURT: Just you or did you have helpers?
THE WITNESS: I had helpers. I had a couple of other
engineers on the team helping me with the design and the
implementation, and I also had a group of experts who were
623
advising on the actual design.
BY MR. JACOBS:
Q. So let's go right to that. Let's talk about how the
experts that advised on the design get involved. What is that
mechanism?
A. So that happens in the Java Community Process, or JCP for
short. That's a process that was originally set up by Sun and
is now continued by Oracle that allows a wide variety of
people, organizations and companies in the Java software
ecosystem to participate in the creation of new Java API
specifications and related technologies.
So the way that works is that the basic unit in the
JCP is a thing called a JSR, Java Specification Request. A
Java Specification Request is essentially a proposal. In that
proposal you sketch out the problem you're trying to solve,
maybe some really high level ideas of how you're going to start
solving it. You relate it to any existing APIs.
You know, an important in the JSR form asks is, well,
why is this needed? Is there an existing Java API that could
be used for this? Why should we burden the entire community
with yet another API? You need to have a good reason.
So in the case of the java.io APIs, I wrote up such a
JSR. I got review comments on it, both inside Sun and from
outside Sun. I submitted that to the Java Community Process.
There's a group in the Java Platform called the
624
Executive Committee that has representatives from -- had at
that time representatives from Sun, Oracle, IBM, HP, SAP and
some individuals as well. The Executive Committee's job is to
oversee the process, make sure that everything is running
smoothly. They don't actually make technical decisions.
But in the lifetime of the JSR, the first thing they
do is approve a JSR. Or, in very rare cases they disapprove
it.
Anyway, I submitted the JSR. It was approved. I
then formed what the JCP calls an expert group. So this is a
group, a small group of people with experience in the area from
Sun and also from other companies.
For example, there was a senior engineer from IBM
there. There was an engineer from BEA there. BEA, of course,
was later acquired by Oracle.
There were also some individuals. We had an
academic, a professor who is well-known in the Java community,
and another guy from -- from UC Berkeley. We also had an
independent consultant, who is an expert on his own in the
field of high-performance computer IO.
So I got an expert group together and we started
working. We worked throughout that two-year period.
Generally, for any particular area we were working
on, I would offer maybe a sketch of an initial design and ask
for feedback on that.
625
They would give me feedback. Sometimes the feedback
was, yeah, that looks good, but maybe use some other method
here. Sometimes the feedback was, I don't understand what
you're trying to do with that. Why don't you try to do it this
way, with these three classes instead.
And my job as the specification lead was to, in a
sense, absorb all of that, understand it, and distill it down
to what became the actual situation.
So this took place over three years. I think we
exchanged around 1700 e-mails during that. We worked almost
exclusively in e-mail.
And the specification went through over 30 separate
drafts. The first draft, obviously, was pretty sketchy. And
that evolved over time into what became the final API
specification for the java.io JSR.
Q. Is there a general understanding among the expert groups
that you've been involved with that the contributions to the
API, the kind of inflow of information -- what kind of
understanding do people have about whether that work should be
original or can be copied from somebody's API?
A. Oh, it's required to be original.
Q. What do you mean by that? What do you mean by "original"?
A. So the -- the JCP has a document called the JSPA, the Java
Specification Participation Agreement. That's something that
every member of the JSPA -- sorry, every member of the JCP has
626
to agree to this.
And that document, it's this big legal thing, but,
you know, it basically says -- well, it says, among other
things, that if you contribute IP, either, you know, some code
sketches, some prose, whatever, if you contribute IP into this
expert group, then you're granting all the necessary rights to
that IP to the specification lead.
Therefore, if you're contributing IP in, you better
have the rights to that IP to start with. If you got it from
somewhere else, then you're violating someone else's
intellectual property.
Q. Now, was NIO unique in the fact that there was an expert
group and participation by others in its development?
A. No.
Q. Has that happened in other cases?
A. Every JSR in the Java Community Process has experts from
companies other than Sun or Oracle.
Q. Now, you've been working in this field of API design for
how many years?
A. Sixteen.
Q. Do you consider your work in API design to be creative?
A. Absolutely.
Q. In what way?
A. In anything except the most trivial API design, there are
so many choices to be made I wouldn't know how to start
627
counting them.
You need to -- you need to choose names. Choosing
names is really important in an API. Sometimes a name is
suggested by the context in which it's going to be used. But
other times a name -- finding the right name for something
requires a lot of thought.
I'm reminded of what the old mystics used to say: If
you know the name of the thing, you have power over the thing.
And so it's really important in an API for it to be
easy to learn, to choose good names.
Good names can be really hard because if we think of
the space of names as real estate, many of the good names are
already taken, and you can't reuse them.
Especially the good short names. So if you're
designing an API, you want to take into careful consideration,
well, if I'm going to define a class, is this a class that many
developers are going to use, or -- and so I should really work
hard to find a great descriptive short name for it? Or is this
a class that is not going to be used that much, and so it's
okay if it has a longer and uglier name? So there are a lot of
choices to be made there.
But it's not just about the names. It's also about
the structure. You know, how should classes be organized under
other classes? How should interfaces be organized under other
interfaces? How should classes and interfaces relate? Where
628
should the methods be? What should the methods be named? What
kinds of inputs do the methods take? What kind of outputs do
the methods provide for the fields? How do with they relate?
Is the value in a field a color, or is it just a number, or is
it a string, or is it something else?
So there are many, many design choices to be made.
THE COURT: Can I ask a question before you leave
this subject.
This committee, do any of the -- if someone on the
outside of Sun wanted to propose an API or a new method to go
in an old API, did that ever happen?
THE WITNESS: Oh, yes. That happens all the time.
THE COURT: Give us an example of how that would come
down.
THE WITNESS: So there have been quite a few JSRs
that were not initiated by Sun, and now not initiated by
Oracle. I don't remember offhand what the statistics are, sir.
In the case of someone outside the company who wants
to propose just a small new thing, that would generally come in
through a process we have for collecting input from any
software developer as a -- a request for enhancement.
When a developer submits an idea like that, they
might actually include a little bit of code. And when they
submit that idea, there's -- there's a button I believe they
have to click on where they agree that they're contributing any
629
IP that might be in that idea, that code, whatever it is, so
that Sun or now Oracle can use it.
An additional way things can come in more recently is
through the OpenJDK community, where we have outside
contributors who are actually able to suggest, review, and
actually put the code in themselves, because they've
demonstrated they have the experience and knowledge and
judgment to do that in the right way.
THE COURT: Thank you. Go ahead.
BY MR. JACOBS:
Q. Could you give an example of a package in the Java API
that has a different -- that has a different version of it out
there with a different structure?
A. So pretty much any Java API package you could look at and
find something out in the world that's sort of like it. But --
excuse me -- a good example is a package called
java.util.logging. L-o-g-g-i-n-g.
Logging is a facility that is often used in programs
that run for a very long time. Like maybe on a server,
computer, something that's processing. Bank transaction is --
hopefully, it's going to run without crashing for at least a
day during the banking day. During that time, many different
things could happen. If something goes wrong, you want to be
able to diagnose what went wrong with it.
So in a long-running program, it's useful to create a
630
log of its activities. In a log for a banking application, you
might record each transaction, just in text form. What's going
on with this transaction? Is it completed yet? Whose account
is it for? And so forth. So if something does go wrong, you
can go back and look at that log.
Anyway the java.util.logging API package is a simple
facility for logging messages. Around the time it was
introduced, there was a competing package called Log4J. This
was created by developers outside of Sun.
There's actually, to this day, a little bit of
tension in the community because the people who like Log4J,
they really hate java.util.logging. And the people who like
java.util.logging don't much like Log4J.
But if you look at them from a functional
perspective, they solve exactly the same kinds of problems.
But, they are very different APIs. They have different class
names, different method names, different interfaces, and
different relationships.
Q. Has the number of Java APIs changed over time?
A. The number of Java APIs has grown dramatically over time.
Q. How many API packages were in the first release of Java,
in 1996?
A. In 1996, Java 1.0 had seven API packages.
Q. And remind us how many there are in SE 5 and in Java 7.
A. Java SE 5 had 166, and Java 7 has 209.
631
Q. Did Sun or Oracle have to create this many APIs over time?
A. No.
Q. So why were they created?
A. They were created in order to -- to encourage the adoption
of the Java platform by adding more and more facilities to make
it an attractive platform for developers to use.
Q. Are there other software platforms that have taken a
different approach?
A. Sure.
So, for example, there's the C programming language.
It is almost always provided with something called the C
Standard Library. C is very old language. It's been around
since the '60s.
And the C Standard Library is really very simple and
primitive. It lets you manipulate strings. It lets you do
simple IO. It has facilities for basic threading, computation.
Uhm, a variety of numeric things in it. Some string formatting
stuff.
But that's it. There aren't even basic data
structures in the C Standard Library. It's very bare bones.
Q. Are there other platforms that have extensive sets of
libraries?
A. Sure. One example would be Python. The Python
programming language comes with a very large, extensive
collection of libraries. In that sense, it's much the same as
632
the Java platform.
Q. In what sense is it the same?
A. In that its set of libraries, its -- and Python also
organizes these in classes and related modules. That set of
libraries is extremely large. It covers a lot of ground.
Maybe not exactly as much ground as the Java libraries do, but
it's still quite significant.
Q. Are the APIs in Python the same as the APIs in Java?
A. No.
Q. In what way are they different?
A. Well, Python is a significantly different programming
language than Java. So you might find some -- some things that
appear to be related here and there, but, generally speaking,
you won't find the same APIs.
Q. How do you decide what to add when you're evaluating, as
the chief Java architect, whether to invest in a new API?
A. Well, that's a -- that has many, many considerations. One
is, do we think it's actually something that many Java
developers will use?
If somebody were, for example, to submit a JSR -- and
this has happened plenty of times -- for something that's
highly specialized, that JSR and the library and the
specification that result from it might be useful to a couple
of hundred thousand Java developers. But that -- that's not
sufficient justification to put it in the Java platform that
633
everybody will have.
Something has to be commonly used. It has to have a
high-quality design, a high-quality implementation.
Q. Are you ever concerned about making a particular API
package too big?
A. Oh, yes.
Q. What would happen if you did that?
A. If an API package were too big, then it would be hard to
learn and hard to use.
Humans aren't good at looking at very long lists of
unstructured information. We could have put all of the NIO --
all of the new IO APIs into one package. But within that
package we would have had to have a lot of prose explaining,
well, these classes over here that are kind of for this
particular set of functions, and these over here for that other
set, but they all would have been listed in order.
So humans aren't good at long lists of things.
Humans are really good at hierarchal knowledge structures. And
that's why we organize packages in a tree-like structure, so
that you can start -- in an IO case, you can start with the
java.nio package, and that has the basic classes that are
common to all of the new IO APIs. And its prose includes an
overview of the other packages so you know where to go if you
are looking for other things. And then each of the other
packages has its own description, has its own content.
634
Q. The jury has heard a lot about write once, run anywhere.
How do the APIs and class libraries you've been
involved in relate to that concept?
A. So earlier I used the example of the class libraries
hiding the details of different graphical Windowing systems.
That's one good example.
We always try to design APIs that aren't specific to
any particular operating system. And that's one of the key
requirements for write once, run anywhere.
Q. What do you do about maintaining the consistency of the
APIs?
A. I'm not sure in what sense do you mean --
Q. How do the APIs' specifications relate to maintaining
write once, run anywhere?
A. Well, as I said, the APIs need to be designed in a way
that is independent of the details of any particular operating
system.
Q. In your work at Sun, then Oracle, were you involved in
efforts to maintain the compatibility across different
implementations of the class libraries?
A. Yes.
Q. Can you describe that.
A. So compatibility has a couple of different aspects. One
is the compatibility of all the different implementations of a
particular version of the Java platform.
635
For example, Java 7, you can get implementations of
that from Oracle. You can get other implementations from IBM
or from Red Hat. Several other vendors.
Compatibility across those is another one of the
foundations of write once, run anywhere. If a developer writes
an application and it runs fine on Oracle's Java implementation
but doesn't work on IBM's, then that's a bug. You know, it
might actually be Oracle's bug and not IBM's bug. But at the
end of the day we figure it out.
So compatibility across all these different
implementations is something in which Sun, now Oracle,
continues to invest a significant amount of effort.
When a JSR is done in the Java Community Process, you
have to produce the API specification, you have to produce the
implementation that is the class library form.
And you also have to produce a third thing, which we
call the TCK. That stands for Technology Compatibility Kit.
And it's a potentially very large suite of test programs that
run against the implementation to validate that it's behaving
correctly.
For Java SE itself, for example, we have a TCK, and
it contains, I think, at last count a couple of hundred
thousand separate tests.
Oracle's implementation has to pass those tests.
IBM's implementation has to pass those tests. Every
636
implementation, in order to be compatible, must pass those
tests.
Q. When you were at Sun, were you involved in any legal
efforts to assure that compatibility was maintained across Java
platforms?
A. Across different implementations of the same version?
Q. Yes.
A. I was peripherally involved in the Microsoft lawsuit in
the late '90s.
Q. What was your involvement --
MR. PURCELL: Objection, Your Honor. Motion in
limine.
THE COURT: Sustained.
We weren't going to get into that, were we?
MR. JACOBS: I think we are getting into the
anti-fragmentation aspects of it, Your Honor.
THE COURT: Is that allowed?
MR. PURCELL: A general discussion of fragmentation
is allowed, but dollar figures certainly were not.
THE COURT: All right. We'll stick to that
guideline.
BY MR. JACOBS:
Q. What was your involvement in the Microsoft dispute?
A. Thankfully, it never brought me to a courtroom.
At that time, I was fairly junior, but I did the
637
technical investigation which identified the specific ways in
which Microsoft had added some of their own functionality to
the Java Standard APIs, and they also had removed some of the
required functionality from the standard APIs.
Q. Is there a terminology in the Java world for what you
label something when you add or subtract?
A. It's an addition or it's a subtraction.
Q. How did they create an incompatible version of Java? How
did Microsoft create incompatible version?
A. So they wrote their own implementation. They left some
things out. And they added some extra stuff in.
Q. And what is leaving something out called in the world of
Java fragmentation?
A. A bug.
THE COURT: A what?
THE WITNESS: A bug.
BY MR. JACOBS:
Q. Are you familiar with the term subsetting?
A. I am familiar with the term subsetting.
Q. What does subsetting mean?
A. So subsetting is when you have an API specification that
says you need X, Y and Z, and you build an implementation of
that API specification that only has X and Y.
Q. And are you familiar with the term supersetting?
A. Yes.
638
Q. What is supersetting?
A. Supersetting is when you have an API specification for X,
Y and Z, and you build an implementation which has XYZ and W
because you thought it was a good idea.
Q. Did Microsoft -- in your analysis did you establish
whether Microsoft had subsetted?
A. Yes.
Q. And did you establish whether Microsoft had supersetted?
A. Yes.
Q. And were you involved in that effort because of a
litigation between Sun and Microsoft?
A. The technical investigation I did was prior to that
litigation.
Q. I'd like to talk a little bit about the difference between
the Java programming language and the Java class libraries and
APIs.
What is your role in identifying the boundaries
between the language and the APIs in Java? What do you do in
your job?
A. I would say my role these days is to ensure that boundary
remains as clear as it is.
Q. And what is that boundary?
A. So the Java programming language, it's a programming
language, it's a way of expressing instructions for a computer.
It includes all of the concepts that we've been discussing.
639
But that's it.
Whereas, the Java APIs are the blueprint for the
class libraries. They are built using the programming
language. But they are a distinct thing from it.
THE COURT: May I ask a question on that?
Earlier you gave an example of, I believe it was the
C or C+ language.
THE WITNESS: Yes, sir.
THE COURT: And if we -- so I want to get you to
compare that language to the Java programming language,
ignoring all of the APIs.
THE WITNESS: Certainly, Your Honor.
THE COURT: All right. Are they roughly comparable,
or is the Java programming language like rockets compared to a
two-wing airplane?
So what's the comparison between the C+ Basic
language and the basic Java programming language?
THE WITNESS: Your Honor, I would say that if Java is
a rocket then the C language -- it's not as bad as a two-winged
airplane, but it's probably like a DC-3.
The C language does not include, for example, the
concepts of classes or interfaces we've been discussing here.
It does have things that are like methods and things that are
like fields; although, they are named differently.
THE COURT: All right. Continue on.
640
Now, we're going to break in -- what time is it?
It's -- we've got about five minutes, right. Okay.
BY MR. JACOBS:
Q. If one wants to go look and find out what the Java
language specification is, where does one go?
A. There's a book called the Java Language Specification.
Q. Would this be it (indicating)?
A. That would be the third edition, yes.
MR. JACOBS: Your Honor, we would offer trial Exhibit
984 in evidence.
MR. PURCELL: No objection.
THE COURT: 984 is received in evidence.
(Trial Exhibit 984 received in evidence.)
MR. JACOBS: May I approach, Your Honor?
BY MR. JACOBS:
Q. Can you explain to us the -- at a very high level what is
in the Java Language Specification, and in particular how the
boundary that you were describing earlier is reflected in it?
A. So the Java Language Specification, it's a highly
technical document. It describes the language, basically,
building from the -- from the bottom up.
That's reflected in the table of contents, which
starts at the very beginning, just describing general concepts
about the grammar of the language.
And it then moves upward, talks about the different
641
elements of the grammar, the rules for constructing programs in
the Java programming language.
Then it starts talking about types and values and
variables. You know we haven't even got to methods yet.
And there's another chapter talking about how to
convert different values. How do you convert an integer number
to a floating point number, for example.
And then there's an entire chapter on names and what
they mean, how they are interpreted in the language.
Then we finally get in Chapter 7 to packages. That
describes that concept. Then we have Chapter 8 on classes,
which, as you mentioned, is pretty extensive. A shorter
chapter on interfaces.
And then some sort of cleanup chapters for
miscellaneous chapters like arrays and exceptions.
Well, another really important one would be blocks
and statements. Those are the actual instructions.
Q. So if one wanted to know from the Java Language
Specification, Third Edition, what is in and out of the
language, how do you tell that?
A. Well, so, the grammar of the language is pretty precisely
defined in here. Anything that is not admitted -- well, in
anything that is not that grammar or the description of what
programs constructed according to that grammar mean, those
things are not part of the language.
642
Q. Now, if you were to study this specification to try to
determine what, if any, of the 37 API packages that are at
issue in this case are included in the Java language, how would
you go about doing that?
A. Well, what I would do is I would consult the table of
contents. Then I might consult the index.
Q. And let's take java. -- the one you worked on, java.nio.
A. Java.nio?
Q. Uh-huh.
A. That's not in this book.
Q. Is it anywhere in the book? Is it in any coding examples?
A. It might be an example. I honestly don't know. I would
have to read through them all to find out.
I tend to doubt it. I think most of the examples are
written using the simpler, more common APIs.
Q. So let's --
THE COURT: It's 1:00 o'clock now, so I'll let you
take half a minute, if you want to. But it's now 1:00 o'clock
and time to break.
MR. JACOBS: Good time for a break, Your Honor.
THE COURT: Remember the admonition. We'll see you
back here at the normal time tomorrow. Thank you.
THE CLERK: All rise.
(Jury out at 1:00 p.m.)
THE COURT: Be seated.
643
Mr. Reinhold, you can step down. We will pick it up
there. You need to be here at 7:30.
Everyone else, please be seated.
Here's the time so far. Plaintiff has used 318
minutes, by my count. Defendant has used 107.
Now, the plaintiff needs -- I don't know how many
more witnesses you've got, but you need to be mindful of your
overall time limits, and save some time for your
cross-examination.
MR. VAN NEST: Excuses me, Your Honor. Could I have
those numbers again?
THE COURT: This is what I have. If you have a
different number. 318 and 107.
MR. VAN NEST: And that's cumulative total?
THE COURT: Until right now.
MR. VAN NEST: All days. Thank you.
THE COURT: This is inception to date.
All right. Any issues for the Court?
MR. JACOBS: No, Your Honor.
THE COURT: How many more with Mr. Reinhold?
MR. JACOBS: Probably about 20, 25 minutes.
THE COURT: How long will the cross be?
MR. PURCELL: Unless the scope of the direct changes
substantially, probably not that long. A half hour. But we
will probably want to call him back in our case.
644
THE COURT: All right. I'll let you do that. Any --
any -- who else will be here tomorrow?
MR. JACOBS: Mr. Bloch will be up first, Your Honor.
And then Mr. Lindholm tomorrow?
(Plaintiff counsel confer off the record.)
MR. JACOBS: And Mr. Swetland.
THE COURT: Mr. Lindholm.
MR. JACOBS: And Mr. Swetland.
THE COURT: Mister who?
MR. JACOBS: Swetland. S-w-e-t-l-a-n-d.
THE COURT: All right. So no issues for me?
MR. VAN NEST: We're sorry to disappoint you, Your
Honor, but I don't think we have any this afternoon. We'll
keep working.
MR. PURCELL: We'll try to come up with some for
tomorrow morning.
THE COURT: Sure. My thanks to you. See you
tomorrow.
(At 1:02 p.m. the proceedings were adjourned until
Thursday, April 19, 2012, at 7:30 a.m.)
- - - - -
645
I N D E X
PLAINTIFF'S WITNESSES | PAGE | VOL. |
PAGE, LARRY |
(PREVIOUSLY SWORN)ADVERSE WITNESS | 464 | 3 |
Cross Examination Resumed by Mr. Boies | 464 | 3 |
Redirect Examination by Mr. Van Nest | 488 | 3 |
Recross Examination by Mr. Boise | 495 | 3 |
SCREVEN, EDWARD |
(SWORN) | 502 | 3 |
Direct Examination by Mr. Norton | 503 | 3 |
Cross Examination by Mr. Purcell | 533 | 3 |
Redirect Examination by Mr. Norton | 563 | 3 |
REINHOLD, MARK B. |
(SWORN) | 579 | 3 |
Direct Examination by Mr. Jacobs | 580 | 3 |
- - -
646
E X H I B I T S
TRIAL EXHIBITS | IDEN | VOL. | EVID | VOL. |
2, 7, 401 | | | 436 | 3 |
6 | | | 481 | 3 |
450, 451, 452, 453, 454, 455 | | | 577 | 3 |
460, 461, 462, 463, 464 | | | 578 | 3 |
475, 476 | | | 578 | 3 |
509, 510, 511 | | | 578 | 578 |
513, 518 | | | 579 | 3 |
520, 521 | | | 579 | 3 |
523, 524 | | | 579 | 3 |
526 | | | 579 | 3 |
595, 596, 597 | | | 579 | 3 |
598, 599 | | | 579 | 3 |
601, 602, 603 | | | 579 | 3 |
610 | | | 618 | 3 |
610 - Withdrawn | | | 618 | 3 |
659 | | | 579 | 3 |
984 | | | 641 | 3 |
1028 | | | 599 | 3 |
1041 | | | 434 | 3 |
2237 | | | 553 | 3 |
2347 | | | 525 | 3 |
- - -
647
CERTIFICATE OF REPORTERS
We, KATHERINE POWELL SULLIVAN and DEBRA L. PAS,
Official Reporters for the United States Court, Northern
District of California, hereby certify that the foregoing
proceedings in C 10-3561 WHA, Oracle America, Inc., vs. Google,
Inc., were reported by us, certified shorthand reporters, and
were thereafter transcribed under our direction into
typewriting; that the foregoing is a full, complete and true
record of said proceedings at the time of filing.
/s/ Katherine Powell Sullivan
Katherine Powell Sullivan, CSR #5812, RPR, CRR
15 U.S. Court Reporter
/s/ Debra L. Pas
Debra L. Pas, CSR #11916, RMR CRR
Wednesday, April 18, 2012