Oracle America, Inc. v. Google Inc.
Filing
1033
EXHIBITS re #935 Order on Administrative Motion to File Under Seal, #872 Declaration in Support, TO DECLARATION OF MEREDITH DEARBORN IN SUPPORT OF ORACLE AMERICA, INC.S OPPOSITION TO GOOGLES MOTION TO STRIKE PORTIONS OF DR. JAMES KEARLS EXPERT REPORT filed by Oracle America, Inc. (Related document(s) #935 , #872 ) (Holtzman, Steven) (Filed on 4/30/2012) Modified on 5/1/2012 (wsn, COURT STAFF).
EXHIBIT A
Highly Confidential - Attorneys' Eyes Only
1
UNITED STATES DISTRICT COURT
2
NORTHERN DISTRICT OF CALIFORNIA
3
SAN FRANCISCO DIVISION
4
5
_______________________
6
ORACLE AMERICA, INC.,
7
Plaintiff,
8
vs.
9
GOOGLE, INC.,
10
11
)
)
) No. CV 10-03561 WHA
Defendant.
)
)
_______________________)
12
13
14
HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY
15
16
17
Videotaped Deposition of BOB LEE,
18
taken at 110 Fifth Street, Suite 400,
19
San Francisco, California, commencing
20
at 9:35 a.m., Wednesday, August 3, 2011,
21
before Leslie Rockwood, RPR, CSR No. 3462.
22
23
24
25
PAGES 1 - 82
Page 1
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Q. When did you join Google?
A. 2004, October.
Q. And when did you join the Android team?
A. I don't remember the exact time. It was
pretty early on in the project. I think there were like
12 people on the project or something like that. It was
after the acquisition, obviously.
Q. You mentioned you were the core library lead.
What are the core libraries for Android?
A. So the core libraries are the lower level
libraries. Maybe it's easier to talk about what they're
not. They're not the Android framework libraries, which
are kind of like how you implement applications, and
they're not the UI libraries.
What they are are kind of like all the core
functionalities. There's the Java interoperability
libraries, and then there's other additional libraries
like the networking libraries and things like that.
Q. Mr. Lee, have you ever been deposed before?
A. No.
Q. You understand that you're under -- you've
taken an oath to tell the truth today?
A. I do.
Q. And you understand that although we're in
this informal setting of a conference room, your
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
switched to the core library team, for most of the time,
I was the core library team. So I led myself.
Q. So you were a -A. Up until -Q. -- team of one?
A. -- up until, yeah, about, probably I guess
around -- let me think here. Late 2008, early 2009, then
I started adding a few more people to the team.
Q. In that time in 2007, who worked on the core
libraries besides yourself?
A. There was -- so Dan Bornstein, who was the
Dalvik lead, and he actually was responsible for most of
them before I took them over. There was one other guy
that worked on it shortly before me. I actually forget
his name. He didn't work on them for very long. And we
also had an outside contractor named Noser that helped
out.
Q. What did Noser do for the Android core
libraries?
A. Oh, various things. Implemented various
parts of it, like, for example, we had to reimplement the
SSL libraries. We built them on top of OpenSSL. I
think, if I recall, it was mostly for performance, and
they did most of that.
They implemented a lot of tests to cover the
Page 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
testimony today is as if you were in a courtroom in front
of a judge and jury?
A. Correct.
Q. Is there any reason you can't testify to -competently to facts? Any health issues, medications,
intoxicants, anything of the like?
A. Nope.
Q. I'll ask you if you don't understand a
question that I ask, if you let me know, and I'll try to
rephrase it.
Can you do that?
A. I will.
Q. When you first joined the Android team, who
did you work for?
A. I think I reported to Steve Horowitz. He was
the director of the team at the time. I actually started
out working on the framework libraries.
Q. When did you start working on the core
libraries?
A. It was probably a couple months afterwards.
Q. What were your responsibilities -- I'm going
to start over.
When did you become core library head for
Android?
A. Well, from the beginning. Well, when I
Page 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
missing parts, and they wrote a lot of the documentation,
actually pretty much almost all of it.
Q. Besides the SSL libraries, what other -- what
other packages did Noser work on?
A. Oh, I don't really -- I don't really
remember. I mean, it was just various -- various
different ones. They were effectively part of the team.
Q. When you say Noser was effectively part of
the team, what do you mean?
A. Well, they -- I mean, they did similar work
to what I was doing, which is really dependent on what
needed to be done. For a large part of the time, I
actually had -- they had one person -- one or two people
on site that we worked closely with, and those people
were kind of -- they actually did a lot of the work, but
they also had a team back in Germany that did some of the
more real work.
Q. When you say that Noser had one or two people
on site, do you mean Google's Mountain View campus?
A. Correct.
Q. I'll ask you to take a look at what's
previously been marked as Exhibit 204.
A. Okay.
Q. Could you take a look at Exhibit 204 and tell
me what it is?
Page 7
Page 9
3 (Pages 6 - 9)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
There are several other ones, but I don't
know how much detail you want me to go into.
Q. Would you say that designing APIs is a
creative activity?
MR. PURCELL: Object to the form.
THE WITNESS: Yes, absolutely.
Q. BY MR. PETERS: When you are referring to
reimplementing them, are you referring to the work that
you did with Noser to implement core libraries according
to Java APIs?
A. I am.
Q. If I can ask you to turn to the second page
of your self-evaluation.
A. Yes.
Q. In the fourth paragraph there, you have a
description that begins: "Most recently I set my sights
on our class preloading code."
Do you see that?
A. Yes.
Q. All right. With your work on the class
preloading code, was it the case before your work that
the list of classes that would be preloaded by Android
would be manually managed?
A. Yes, that was the case.
Q. And you wrote that you added hooks to Dalvik
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
list of classes to preload and the order in which to
preload them based on data collected from running Dalvik
machine; is that right?
MR. PURCELL: Object to the form.
THE WITNESS: What was the question again?
Q. BY MR. PETERS: Yes. Your tool calculated
the list of classes to preload and the order in which to
preload them based on data collected from a running
Dalvik virtual machine; is that right?
MR. PURCELL: Same objection.
THE WITNESS: Yes.
Q. BY MR. PETERS: Now, skipping to the third
page of your self-evaluation, there's a section that
begins "JCP EC."
A. Yes.
Q. And you wrote that you represent Google on
the JCP executive committee as an alternate to Josh
Bloch.
When did you begin representing Google on the
JCP executive committee?
A. I don't recall the exact date. It was
probably around the end of 2005, if I had to guess.
Q. Are you on the JCP executive committee today?
A. No, I am not.
Q. When did you leave the executive committee?
Page 14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
so we can record class load and initialization times.
Can you describe generally what that work
involved?
A. Yes. So I mean, basically as you would
execute apps, it would performance profile class loading,
and it would like time both the loading of a class, which
just means really like loading an executable code. And
it would also independently measure the initialization
time of the class. So when you initialize a class, it
runs some kind of code.
And then it would -- so it would record that
information, and then I wrote another tool that would -I mean, this was quite a bit of information. It would
mine all of this information that was gathered from
running popular apps -- and there's dozens of apps -- and
it would mine that information and prioritize and figure
out which were the most important classes to preload and
have like hot and ready to go into memory. So classes
that were already loaded whenever an app started.
Q. So the ultimate output of your tool would be
a list of classes and -- that should be preloaded and the
order in which they should be preloaded?
A. Correct.
MR. PURCELL: Object to the form.
Q. BY MR. PETERS: And your tool calculated the
Page 16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
A.
Q.
A.
Q.
When I left Google.
That was towards the end of 2010?
The beginning.
The beginning.
What were your general responsibilities as a
member of the executive committee representing Google?
A. There weren't a lot. You would attend
meetings, and those meetings would be about how the Java
Community Process is run and various issues in the
community process.
Q. How often did you attend JCP executive
committee meetings?
A. I don't remember the exact frequency. It was
a couple times per year, was the in-person meetings, and
then they had conference calls a couple times per year.
I think it was two times per year that there were
meetings, and there was like one in Europe and one in the
U.S.
Q. Was it ordinarily you who attended those
meetings on behalf of Google or Josh Bloch or both of -A. It was both of us.
Q. Were you familiar with the dispute between
Sun and Apache that arose between 2005 and 2010?
A. I don't remember the exact date that it
started, but yes, I was very familiar with it.
Page 15
Page 17
5 (Pages 14 - 17)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Q. Did you consult the Java docs when doing your
work on the API implementations for Android?
A. Yes.
Q. Okay. And where did you obtain those Java
docs?
A. They're posted for free on Sun's website.
Q. Okay. So you consulted Sun's website for the
API specifications when doing the work for Google?
A. Yes.
Q. Who else did?
A. I'm not sure.
Q. Did the Noser team consult Sun's
specification?
MR. PURCELL: Object to the form.
THE WITNESS: I would -- I don't have any
specific knowledge of it, but I would assume so.
Q. BY MR. PETERS: Did you observe any copyright
notices on the specifications?
A. Yes.
Q. And what did the copyright notices on Sun's
API specifications say?
A. I didn't -- I don't recall.
Q. Did you consult with an attorney about
implementing Sun's Java APIs?
MR. PURCELL: You can answer that question
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
in -- to your previous question. I mean, you mentioned
intellectual property. So obviously the trademark is
intellectual property. I knew that -- yeah, I did
discuss getting that Java stamp of approval.
Q. BY MR. PETERS: So those were discussions
about not being able to call things Java, because they
had not passed the TCKs; is that right?
A. Correct. Yeah.
Q. What resources did Mr. Bornstein use in his
work on implementing the Java API specifications?
MR. PURCELL: Object to the form.
THE WITNESS: I'm not sure.
Q. BY MR. PETERS: Did Mr. Bornstein consult
Javadoc, to your knowledge?
MR. PURCELL: Object to the form.
THE WITNESS: I'm not sure.
Q. BY MR. PETERS: You had -- turn back to
Apache and Apache Harmony for a minute.
A. To what? I'm sorry.
Q. To Apache Harmony. Not any specific
document.
A. Oh, okay.
Q. But you had mentioned that Sun was putting on
a field of use -- trying to put on field of use
restrictions onto Apache that would prevent the use of
Page 66
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"yes" or "no".
THE WITNESS: No.
Q. BY MR. PETERS: Why not?
A. I didn't see a need to. I mean, it wasn't
copying the Java docs.
Q. Before the first commercial release of
Android in a mobile device, do you know if anyone at
Google consulted with an attorney regarding the Java API
implementations in Android?
A. I don't have knowledge of that.
Q. Do you know if anyone at Google investigated
Sun's patent portfolio before the first commercial
release of Android in a mobile device?
A. No.
Q. Did you have discussions on the Android team
about Sun's intellectual property rights?
A. No.
Q. Earlier today you mentioned that
Dan Bornstein had been working on the Java API
implementations before you joined up.
A. Correct.
Q. What resources did Mr. Bornstein do in his
work on the Java API implementations?
MR. PURCELL: Object to the form.
THE WITNESS: Actually, I do want to go back
Page 68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Harmony in a mobile device; is that right?
A. Uh-huh. Yes.
Q. But Google took Harmony to use in a mobile
device; isn't that right?
A. Yes. This other stuff came out quite a bit
after, though, to my knowledge.
Like, for example, Android used Harmony, and
then I don't really recall being exposed to the actual
issues with Harmony until sometime later.
Q. Android wasn't released as an -- as a mobile
device, a commercial product, until 2008; isn't that
right?
A. I don't remember the exact date. That sounds
about right.
Q. But -- so if I understand you correctly,
Google started using Harmony code before their dispute
between Apache and Sun -A. Oh, long before. Yeah.
Q. When did Google start using Harmony code?
A. I don't remember exactly. I can tell you it
was before, like, open JDK and all that stuff was even
announced.
Q. Was it, I guess, one of the things that Noser
did was to take Harmony code and adapt it for Android?
A. Yes.
Page 67
Page 69
18 (Pages 66 - 69)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
STATE OF CALIFORNIA
2
SS:
COUNTY OF MARIN
)
3
I, LESLIE ROCKWOOD, CSR No. 3462, do hereby
4
5
certify:
6
That the foregoing deposition testimony was
7
taken before me at the time and place therein set forth
8
and at which time the witness was administered the oath;
9
That testimony of the witness and all
10
objections made by counsel at the time of the examination
11
were recorded stenographically by me, and were thereafter
12
transcribed under my direction and supervision, and that
13
the foregoing pages contain a full, true and accurate
14
record of all proceedings and testimony to the best of my
15
skill and ability.
16
I further certify that I am neither counsel
17
for any party to said action, nor am I related to any
18
party to said action, nor am I in any way interested in
19
the outcome thereof.
20
21
IN WITNESS WHEREOF, I have subscribed my name
this 4th day of August, 2011.
22
/
23
24
25
,./I,-..
Ii
LESLIE ROCKWOOD, CSR. NO. 3462
Page 79
Veritext National Deposition & Litigation Services
866 299-5127
EXHIBIT D
Highly Confidential - Attorneys' Eyes Only
1
UNITED STATES DISTRICT COURT
2
NORTHERN DISTRICT OF CALIFORNIA
3
SAN FRANCISCO DIVISION
4
5
--------------------------
6
ORACLE AMERICA, INC.,
7
Plaintiff,
)
)
8
vs.
)
9
GOOGLE, INC.,
)
10
11
Defendant.
No. CV 10-03561 WHA
)
--------------------------
12
13
-- HIGHLY CONFIDENTIAL, ATTORNEYS' EYES ONLY--
14
15
Videotaped Personal Capacity deposition of
16
ANDREW E. RUBIN, taken at the law offices of
17
King & Spalding LLP, 333 Twin Dolphin Drive,
18
Suite 400, Redwood Shores, California,
19
commencing at 8:39 a.m., on Wednesday,
20
July 27, 2011, before Leslie Rockwood, RPR,
21
CSR No. 3462.
22
23
24
25
PAGES 1 - 296
Page 1
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
So I'm assuming Steve's using JVM in the
generic sense to refer to either the contemplated
partnership that we're negotiating with Sun or our
internal clean room implementation. I don't know which
he's referring to. It's hard for me to -- it's hard for
me to read into that.
Q. But is it your testimony as of March 23,
2006, you had a -- what you regarded as a viable fallback
strategy such that the Sun JVM was in fact not core to
your platform architecture and strategy?
MS. ANDERSON: Objection. Form.
THE WITNESS: I believed that I was
developing a viable fallback strategy in case we weren't
able to reach partnership conclusion with Sun.
Q. BY MR. JACOBS: And you believed that at the
time?
A. Yes.
(Exhibit PX314 was marked for
identification.)
Q. BY MR. JACOBS: I'd like you to take a look
at an email string between you and Greg Stein around
March 24, 2006?
A. Yes.
Q. So who was Greg Stein?
A. I don't know. I believe he's somebody that
1
Q. BY MR. JACOBS: And so he's asking you if you
2 can -- if you can give little information about your
3 perhaps to the other side and so that he can create a
4 channel of communication, correct?
5
MS. ANDERSON: Objection. Form.
6
THE WITNESS: Well, I think it's a little
7 deeper than that. Chris DiBona said I'm the right person
8 to talk to about our plans because I'm not sure Greg knew
9 what our plans were. These are two teams at Google.
10 Greg's not an engineer on the Android engineering team.
11 So I think he somehow was representing an opportunity to
12 talk to somebody, "them," in his sentence, and he needed
13 more information about what we were doing and he's coming
14 to me to get more information.
15
He was coming to me both to get approval to
16 talk to somebody that I don't know who they were and more
17 information about what I was doing and I responded with a
18 two-sentence response giving him no more information.
19
Q. BY MR. JACOBS: In which --
20
A. In my typical, you know, New York style.
21
Q. Okay. So you say "I don't see how you can
22 open Java without Sun since they owned the brand and I'd
23 be happy to talk."
24
So you're really saying you're pretty
25 skeptical about this other plan; right?
Page 146
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
reported to Chris DiBona in the Open Source product team.
Again, that's the team of evangelists that go off and
evangelize Open Source to the community.
Q. So he starts out "Andy, Chris DiBona said
you're the right person to talk to about our J2ME plans
with Sun. I've recently become aware of a similar effort
to create an Open Source J2ME. The problem that I have
right now is that I can't tell Google about that and I
can't tell them about -- and I can't tell them about our
effort. IOW."
Do you know what IOW is?
A. I have no idea.
Q. -- "IOW, without violating confidentiality
somewhere, there's no way for me to make the two parties
aware of each other's efforts. I've asked them if I can
at least mention a small amount to Google. Waiting on
that reply. Is there any hint or small amount of info
that I can give them so that we can open the door more?"
Do you see that?
A. Yep.
Q. So we get the problem. He's got information
on both sides that he can't share with the other about
some plans to Open Source J2ME, right?
MS. ANDERSON: Objection. Form.
THE WITNESS: Yes.
Page 148
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
A. Look, he didn't give me any information about
the them, the who, you know, and again, my view on these
things is there's all sorts of people at Google who want
to know what we're doing and have brilliant ideas and
you've seen, you know, some of those people with great
bravado, you know, challenging the strategy on email
strings.
Generally speaking, these aren't strategy
guys, these are engineers, individual contributors who
are full of innovative ideas but somehow need to be
harnessed in a way that's actually productive for the
company.
Q. When you say -- he says "They have a plan,
the ability to call it Java(tm) is simply a matter of
passing the J2ME TCK as I understand it."
Do you see that?
A. Yes.
Q. And when you write back "Ha, wish them luck.
Java.lang API's are copyrighted and Sun gets to say who
they license the TCK to and forces you to take the shared
part which tanks any clean room implementation."
Do you see that?
A. Yes, I do.
Q. So you were -- let's start with "Java.lang
API's are copyrighted."
Page 147
Page 149
38 (Pages 146 - 149)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
What did you mean by that?
A. So this is all information that I learned
while I was at Danger because I took license from Sun
while I was at Danger. So I had knowledge of their
practices around offering people licenses and the
constructs they used to make sure that they have an
ongoing future licensing revenue opportunity.
Q. And in particular, you understood that Sun
was relying on copyright protection for the API's,
correct?
A. One of -- one of Sun's arguments to me while
I was at Danger is that the -- they thought the Java
API's were copyrightable.
Q. And therefore?
MS. ANDERSON: Objection. Form.
THE WITNESS: There was no therefore.
Q. BY MR. JACOBS: Therefore you need today take
a license?
MS. ANDERSON: Objection. Form.
THE WITNESS: No, I don't believe that.
Q. BY MR. JACOBS: Was the context of the
argument while you were at Danger?
A. I think it was a bad argument.
Q. What was the context?
MS. ANDERSON: Objection. Form.
1 Android?
2
MS. ANDERSON: Objection. Form.
3
THE WITNESS: No, the issue never really came
4 up. Nobody, nobody threatened me in any way around
5 copyrighting API's during the, you know, the four years
6 of negotiations with Sun. Didn't even come up.
7
Q. BY MR. JACOBS: And did you on your own think
8 of that as an issue as you were making development
9 decisions with respect to Android?
10
MS. ANDERSON: Objection. Form.
11
THE WITNESS: Again, I thought it was
12 non-issue. So it didn't even enter my mind that somebody
13 would actually try to apply that to my work.
14
Q. BY MR. JACOBS: While you were at Danger had
15 heard from Sun that they -- that Sun had -- you used the
16 word here "copyrighted," the Java language API's, so you
17 were aware of that. You put it in an email around -- in
18 an email string that has at least tangential relationship
19 to Android; right?
20
MS. ANDERSON: Objection. Form.
21
THE WITNESS: Well, so first of all, I don't
22 know if Sun Java API's are copyrightable, are they?
23
Q. BY MR. JACOBS: Well, you wrote -- I just
24 want to know what you had in mind when you wrote this
25 email.
Page 150
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
THE WITNESS: I don't recall the exact
contents of the article. I don't think it was used as a
threat, if that's what you're referring to.
Q. BY MR. JACOBS: And did you at some point
form an opinion that this argument was weak?
A. Around copyright?
Q. Yes.
A. Well, I didn't think -- I don't think that,
in general, I don't care whose API's. I don't believe
that API's are copyrightable.
Q. And where -- when did you form that judgment?
MS. ANDERSON: Objection. Caution the
witness to the extent responding would cause you to
reveal communications with counsel, I instruct you not to
answer on the grounds of attorney-client privilege.
THE WITNESS: Yeah. Generally speaking, it's
of my opinion and this, again, we're talking about my
personal opinion as a computer scientist, that these
API's and API's in general are documented. Sometimes
books are written about API's. Sometimes there have been
legal cases about whether API's are copyrightable and
based on just industry knowledge, I didn't have a belief
personally that API's were copyrightable.
Q. BY MR. JACOBS: Did you rely on that belief
in ultimately pursuing your course of development on
Page 152
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
A. So again, like I don't really have -- I'm not
a lawyer, okay. I didn't hit any books and I didn't
learn whether these are copyrighted.
I was relying to acknowledge that I learned
at Danger during my negotiations with Sun where I thought
there was a possibility or at least they inferred to me
that there was a possibility that they thought these were
copyrightable.
Q. And at Danger you successfully negotiated
with Sun and you took a Sun license, correct?
A. Yes. That's correct.
Q. And in the development of Android, ultimately
you proceeded without a Sun license, correct?
MS. ANDERSON: Objection. Form.
THE WITNESS: Ultimately we got to the -- we
decided after a long period of negotiations that it was
clear Sun didn't want to partner with us on -- and we
built a clean room implementation.
Q. BY MR. JACOBS: Ultimately you proceeded in
the development of Android without a Sun license,
correct?
A. Remember, I was always implementing clean
room version as a hedge, so I would reword that to say
ultimately I released a clean room implementation of the
Java programming language and a virtual machine that
Page 151
Page 153
39 (Pages 150 - 153)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
STATE OF CALIFORNIA
2
SS:
COUNTY OF MARIN
)
3
I, LESLIE ROCKW000, CSR No. 3462, do hereby
4
5
certify:
6
That the foregoing deposition testimony was
7
taken before me at the time and place therein set forth
8
and at which time the witness was administered the oath;
9
That testimony of the witness and all
10
objections made by counsel at the time of the examination
11
were recorded stenographically by me, and were thereafter
12
transcribed under my direction and supervision, and that
13
the foregoing pages contain a full, true and accurate
14
record of all proceedings and testimony to the best of my
15
skill and ability.
16
I further certify that I am neither counsel
17
for any party to said action, nor am I related to any
18
party to said action, nor am I in any way interested in
19
the outcome thereof.
20
21
IN WITNESS WHEREOF, I have subscribed my name
this 28th day of July, 2011.
22
23
24
25
/4/
11/
/
LESLIE ROCKWOÓD, CSR. NO. 3462
Page 292
Veritext National Deposition & Litigation Services
866 299-5127
EXHIBIT E
OK
Sent from my BlackBerry Wireless Device
-----Original Message----From: Tim Lindholm
To: Bill Coughran
CC: Andy Rubin
Sent: Fri Feb 10 18:17:29 2006
Subject: Travel for Android requested
Hi Bill,
As you might vaguely be aware, I have been helping Andy Rubin with some
issues associated with his Android platform. This has mostly taken the
form of helping negotiate with my old team at Sun for a critical license.
Andy had also asked Frank Yellin and I to get involved in the evaluation of
a Java acceleration architecture (silicon and surrounding software) done by
Tl. This work has been going on for years. Tl is now trying to figure
out whether it has value and, if so, how to bring it to market. They would
really like to team up with Google/Android, and preferably Sun, to go out
in future Google Android handsets. Tl has already come in and proposed
their architecture to the Android group. I crashed that meeting, and all
agreed it sounds promising, but Andy doesn't think his team has the right
background to evaluate the work more fully.
This has now led to a request from Tl for Frank and I to do a two-day deep
dive into the architecture with Tl's engineers. The proposal is to do it
at their place because that's where all their engineers are, and their place
is in France.
The proposed date is the end of the month, and Frank has got an OK from
his management already. Would you be supportive of me doing this? It
would have to be a quick trip given the other things going on.
Thanks,
--Tim
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
TRIAL EXHIBIT 140
CASE NO. 10-03561 WHA
DATE ENTERED
BY
HIGHLY CONFIDENTIAL- ATTORNEY'S EYES ONLY
Trial Exhibit 140, Page 1 of 1
Oracle America v. Google, 3:10-cv-03561-WHA
DEPUTY CLERK
GOOGLE-01-00018836
EXHIBIT F
Highly Confidential - Attorneys' Eyes Only
1
UNITED STATES DISTRICT COURT
2
NORTHERN DISTRICT OF CALIFORNIA
3
SAN FRANCISCO DIVISION
4
5
--------------------------
6
ORACLE AMERICA, INC.,
7
8
9
Plaintiff, )
vs.
) No. CV 10-03561
GOOGLE, INC.,
10
11
)
)
Defendant. )
--------------------------
12
13
HIGHLY CONFIDENTIAL - ATTORNEYS' EYES ONLY
14
15
Videotaped Deposition of TIM LINDHOLM, taken
16
at 333 Twin Dolphin Drive, Redwood Shores,
17
California, commencing at 9:56 a.m., Wednesday,
18
September 7, 2011, before Ashley Soevyn,
19
CSR No. 12019.
20
21
22
23
24
25
PAGES 1 - 115
Page 1
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
has a personal counsel as well.
THE WITNESS: Should I repeat that?
MR. NORTON: I would like the witness to
answer the questions.
THE WITNESS: Okay, yes, Ms. Anderson is
my -- is my -- is counsel for Google, and Michael is
my personal lawyer.
MR. NORTON: Thank you.
Q. And is Google paying for your personal
lawyer?
MS. ANDERSON: Objection to the extent
responding to this question would require you to
reveal information you only know through
communications with counsel, I instruct you not to
answer on the grounds of privilege. Otherwise, you
may answer.
THE WITNESS: I only know anything about
that through communication with my attorneys.
MR. NORTON: I don't think that's a proper
instruction objection, and I'm not going to take up
limited time with that today.
Q. Mr. Lindholm, you began working at Sun
Microsystems in March 2004; is that right?
A. March 200- at Sun Microsystems? No, I
think it was 1994.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MS. ANDERSON: Objection, form.
THE WITNESS: It's a fairly long list. But
to start with, I initially worked on -- in the
original Java team, which was involving the original
creation of the Java platform. I continued working
on that for a number of years, and then at some
point, switched over as Java -- as the Java plat--the original technology was broken up into various
subplatforms that are today known as the editions,
typically. I began to work more on the edition
being used for mobile and embedded software.
BY MR. NORTON:
Q. And is there a name for the edition for
mobile embedded software?
A. Yes, typically, Sun would have -- Sun and
Oracle and the public would know this as Java Micro
Edition.
Q. It was called Java ME, or Java 2 ME?
A. Yeah, it's gone through various -- it went
through various abbreviations over time and the "2"
was eventually removed. So I think today, as far as
I know, it's Java -- or JME.
Q. One of the aspects of Java that you worked
on was the Java Virtual Machine; is that correct?
A. That's correct.
Page 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Q. I beg your pardon, 1994. Thank you.
A. And March sounds approximately correct. It
was a long time ago, but I'm not sure that I'm
accurate about that.
Q. But the year was 1994; is that right?
A. I think that's correct.
Q. And you continued to work at Sun until what
year?
A. I believe I went from Sun to Google in
2005.
Q. Around July of 2005; is that correct?
A. That's my recollection yes.
Q. And during the time that you were at Sun,
did you work on Java?
MS. ANDERSON: Objection, form.
MR. LISI: Join.
THE WITNESS: During the time I was -well, so Java consisted of many things. There were
parts of Java -- parts of the Java technologies that
I did work on during that time. I did not work on
all aspects of Java, just selected ones.
BY MR. NORTON:
Q. Can you briefly summarize for me the
aspects of Java on which you worked during ten years
you were employed at Sun Microsystems?
Page 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Q. What is the Java Virtual Machine?
MS. ANDERSON: Objection, form.
THE WITNESS: Well, so, first off, it's a
virtual machine, you wouldn't be surprised by. It's
the virtual machine that was used by Sun to run the
Java programming language on. I'm not sure how
deeply you would like me to go into this.
BY MR. NORTON:
Q. Well, can you describe for me, in brief
form, in two sentences, what, in essence, does the
Java Virtual Machine do?
MS. ANDERSON: Objection, form.
THE WITNESS: Well, I would rather say I
would rather start with saying what a virtual
machine does.
BY MR. NORTON:
Q. That's fine. Why don't you do that
first?
A. Okay. A virtual machine is is a general
concept in computer science in many virtual machines
that existed over time. It's typically I don't
know if there is a crisp, formal definition that
people in the field would uniformly agree is the
valid one, but in a general sense, a virtual machine
is typically described as an abstract computing
Page 7
Page 9
3 (Pages 6 - 9)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
machine that will typically include some sort of
instruction set that is intended to be -- well, is
typically implemented as a software program.
This is -- I'm meaning to draw the
distinction with a concrete machine, a concrete
processor, such as, say, an Intel chip. An Intel
central processing unit chip will, itself, have a
set of instructions, but those instructions and the
other aspects of the design of that chip are
intended to be -- are typically intended to be
implemented in silicon -THE REPORTER: In what?
THE WITNESS: In silicon as hardware.
So a lot of -- there is a bit of a gray
area here in that it would be perfectly reasonable
for me to do a software implementation of an Intel
instruction set and to emulate the Intel instruction
set. In fact, various -- various companies have
done that sort of thing is my general understanding.
For instance, when Apple transitioned from
the Power PC platform to the Intel platform, I think
that they did an emulator for the Power PC platform
so that people who had old applications that were
compiled to the Power PC, could be run on the now
Intel-based, new Macintoshes.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
THE WITNESS: When I joined Sun in 1994,
Java didn't exist. There was no language by -- no
language, no virtual machine named J-a-v-a, or JVM.
The -- as is become public now, at that time -- at
that time Sun was working on a language that's
called Oak, and Oak had a virtual machine.
Over time, beginning shortly after I
joined, things happened in the project that had led
to the creation of Oak such that -- such that the
Oak project was basically canceled. But some of the
technology that was developed in the context of Oak
was repurposed for the World Wide Web and was
renamed Java.
So the Oak virtual machine, which predated
my presence at Sun, contained a large portion or
probably, arguably the majority of the Java Virtual
Machine design. But over the next series of
years -- and actually, continuing to the current
day, the Java Virtual Machine had continued to
evolve over time. But in particular, during the
time not long after I joined Sun, the Java Virtual
Machine was firmed up, fleshed out -Q. Mr. Lindholm, I don't like to interrupt the
witness, but -- and I appreciate your -- you're
extremely knowledgeable about this, but I would like
Page 10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
So to get back to the start, a virtual
machine is an abstract machine typically meant to be
implemented in software versus in silicon or
hardware, like a processing processor specification
that is in silicon.
BY MR. NORTON:
Q. And you wanted to describe a virtual
machine generally, and then my question to you
previously had been could you tell me in two
sentences what a Java Virtual Machine is?
MS. ANDERSON: Objection, form.
THE WITNESS: Well, so -- the -- there have
been a number of -- there have been a number
versions of the Java Virtual Machine over time. But
generally speaking, a Java Virtual Machine refers to
a particular virtual machine architecture that was
specified by Sun and implemented -- has been
implemented by Sun and by others. But it's a
particular virtual machine design that has
particular features and particular properties.
BY MR. NORTON:
Q. And were you one of the contributors to the
original Java Virtual Machine?
MS. ANDERSON: Objection, form.
MR. LISI: Join.
Page 12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
to focus on my questions particularly -A. Okay.
Q. -- since we do have a very limited amount
of time.
A. Okay, I'm sorry.
Q. And my question was just a "yes" or "no"
for now -A. Okay.
Q. -- which was, were you a contributor for
the original Java machine -- Virtual Machine, I
should say?
MS. ANDERSON: Objection, form.
MR. LISI: Join.
THE WITNESS: Well, so I can't give a crisp
"yes" or "no" in the context of what I was saying.
I was a contributor to the early, not the earliest,
but in the early days of Java, and the early Java
being brought to the public eye, I was a contributor
at that point.
BY MR. NORTON:
Q. And you are the coauthor of the book, "The
Java Virtual Machine Specifications"; is that
correct?
A. That's correct.
Q. And what is the purpose for which the Java
Page 11
Page 13
4 (Pages 10 - 13)
Veritext National Deposition & Litigation Services
866 299-5127
Highly Confidential - Attorneys' Eyes Only
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Virtual Machine specification is used?
MS. ANDERSON: Objection, form.
MR. LISI: Join.
THE WITNESS: Well, it's used for a number
of purposes. It it was intended to be it was
intended to be the definitive statement of what the
Java Virtual Machine definitive definition of the
Java Virtual Machine. It was also used by people
who wanted to implement Java Virtual Machines or who
wanted to certainly, in the early days, people
were just very interested in Java technology. And a
lot of people wanted to read the virtual machine
specification just to understand how Java technology
worked. So it had quite a number of intents, and
I'm sure people use it for other purposes, too.
Q. Your coauthor on the Java Virtual Machine
Specification was Frank Yellin; is that correct?
A. That's correct.
Q. And Mr. Yellin is also employed by Google;
is that correct?
A. As far as I know, he was when I last talked
to him.
Q. You were a key contributor to the Java
programming language, correct?
MS. ANDERSON: Objection, form.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MR. NORTON: Let's mark our first exhibit
of the day, which will be Plaintiff's Exhibit 524.
I will hand that to you, Mr. Lindholm. I have
copies for counsel.
(Exhibit 524 marked for identification.)
MS. ANDERSON: Thank you.
BY MR. NORTON:
Q. Mr. Lindholm, have you ever seen that
before?
A. Yes, I have.
Q. Is that a website biography of you?
A. I believe that it is.
Q. Did you write it?
A. I think that originally I did not write it.
I might have commented on it, but -- well, I do not
believe I originally wrote it.
Q. But you did comment on it?
A. I had seen it, yes.
Q. Did you see it before it was published,
that is, posted on the Internet?
A. I don't remember. This was -- this was
originally written quite some time ago.
Q. And have you seen it on the Internet?
A. Yes, I think I have.
Q. Did you ask anybody to change anything in
Page 14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
MR. LISI: Join.
THE WITNESS: I don't think I would call
myself a key contributor to the Java programming
language. I contributed some things, but there were
certainly quite a few people who did much more than
that I did. I was more focused on the virtual
machine.
BY MR. NORTON:
Q. You were a key contributor to the Java
Runtime, correct?
MS. ANDERSON: Objection, form.
MR. LISI: Join.
THE WITNESS: The virtual machine is part
of the Java Runtime, so -- so at least by that,
yes.
BY MR. NORTON:
Q. And you were an original member of the Java
technology project at Sun, correct?
A. Well, yes, I'm not sure if in some official
sense there was a Java technology project. Various
people used various things to say that they were
there at the beginning when Java, as it became known
to the public, what was done. So, you know, I -what that says is I was present -- I was in the team
in '94, '95.
Page 16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
the website bio in Exhibit 524?
A. I don't remember. I don't recall. I think
that -- I think that there were -- I think that in
the past, whether it was -- I think that in the past
I have asked people to change -- I think I have
asked something to be changed in here, but I don't
really remember what or what the context of that
was.
Q. You'll see that in the second paragraph of
the biography it states, "Prior to Google, Tim was
an original member of the Java technology project at
Sun Microsystems and a key contributor to the Java
programming language and Runtime, both definition
and implementation." Do you see that?
A. I do see that.
Q. That was part of the bio that you'd seen
before?
MS. ANDERSON: Objection, form.
THE WITNESS: I don't know. This wasn't
something that I've spent a lot of time worrying
about. This is a small -- this was something that
somebody else wanted to put up about me, and I
said -- kind of said, "Okay."
BY MR. NORTON:
Q. You haven't changed it, have you?
Page 15
Page 17
5 (Pages 14 - 17)
Veritext National Deposition & Litigation Services
866 299-5127
EXHIBIT G
,..................................................................................................................................................................................................................................................................................
.
I Sorry -! The three
names I mentioned were for the Java advisors, with you
I being the charter member ;-)
! Ul
is Scott Jenson
I and Browser are the key players of the firefox team.
! I agree with you, the scars and specific knowledge you have of the
! wireless ecosystem is key to helping us do the right thing. The
! others exist on a different plane, and I don't expect them to be
I involved day to day.
I Thanks again for your help.
~-a
I On Aug 9, 2005, at 3:25 PM, Tim Lindholm wrote:
i >Hi Andy,
!>
! >Sure, sign me up. I think that this only puts a name on what I've
! >already been doing and hope to keep doing.
i>
! > I don't know Patrik, but between me, Robert and Urs I don't think we
! >know much of anything about Ul or browsers. Robert knows a lot about
! >the guts of a small JVM implementation; Urs maybe not so much --he
! >was involved in the original big HotSpot, but not its transition to
! > little things. He's a smart guy and a good emeritus advisor if you
! >can get him, of course. I think my main value would be as J2ME
! > runtime generalist and interpreter of the engineering/business/legal
! > ecosystem. Outside of your own team I don't know of anybody else at
! > GOOG that can help much with that.
i>
l >--Tim
!>
! >Andy Rubin wrote:
!>
! »Tim,
! » So I'm instituting an idea called Project Advisors for Android.
! » The areas that the team could benefit from are:
! »-Java
i »- Ul
! >> - Browsers
! » I was wondering if I could add your name to the Java advisor
! » team. You're the first I'm asking. I'll probably also ask
! » Patrik Reali, Robert Griesemer and perhaps Urs Hoelzle.
! » What are your obligations as an advisor? None, especially since
! » you have already been part of our extended team.
! » We'd simply just add your name on the advisor page of our wiki in
! » recognition of your contributions.
! » Let me know if this is okay.
! »-andy
I>
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
TRIAL EXHIBIT 321
CASE NO. 10-03561 WHA
DATE ENTERED
BY
CONFIDENTIAL
Trial Exhibit 321, Page 1 of 1
Oracle America v. Google, 3:10-cv-03561-WHA
DEPUTY CLERK
GOOGLE-12-00000656
EXHIBIT H
EXHIBIT I
Enclosed.
Still working to incorporate our conversation ...
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
TRIAL EXHIBIT 379
CASE NO. 10-03561 WHA
DATE ENTERED
BY
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 1 of 26
Oracle America v. Google, 3:10-cv-03561-WHA
DEPUTY CLERK
GOOGLE-24-00016590
Android
Product Requirements
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 2 of 26
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016591
Android Product Requirements
Table of Contents
1
2
Introduction
2 Vision Statement
2
3
3
Hardware Requirements
3.1 Minimal hardware requirements
3.2 Optional hardware features
4
System Software
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
5
Application Framework
Media Framework
Filesystem
Data Manager
Java
Linux Kernel
LIBC
Communications
5.1
5.2
5.3
5.4
5.5
5.6
6
Platform Infrastructure
Telephony APis (TAPI)
Baseband Downloader
TCPIIP
ppp
Data session manager
Bluetooth
Phone Functionality
6.1
6.2
6.3
6.4
Dialer
Call History
Contacts
Calendar
3
4
4
4
5
7
7
8
8
10
11
11
11
11
11
12
12
12
13
13
13
13
14
Google Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 3 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016592
Android Product Requirements
6.5 World Clock
6.6 Settings
14
6.7 Skinning/Wallpaper
14
6.8 Camera
14
6.9 Media Player
14
6.1 0 Download Manager
14
6.11 SMS
14
6.12 OMA MMS 1.2/3GPP TS 23.140
14
6.13WAP 2.0
15
6.14 SIM toolkit
7
14
15
Synchronization
7.1
15
OBEX
15
7.2 Data Management
8
16
Media Formats
8.1
16
16
8.2 Audio CODECs
17
8.3 Video CODECs
9
Image Formats
17
Tools
17
9.1 APROTO - Remote debugging tool
17
9.2 IDE support
17
9.3 Ul authoring tool (XML editor)
17
9.4 Simulator
17
9.5 ARM Emulator
17
9.6 Testing
18
10 HTML Web Browser
18
10.1 Web Browser Acceleration Service
11 Google Specific Features
18
19
11.1 Google Download
19
11.2 G-Mail
19
Google Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 4 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016593
Android Product Requirements
11.3GLM
19
11 .4 Phonetop Search
19
11.5 G-Talk
19
11.6 G-Cal
19
11 .7 Contacts
19
11.8 Sputnik
19
11.9 Lighthouse Photo Upload
20
12 Intentionally left out
20
12.1 0
Lighthouse
12.11
Enterprise sync
12.12
Behind the firewall e-mail
20
20
20
20
20
20
20
20
20
20
20
20
12.13
Various JSRs
21
12.14
Proprietary Instant Messaging standards
21
12.15
Games
21
12.16
EMAIL
21
12.1 Google Advertising Engine
12.2 Push To Talk
12.3 lrDA support
12.4 Presence
12.5 Voice Dialing
12.6 Text To Speech
12.7 iGoogle
12.8 Orkut
12.9 Blogger
Google Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 5 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016594
Introduction
Google's goals for the Android experience can be summarized as follows
•
•
These phones will also optionally provide great interfaces to Google services and
applications, as well as the means to easily and smoothly add 3rd party
applications.
•
1
First and foremost, phones using the Android platform will be better phones.
Designed with simplicity in mind, these phones should be easier to learn and
easier to use.
Finally, Android phones will provide a rich media experience competitive with
emerging consumer phones, including mp3 and video capabilities.
Vision Statement
A message from Andy". TBD.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 6 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016595
2
Hardware Requirements
Minimal hardware requirements
RAM: 64MB
Non-volatile internal storage {ROM): 64MB
Non-volatile external storage (expansion slot): Mini SD
CPU: ARM 9 200MHz
Baseband technology: GSM EGPRS
Primary Display: QVGA TFT LCD, 16-bit color
Secondary Display: Optional (see section 3.2)
Bluetooth 1.2
Notification: Vibration, RGB message LED
Keypad: 0-9, *, #
Navigation: S-way D-pad, Home, Back, two soft menu keys
Call control: Call, End, Power, Volume up/down
Camera: 2MP CMOS, dedicated picture button
Removable Li-ion battery
USB interface
Speakerphone, full duplex
Headset: 2.5mm stereo headset jack
wifi support
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 7 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016596
Optional hardware features
Secondary display
Baseband technology: UMTS/HSDPA, CDMA/EvDO
Bluetooth 2.0 EDR
3D Graphics Acceleration
lrDA
GPS: Assisted GPS preferred
QWERTY keyboard
3
System Software
Blah, Blah, Words, Words.
Platform Infrastructure
Platform Infrastructure includes the necessary low level firmware for booting the device form a
clean state, recovering the device if firmware has become disabled, updating the various system
components, such as baseband firmware, boot firmware and operating firmware. The system will
have support for updating both wired and wirelessly, "over the air" (see section 7.2.2). Finally, the
platform will include functionality for error reporting and logging, which will be centrally collected
and analyzed to ensure quality and prioritization of future updates.
Boot Loader
The Android Boot loader is responsible for taking control of the CPU on initial power up (or power
up from deep sleep mode), initializing the CPU and core peripherals, and transferring control to
the Linux kernel. The boot loader also provides a USB debug/recovery interface that can be used
to boot the device from USB for hardware bring-up, initial installation, or upgrade/reinstall of
'bricked' systems. The boot loader will be 10-40k of code, depending on specifics of the Flash
part used, complexity of the core system, etc.
Recovery
Recovery mode is a feature of the Boot loader and/or a minimal kernel + recovery program
environment used to reinstall system software in the event of a flash programming failure or other
catastrophic event resulting in system corruption. The intent of the recovery system is that it will
never need to be rewritten (and possibly it will be physically impossible to do so) once the device
in factory programmed, providing a safety net that will always be there.
Remote Debugging Interface
A USB based remote debug/diagnostic interface is provided over the extensible APROTO
(Android Protocol). Currently this bridge allows for sending applications and data to the device,
inspecting device state using a remote shell interface, and observing kernel debug messages. It
is also used to provide transport for remote GDB (native C/C++) debugging and remote Java
debugging. Future versions will provide more state inspection tools and more transparent
filesystem bridging (so that the device can mount local filesystems from the
debugging/development host machine).
Logging
The device needs to provide debug logs for developers and event logs for service providers.
Debug logs are verbose text messages that can be used to examine system state while
developing software. Event logs are an application feature, described later. The debug logs need
to work from multiple processes on the device, simulator, and emulator. The logging system
allows log messages to have priority levels (e.g. error, warning, info, debug) and a "tag" that
identifies the message source. This way, uninteresting messages can be filtered out without
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 8 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016597
having to recompile the code. Advanced log viewer apps can retain all log messages and
dynamically re-filter past output, which can be helpful when debugging problems that are difficult
to reproduce.
Application Framework
The Application Framework is the primary interface by which a third party developer creates
applications and services that extend the platform. It is meant to provide a clean set of APis that
can be used equally by internal developers extending the system software, as well as external
developers building and extending the platform in unforeseen ways. Therefore, it is one of the
most complex and important functions of the system.
Common Navigation
The Application Framework will allow applications written by both internal and external
developers to be combined into a common experience. For example, the phone may have a
contacts application, a mail application and a maps application written by three different
companies, and the user will be able to navigate both forward and backward through these
applications without being aware of application or process boundaries.
Activities and Intents
The Android Ul will be modular and allow individual applications and components to be replaced.
This is accomplished by using intents and activities. An intent is a data structure that is a formal
representation of something the user has asked do to (e.g. choose a picture, or make a call to
someone). Intents are bound at runtime to activities, which are the objects that implement the Ul
for performing those tasks. Behavior can be modified, extended or replaced by changing the
mapping from intents to activities.
Content Providers
Content providers create an abstraction layer between the physical representation of data and
clients who consume that data. This allows components to be swapped both above and below the
abstraction. It is possible to create multiple clients that consume the same data, and it is possible
to change the data source without requiring changes to the client application.
Messaging (lAC)
Application Manager
Responsible for starting, stopping, pausing applications, and notifying other applications of
events.
View System
Com positing
Text Subsystem
The text package is intended to provide the system and applications with all the tools they need
to display and to enable users to edit multilingual styled text. It contains storage classes that
allow text to be manipulated and to have styles attached to ranges of it; a layout class that
arranges the text into lines and interfaces with the graphics system to draw the text; a dynamic
layout class that updates itself when the text or its styles change; and input methods that allow
the user to input, modify, or select text using the keypad and buttons.
Text Input
Dictionary based.
Free Type
FreeType 2 is a software font engine that is designed to be small, efficient, highly customizable,
and portable while capable of producing high-quality output (glyph images). It can be used in
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 9 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016598
graphics libraries, display servers, font conversion tools, text image generation tools, and many
other products as well.
Note that FreeType 2 is a font service and doesn't provide APis to perform higher-level features
like text layout or graphics processing (e.g., colored text rendering, 'hollowing', etc.). However, it
greatly simplifies these tasks by providing a simple, easy to use, and uniform interface to access
the content of font files.
Control Framework
Widgets
XML Layout
Graphics Plugins
Externally defined graphic formats, with possible animation and interactivity will be supported
through a plugin architecture, allowing them to be hosted inside any application, and as content
inside a web page. Examples of note are Flash and SVG.
Graphics Subsystem
An application API for drawing text, images and arbitrary geometry to the screen. It offers modern
graphical features (e.g. antialiasing, 3x3 matrix, transparency, Unicode text) tightly integrated into
the view and Surface systems.
Screenplay
The XML language used to describe graphics and animations. This can be used for direct
graphical content, but it is also used by the View/UI system for specifying widget and application
level skinning. Android widgets (e.g. buttons, lists, text-input, etc.) use this to separate their look
and animated behavior from the programmatic logic. May be replaced by Adobe Flash.
SVG-Tiny Engine
Content and vector player.
Gadget Scripting Engine
A javascript-based scripting language with bindings into the system to allow "internet-style"
content developers to build lite weight home-screen widgets ala Konfabulator. May be replaced
by Adobe Flash.
OpenGL ES
(requires support for Java 3D as well)
Surface Flinger
A system service responsible for com positing clients' surfaces into the frame-buffer and
managing the display and video hardware. It is implemented as a server that client-processes
connect to. Each client is allocated one or several surfaces they can get direct access to. All the
surfaces from all clients are com posited by the SurfaceFiinger with optional transformations
applied (blending and 20-transform). SurfaceFiinger is designed to facilitate the use of HIW
accelerated graphics through OpenGLIES (once it becomes available) -- its feature set matches
OpenGLIES' very closely. SurfaceFiinger uses a very lightweight protocol such that no IPC is
needed between client processes and itself, synchronization is done solely through atomicoperations in shared-memory segments. All frame-buffer accesses in the system go through
SurfaceFiinger.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 10 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016599
Pixel Flinger
A very low level rasterization library used by SurfaceFiinger. It implements OpenGLIES' pixel
pipeline, but none of the geometry pipeline (no 3D, no polygons, no transforms). It's a trapezoidoriented rasterizer, which is designed to use runtime-generated code (JIT). Its API is deliberately
very similar to OpenGLIES' so that it could easily be replaced by/implemented on top of it.
Media Framework
Blah, Blah, Words, Words. See section 8 for media formats supported.
Audio
Generic "play this sound file" interface for custom sound effects. Also useful for WAV files
attached to e-mails.
Streaming audio interface for longer files, such as MP3s. We may need some basic audio
processing, e.g. cross-fades.
Audio mixing controls such as per-stream volume level. We need to determine the maximum
number of simultaneous streams, and perhaps provide a priority mechanism if we suspect we will
exceed it. (Example: playing a game with background music and 2-3 overlapping sound effects.
The phone rings, or an instant message arrives. Ideally we want to reduce the volume of all of the
game sounds, play the new sound, and then reset the volume. If we slow down when mixing
more than 4 sounds, we need to drop the lowest-priority sound, which means knowing sound
priority.)
MIDI engine for ringtones.
Microphone input. Telephony multiplexing.
Synchronized audio for stored or streaming video. This requires playing time-stamped audio and
slowing or speeding audio to keep it in sync with video.
Video
Filesystem
The filesystem will be used both internally- for flash ROM or an embedded hard drive- and
externally, for removable memory cards or USB-attached storage.
FAT32
Microsoft's FAT filesystem is the most common format used on removable media cards for
applications like digital cameras. FAT32 supports reasonably long filenames, volumes up to 2TB,
and individual files up to 4GB.
Robust file system
M-Systems driver
A Linux driver and boot loader code that supports M-Systems "DiskOnChip" product family,
primarily the G4 product line which is found in many of today's smartphones. This is important for
backward compatibility.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 11 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016600
Data Manager
Asset Manager
The Asset Manager controls access to read-only assets on the device. These include graphics,
sounds, ring tones, localized text, user interface definition files, and more. Assets are stored in
packages based on application name, locale (e.g. "en-US"), and vendor (for vendor-specific
changes). The application asks for an asset by name, and the Asset Manager takes care of
figuring out which packages to search and in what order.
The packages themselves are just Zip archives, created with the Android Asset Packaging Tool.
Assets may also be "loose", stored in directories, to make it possible to update a few assets
without having to send a full package over the air.
The Asset Manager does not manage downloadable content such as background images or ring
tones. It treats everything as a raw byte stream.
Resource Manager
The Resource Manager sits on top of the Asset Manager, database, and filesystem. While the
Asset Manager sees only streams of bytes, the Resource Manager works with typed data, such
as bitmaps, localized text strings, and sound files.
SQLite
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL
database engine.
Notification Manager
A system function that queues and alerts the user to pending system information -such as new
messages, voicemail, low battery, no service, sim card alerts, etc.
Java
JVM
The VM (virtual machine) environment is the means by which bytecode-based virtual executables
-Java class files in particular- can run on the system. The environment includes code to
prepare and load executable files, the core class library needed by those executables, and an
underlying execution engine which runs those executables. The VM environment mediates the
interaction between virtual executables and the lower layers of the system by providing facilities
such as a garbage-collected heap and 1/0 library code that wraps raw file descriptors.
The JVM is compliant to CDC/FP 1.1 (JSR 36 I 218)
Google Bytecode Interpreter
The Dalvik executable format is an executable format roughly equivalent to a Java .jar file, but
with several advantages: In-memory compactness is aided by having a shared constant pool for a
set of classes (rather than one constant pool per class). File parsing and verification may be done
more quickly because of the use of more regularized structures, including a bytecode set which
includes only fixed-width instructions. The use of a purely register-based instruction set (rather
than having both registers/locals and a variable-sized stack) both simplifies verification and allows
for more efficient interpretation, owing to the facts that opcode dispatch is one of the biggest
sources of interpreter inefficiency and it generally requires fewer register-style instructions (vs.
stack-based instructions) to perform equivalent operations. The "bytecode" code unit is 16 bits
(rather than 8) because it results in fewer overall reads of the instruction stream, which is also a
source of interpreter slowness. And lastly, the register-based nature of the instructions makes it
much easier to have a small yet reasonably well-performing JIT.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 12 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016601
JPDA
The Java Platform Debugger Architecture (JPDA) consists of three interfaces designed for use by
debuggers in development environments for desktop systems. The Java Virtual Machine Tools
Interface (JVMTI) defines the services a VM must provide for debugging (JVMTI is a replacement
for the Java Virtual Machine Debug Interface (JVMDI) which has been deprecated). The Java
Debug Wire Protocol (JDWP) defines the format of information and requests transferred between
the process being debugged and the debugger front end, which implements the Java Debug
Interface (JDI). The Java Debug Interface defines information and requests at the user code
level.
MIDP 2.0
The Mobile Information Device Profile (MIDP) is a key element of the Java 2 Platform, Mobile
Edition (J2ME). When combined with the Connected Limited Device Configuration (CLDC), MIDP
provides a standard Java runtime environment for today's most popular mobile information
devices, such as cell phones and mainstream personal digital assistants (PDAs).
MIDP 2.0 (JSR 118) is a revised version of the MIDP 1.0 specification. New features include an
enhanced user interface, multimedia and game functionality, more extensive connectivity, overthe-air provisioning (OTA), and end-to-end security. MIDP 2.0 is backward-compatible with MIDP
1.0, and continues to target mobile information devices like mobile phones and PDAs.
JSR 248 - Mobile Service Architecture (Sun to provide for 2.0)
This JSR creates a mobile service architecture and platform definition for the high volume
wireless handsets continuing the work started in JSR-185 and enhancing the definition with new
technologies.
JSR 75- PDA Optional packages (Part of 248- Sun to provide for 2.0)
PIM API which gives access to the Personal Information Management (PIM) database including
to-do lists, calendars and contact data. The second optional package is the FileConnection API
that gives access to the mobile phone's file system including removable storage media like
Memory Sticks.
JSR 82 - APis for Bluetooth (Part of 248 - Google to provide for 1.0)
Bluetooth is an important emerging standard for wireless integration of small devices. The
specification standardizes a set of Java APis to allow Java-enabled devices to integrate into a
Bluetooth environment.
JSR 135 - Mobile Media API (Part of 248 - Google to provide for 1.0)
This specifies a small-footprint multimedia API for J2ME, allowing simple, easy access and
control of basic audio and multimedia resources while also addressing scalability and support of
more sophisticated features.
JSR 172 -Web Services (Sun to provide for 2.0)
Blah, Blah, words, words.
JSR 177- SATSA (Sun to provide for 2.0)
Blah, Blah, words, words.
JSR 179 - Location API (Part of 248 - Google to provide for 1.0)
A package that enables developers to write mobile location-based applications for resourcelimited devices. The API works on the J2ME CLDC v1.1 and CDC configurations.
JSR 180 -SIP (Sun to provide for 2.0)
Blah, Blah, words, words.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 13 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016602
JSR 184- 30 Graphics (Part of 248 - Google to provide for 1.0)
Blah, Blah, words, words.
JSR 205 -Wireless Messaging API (Part of 248 --Sun to provide for 2.0)
This defines a set of APis which provides standard access to wireless communication resources,
designed to run on J2ME configurations and to enhance J2ME profiles with unique functionality.
JSR 211 - CHAPI (Part of 248 --Sun to provide for 2.0)
Blah, Blah, Words, Words.
JSR 226 - SVG (Part of 248 --Sun to provide for 2.0)
Blah, Blah, Words, Words.
JSR 229 - Payment API (Part of 248 --Sun to provide for 2.0)
Blah, Blah, Words, Words.
JSR 234- Adv. Media API (Part of 248 --Sun to provide for 2.0)
Blah, Blah, Words, Words.
JSR 238 - MI18N (Part of 248 --Sun to provide for 2.0)
Blah, Blah, Words, Words
Linux Kernel
We will be using a build of the kernel from the 2.6 tree.
IPC Driver (Binder Lite)
The IPC mechanism provides standard facilities for communicating between processes. It allows
a single process to host multiple distinct persistent services, which can be implemented in either
C++ or Java. Communication between processes is modeled as a remote procedure call, using
well-defined interfaces; this will eventually allow a tool to automatically generate the necessary
marshalling code for all languages based on an abstract interface definition. A custom kernel
module (derived from OpenBinder) is used to implement inter-process calls, with features such as
object mapping between processes, directly dispatching calls to a pool of available threads in a
process, and performing a single copy of the data going between processes. The high-level APis
included for communicating across process, in both C++ and Java, look similar to COM's
interface-based design.
Keypad Driver
Linux driver to control the typical phone keypad, including numeric (0-9, *, #) D-Pad and call
control functions.
Display Driver
Linux driver to control the typical LCD display, both primary and secondary (may be separate
drivers). Includes backlight and low power modes.
Baseband Driver
Linux driver to interface to various semiconductor companies baseband core.
802.11 Driver
Linux driver to interface to various semiconductor companies wifi baseband core.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 14 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016603
SD/SDIO
Flash Driver
Linux driver to interface to various semiconductor companies NAND flash chips. See section
4.4.3 forM-System flash driver.
USB Driver
GPS Driver
Linux driver to support standard interfaces for various GPS and A-GPS chips. Optional per
minimum hardware requirements.
Power Management
System will support low power mode and processor clock cycling. Drivers will support subsystem
shutdown where appropriate, and cleanly be able to power up individual subsystems quickly.
System will strive to support industry standard talk/standby times.
Camera Driver
Linux driver for support of CMOS modules by vendors such as Omnivision and Micron.
LIBC
4
Communications
Blah, Blah, Words, Words.
Telephony APis (TAPI)
The telephony subsystem provides a high-level API to the traditional mobile phone features on
the device. It will be portable across various GSM baseband software implementations,
communicating with them primarily with the 3GPP TS 27.007127.005 AT command sets over
either a TS 27.010 (CMUX) style link or a manufacturer-specific link where appropriate. The
middle layer is designed to be portable to COMA-style commands as well, although COMA is not
an initial target. High-level API's to SMS are made available, and packet-switched data will be
routed to the Linux TCP/IP stack and made available through traditional Berkeley sockets APis.
Baseband Downloader
Code that runs at boot-loader time that copies the baseband firmware to the proper memory
address and resets that baseband controller to start executing the code. Also responsible for
configuration and parameter adjustment for various RF front end devices.
TCP/IP
Provided by Linux
ppp
Provided by Linux
Data session manager
The Connection Manager is a policy agent for managing packet-switched
data connections. The Connection Manager's goal is to provide an
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 15 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016604
experience as near to "always on data" even in situations where carrier
requirements or billing schemes do not make true always-on data
reasonable.
This near-transparency will extend as much as possible
both to the user interface and to the application. The Connection
Manager is intended to allow the user/subscriber to view and budget
their data usage without discouraging their use of data services. Of
course, the Connection Manager will allow an "always on" data mode for
accounts where that class of service is appropriate.
Will also support
multiple paths and arbitrate between GSM and WIFI.
Bluetooth
Bluetooth is a wireless communication protocol mainly used for short distance and in devices with
low power consumption. Because Bluetooth is capable of communicating in an omni-directional
manner of up to 30 feet at 1 Mb/s it is far superior to infrared.
Host Controller Interface (HCI)
The Host Controller Interface (HCI) provides a standard interface to the Bluetooth baseband
controller and link manager services that is independent from the host hardware implementation.
This layer provides a uniform method of accessing any Bluetooth hardware. There is an
addendum to the HCI specification for different host transport protocols. For each physical bus
(USB, RS232, UART etc.) it defines the interface functions based on which physical bus is used,
but also vendor specific implementations are possible. Support for H2 (USB) and H4(UART) as
required by chipset.
Logical Link Control and Adaptation Protocol (L2CAP)
The Logical Link Control and Adaptation Layer Protocol {L2CAP) is layered over the HCI layer.
L2CAP provides connection-oriented and connectionless data services to upper layer protocols. It
uses a Protocol and Service Multiplexing (PSM) capability and a Segmentation and Reassembly
(SAR) mechanism. L2CAP permits higher level protocols and applications to transmit and receive
L2CAP data packets up to 64 kilobytes in length. Also group abstractions and Quality of Service
(QoS) features are supported.
Serial Port Emulation (RFCOMM)
The RFCOMM Protocol provides emulation of serial ports (RS232) over the L2CAP layer. The
protocol is based on the ETSI standard TS 07.1 0. Only a subset of this standard is used and
some adaptations are Bluetooth specific and are documented in the RFCOMM specification.
The serial emulation enables compatibility with a large base of applications that currently use the
serial port as their main communication bus. RFCOMM conveys all of the RS232 control signals
and supports remote port configuration. While the protocol is based on an ETSI specification, the
name is related to lrComm of the lrDA protocol stack.
Service Discovery Protocol (SOP)
The Service Discovery Protocol (SDP) provides the means for client applications to discover the
existence of services provided by server applications as well as the attributes of those services.
The attributes of a service include the type or class of service offered and the mechanism or
protocol information needed to utilize the service.
SDP involves communication between a SDP server and a SDP client. The server maintains a list
of service records that describe the characteristics of services associated with the server. Each
service record contains information about a single service. A client may retrieve information from
a service record maintained by the SDP server by issuing a SDP request. If the client, or an
application associated with the client, decides to use a service, it must open a separate
connection to the service provider in order to utilize the service. SDP provides a mechanism for
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 16 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016605
discovering services and their attributes, but it does not provide a mechanism for utilizing those
services.
Normally, a SDP client searches for services based on some desired characteristics of the
services. However, there are times when it is desirable to discover which types of services are
described by an SDP server's service records without any a priori information about the services.
This process of looking for any offered services is called browsing.
K2 -Service Discovery Application Profile
This profile defines the features and procedures for an application in a Bluetooth device to
discover services registered in other Bluetooth devices and retrieve any desired available
information pertinent to these services.
Essentially, the service discovery profile defines the protocols and procedures that shall be used
by a service discovery application on a device to locate services in other Bluetooth-enabled
devices using the Bluetooth Service Discovery Protocol (SDP).
KG - Headset profile
The Headset profile defines the requirements for Bluetooth devices necessary to support the
Headset use case. Essentially the Headset profile defines the protocols and procedures that shall
be used by devices implementing the usage model called 'Ultimate Headset'.
K7 - DUN profile
The Dial-up Networking profile defines the requirements for Bluetooth devices necessary to
support the Dial-up networking use case. Essentially the Headset profile defines the protocols
and procedures that shall be used by devices implementing the usage model called 'Internet
Bridge'. The most common examples of such devices are modems and cellular phones.
Two main scenarios are implemented: the Usage of a cellular phone or modem by a computer as
a wireless modem for connecting to a dial-up internet access server, or using other dial-up
services , and Usage of a cellular phone or modem by a computer to receive data calls
5
Phone Functionality
Dialer
Call His tory
Feature exists to simplify adding new contact info and dialing. Incoming and outgoing calls must
be tracked and recorded. It will be used by other features such as phonetop search (see section
11.4)
Contacts
Synchronized with Google services and support G-Talk presence (see section 11.5)
Calendar
Synchronized with Google services (see section xx.x)
World Clock
With Alarm.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 17 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016606
Settings
Ringtone Management
Should include a mechanism to switch between Silent, Meeting, Vibrate, etc.
Telephony setup
Data setup
Skinning/Wallpaper
Camera
Still
Video
Media Player
Audio
Video
Download Manager
SMS
OMA MMS 1.2/3GPP TS 23.140
Multimedia Messaging Service (MMS) is a system application by which a client is able to provide
a messaging operation with a variety of media types: WBMP, GIF87, GIF89a, JPEG, PNG, BMP,
AMR, MIDI, WAV, H.263, SVG, MPEG4
SMIL
Synchronized Multimedia Integration Language. SMIL is a presentation format, i.e. a SMIL page
contains information about the appearance of different multimedia elements on a display. When
SMIL is used to represent content on a PC screen, normally a window is opened whose size is
defined by the layout element of the SMIL page to be displayed. In this way, the appearance of
the SMIL page on the screen will reflect exactly the organization of the content as the author had
created it. When SMIL is used for the presentation of multimedia messages on mobile terminals,
the size of the window is severely limited by the resolution and appearance of the terminal
display. The layout of a multimedia message represents the content as created by the originator,
but it is well possible that the original layout simply does not fit into the display of the receiving
terminal. Therefore, SMIL exchange must be simple enough to ensure that -if the displays of the
originator and receiver terminal are different- the content can still be displayed, possibly by
changing the relative position of the different elements.
WAP 2.0
With backward support for 1.x
Markup
WML (238)
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 18 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016607
wcss
1.1
WML Script (193)
XHTML (277)
WBXML
Adjunct Layers
Push (235)
WTLS- security
Media Types (237)
WBMP, GIF87, GIF89a, JPEG, PNG, BMP
Protocol Stack (jWAP sourceforge)
HTTP
WSP (203)
WTP
WOP
SIM toolkit
Blah, Blah, Words, Words.
6
Synchronization
Blah, Blah, Words, Words.
OBEX
OBEX is a high-level API and protocol for exchanging objects such as electronic business cards
and calendar items transmitted in the vCard and vCalendar formats. OBEX was originally
introduced by the Infrared Data Association (lrDA), and it can be implemented on top of the
Bluetooth RFCOMM protocol, lrDA protocol, TCP/IP, and others.
Data Management
OMADL
The OMA Download (OMA DL) specification provides a flexible protocol for enabling the
download of generic content, controlled through the use of a separate download descriptor. By
drawing on elements of these protocols and adding new elements, an effective protocol is
constructed that combines Device Management for controlling the main device configuration
management functions and provides for the use of descriptor-based download mechanisms to
download larger binary objects such as firmware updates. The download process is abstracted to
allow the use of either OMA DM (e.g. Add/Replace- In-Session method) or any suitable
alternative download mechanisms (for example, a descriptor based download protocol such as
OMA OTA Download v2.0- Alternative Download Method).
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 19 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016608
OMADM
Device Management refers to the process of managing device settings and applications resident
in the terminal. Device Management facilitates the configuration of the user's terminal with
minimal user intervention to enable easy usage of mobile services. As terminals offer more and
more services, Device Management provides a mechanism for the operator to remotely configure
a terminal's parameters while the terminal is in the hands of a user.
OMADS
OMA Data Synchronization (OMA-DS) is an open standard that defines a common protocol used
to synchronize networked data between two or more devices to keep the data current and
consistent. The OMA-DS client stack provides data synchronization of personal information such
as calendar, contacts, tasks, and email. Synchronization ensures that any changes made to the
calendar in one device, for example, are also reflected in the calendar in the other device.
SyncML
An industry standard synchronization protocol and data format that works in conjunction with
OMA DS and OBEX. Developer will consider supporting MSFT ActiveSync support as well.
7
Media Formats
Image Formats
PNG
PNG (Portable Network Graphics) is a lossless compressed image format. It uses the zlib library,
and is free of patent restrictions. It is widely used on the Internet. We will use the open-source
"libpng" library to manipulate them.
JPEG
JPEG (Joint Photographic Experts Group) is a lossy compressed image format that is mostly free
of patent restrictions. It is the most widely used image format for digital pictures. We will use the
open-source IJG JPEG library to manipulate them.
GIF
GIF (Graphics Interchange Format) is a lossless compressed image format suitable for 8-bit
images. It uses the LZW compression algorithm, for which the patents have expired. It is very
popular on the Internet for small images on web pages and the wireless industry has adopted it
for various standards, such as WAP and MMS.
BMP
BMP (BitMaP) is the lossless bitmap format developed for OS/2 and made popular by Windows.
It's not used often on the Internet, but it's a common format among developers and the wireless
industry has adopted it for various standards, such as WAP and MMS.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 20 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016609
Audio CODECs
3GPP-Rel6
AAC,AAC+
AMR-NB, AMR-WB
MP3
PCM a-law, u-law
Video CODECs
3GPP-Rel6
H.263
H.264
MPEG4
8
Tools
APROTO- Remote debugging tool
IDE support
Eclipse
Net Beans
Ul authoring tool (XML editor)
Simulator
The simulator front-end provides a user interface for developing and testing handset software.
Handset specifications, which include pictures of the device, lists of available buttons, and the
resolutions of displays, are loaded from config files. The front-end talks to the device code, which
can be compiled to run natively on the desktop system or (someday soon) built for ARM and
emulated. Keyboard input and physical state changes, such as "open flip phone", are passed
into the simulated device, and display updates are sent out. The front-end was developed with
the wxWidgets Ul toolkit, and runs on Linux, Mac OS X, and Win32.
ARM Emulator
The ARM emulator ("armsim") is a software tool for simulating executables that are compiled for
the ARM instruction set. Armsim can simulate both stand-alone user programs as well as the
Linux kernel. When simulating the Linux kernel it also models the MMU (for both instructions and
data), the interrupt hardware, and devices such as the UART (for keyboard input) and the LCD
display device (not completed yet). When simulating standalone user programs, armsim sets up
the stack with command line args and environment variables before simulating the user code.
Armsim can also produce a detailed instruction trace. The trace contains every single instruction
executed (including interrupt handlers in the Linux kernel) and is useful for debugging
performance problems and for getting very detailed information about what is happening inside a
program.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 21 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-0001661 0
Testing
We need to provide a set of regression tests for various features. [How will this work? Does this
deserve its own full section? Should it fold into SDK, or be a sub-section of the earlier sections?]
[section on: Java compliance testing]
[section on: other industry compliance stuff? Maybe that just goes with the relevant standards in
the telecom section.]
9
HTML Web Browser
Android Browser is an implementation of Apple's Webkit open source. Apple's Webkit consists of
WebCore (an html rendering engine), JavaScriptCore (the Javascript interpreter), and WebKit (a
browser embedding API). We will port WebCore and JavaScriptCore to the Android platform. We
won't use WebKit as is, and will build our own flavor of it, and probably provide a Java browser
embedding API.
We'll need to build mobile specific features on top of the WebKit solution, such as Small Screen
Rendering (SSR) for small screen layout, constrained device memory management, mobile
browser link and page navigation, connection management suitable for low bandwidth/high
latency network. We will also need to add cache and cookie management for constrained
memory environment.
In addition, we hope to innovate in the area of ease of use. We'd like to improve the uri entry on
phones, with shortcuts, type ahead lookups, and potentially better integration with Google search.
There are other features that we'd like to have, but may not be able to get to for 1.0 ship. Nokia
has done some interesting Ul on thumbnail navigation, which makes 2D navigation easier on
pages laid out wider than the phone screen. We think it will be an interesting alternative to SSR
layout.
Lastly, we need to provide the html rendering engine as a library, so other apps besides the web
browser that want to render html content can use it.
Web Browser Acceleration Service
Blah, Blah, Words, Words.
Proxy Image Transcoder (under consideration)
Download of images in their original sizes can be wasteful. If the image width is bigger than the
screen width, the browser will scale down the images in order to fit them in the layout. So the user
may never need to see the images in their original sizes. With a proxy server, it can scale the
images down before sending them over the wireless network. In addition, the proxy transcoder
can strip out unnecessary information in image formats such as JPEG and GIF (i.e. text
comments), and reduce the color depth if the mobile phone doesn't support all the colors in the
image.
This is an optional feature should the wireless carrier choose not to enable it.
Connection Proxy (under consideration)
Wireless networks have high latency and low throughput. Neither is desirable for download
speed. Having a proxy server can help resolve some of these issues, as the proxy server can
keep a persistent socket connection open and multiplex several streams to avoid the high cost of
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 22 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016611
setting up new socket connections over the wireless link (3-way TCP handshake: SYN, SYNACK, DATA+ ACK bits) and teardown (FIN, FIN-ACK + RST)
This is an optional feature should the wireless carrier choose not to enable it.
10 Google Specific Features
Some of these are optional features should the wireless carrier choose not to enable them. This,
however, does not imply that a subset of these applications will be developed. The entire list will
be developed and released with the system. The features in this category must be deeply
integrated with the system and have a seamless experience.
Google Download
A high-fidelity content distribution system. Will support industry standards such as OMA DL, and
will focus on user experience and ease of transaction. Features such as "try before you buy" for
both applications and media are important to consider. They will help differentiate the Google
download system from competitors.
G-Mail
GLM
Phonetop Search
G-Talk
Instant Messaging only. Jabber XMPP support.
G-Cal
Synchronized with a central server.
Contacts
Synchronized with a central server.
Sputnik
Embeddable Sputnik Gadget Scripts (see section 4.2.17) that speak the protocol to the Sputnik
server.
Lighthouse Photo Upload
Only support for photo uploading.
11 Intentionally left out
The following features and functionality have been purposely left out of the 1.0 release. The
reason for dismissal is recorded under each section.
Google Advertising Engine
Reserved for a future release
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 23 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016612
Push To Talk
Perfect opportunity for a third party developer
lrDA support
Either lrDA or Bluetooth, but why both?
Presence
Section refers to IMS-style presence. Contacts will include presence for G-Talk (see section
11.5) Perfect opportunity for a Commercial implementation
Voice Dialing
Text To Speech
iGoogle
Perfect opportunity for a Google-team
Orkut
Blogger
Lighthouse
Will include support for Neven Vision code for facial feature tracking and detection. System will
make these features available to third party developers to automatically embed image metadata
within the exif header so Google services can take advantage of information taken at point-ofcapture (such as location, pose, number of faces, etc.)
Enterprise sync
Initial release is targeted toward consumers. Perfect opportunity for a third party developer
Behind the firewall e-mail
Initial release is targeted toward consumers. Perfect opportunity for a third party developer
Various JSRs
Such as JSR 248. Perfect opportunity for a Commercial implementation. (See section 4.6.5)
Proprietary Instant Messaging standards
AIM, MSN, Yahoo
Games
Perfect opportunity for a third party developer
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 24 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016613
EMAIL
Perfect opportunity for a Commercial implementation and may be required by carriers. POP and
IMAP email reader. Must include support for SSL. Must also support a reasonable set of MIME
converters for popular enclosure formats, such as Word and PDF.
Google Proprietary and Confidential
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 25 of 26
[APG]
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016614
On Apr 20,
2006,
at 1:01PM, Rich Miner wrote:
> do you have a more recent PRD spin?
HIGHLY CONFIDENTIAL- ATTORNEYS' EYES ONLY
Trial Exhibit 379, Page 26 of 26
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-24-00016615
EXHIBIT J
Yes, enums are relatively expensive compared to static final ints.
That being said, I think the right place to draw the line is at the
API boundaries. That is, if it's for something to be presented to
programmers, err on the side of using an enum. If it's just internal
plumbing, and efficiency is paramount, then use static constants.
In terms of all the new Java 5 language features, I'm pretty sure the
only one that requires cooperation from the VM is the runtime
annotation facility. (And we probably won't have runtime annotations
any time soon.) Everything else is syntactic sugar, with a bit of
library support (e.g. and already mentioned, lterable). If you want to
use a Java 5 language feature, then I have no problem with you doing
so, but be prepared to implement missing pieces out of our java.*
hierarchy. And if you run into trouble that you don't feel qualified
(or compelled) to fix, then please submit a bug.
And, as previously mentioned, the new features generally do come with
a runtime cost, so keep that in mind. For example, you probably don't
want to use a collection iterator ("for (Blah var :coli) ... ")in an
efficiency-critical inner loop. I'm personally a big fan of using
profiling to figure out when I can no longer get away with writing
straightforward code.
As for what set of java.* classes we're aiming for, that's still
somewhat of an open question, the resolution of which will undoubtedly
hinge on what happens (or fails to happen) with Sun. That being said,
I think CLDC compliance is a reasonable baseline, and if we could hit
the CDC foundation, that would be awesome. But if there's some java.*
functionality you need that isn't in either of those, it's still okay
to go ahead and implement it (or file a bug for same). If we have to,
we will play classloading tricks to make sure that the restricted
environments (such as CLDC MIDLets) only see the classes that they're
allowed to.
-dan, your Java guy
Android-eng mailing list
And roid-eng@goog le .com
https ://mai Iman .co rp.google .com/mai lman/listi nfo/and raid-eng
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
TRIAL EXHIBIT 157
CASE NO. 10-03561 WHA
DATE ENTERED
BY
HIGHLY CONFIDENTIAL- ATTORNEY'S EYES ONLY
Trial Exhibit 157, Page 1 of 1
Oracle America v. Google, 3:10-cv-03561-WHA
DEPUTY CLERK
GOOGLE-01-00025523
EXHIBIT K
Very interesting info. It sounds like I'll just have to suck it up for a while, yet.
Ultimately, the most important question is: will JRE-completeness (according to some metric, at least) be gating for
public launch? I can only assume "yes". :)
-Dan
On 6/25/07, Dan Bornstein wrote:
On 6/25/07, Dan Morrill wrote:
> I have another question for you -- Mike Cleron said you could help me out
>with this, too. (If there's a list I ought to sign up for, let me know.)
I'm a fine person to ask these questions of, but if you want to ask
them in a more open forum, there is the list
, which is -- as the name says -for Google folks in general who are doing development on the Android
platform.
>Since I had assumed that Android was implementing J2SE, I am obviously wrong
Actually, you aren't *that* wrong; you are merely working with an
incomplete system.
>What is the JRE-coverage strategy for Android? Is the intent to support
>some Java standard configuration? If so, which? (J2SE? J2ME/MIDP? etc.)
Our nominal goal is to achieve approximate parity with CDC Personal
Basis Profile, which has most of the classes from SE that one could
reasonably expect to be useful on a high-end mobile device of recent
(or soon-to-be) vintage.
Unfortunately, though, due to our situation with Sun, neither I nor
any of my Android compatriots are allowed to refer to any documents
from Sun that require actively accepting a license (including
click-through), so we can't actually attempt to exactly hit CDC PBP.
It's more like our goals and the reasoning behind the PBP spec are
similar, so the results of applying those reasons will also be
similar.
>What is the timeline for attaining this coverage?
Much of the library implementation work is being done by an outside
vendor, and they have a schedule which currently states completion by
the end of September. For various reasons, I don't believe that date.
However, there are intermediate milestones, and with regards to your
specific stated needs, java.util is coming soon (I have an alpha drop
from them which is sitting in a branch), but I don't expect to see any
XML-related stuff for at least a month.
>Are there any reasons not to suck in Apache Harmony classes, to fill in the
>gaps?
UNITED STATES DISTRICT COURT
NORTHERN DISTRICT OF CALIFORNIA
TRIAL EXHIBIT 251
CASE NO. 10-03561 WHA
Actually, much of what the vendor is doing is sucking in classes from
DATE ENTERED
BY
HIGHLY CONFIDENTIAL- ATTORNEY'S EYES ONLY
Trial Exhibit 251, Page 1 of 2
Oracle America v. Google, 3:10-cv-03561-WHA
DEPUTY CLERK
GOOGLE-02-001 04269
Harmony, and adapting them to work (well) on Android. But even this
takes time!
>will the J2ME classes be supported too?
Sorta. J2ME compatibility won't be built into the main system but will
be (optionally) available as a separate add-on. There are a few
reasons for doing it this way, but the upshot is that you won't be
able to write an Android app while also using J2ME-specific classes.
(Sorry.)
-dan
HIGHLY CONFIDENTIAL- ATTORNEY'S EYES ONLY
Trial Exhibit 251, Page 2 of 2
Oracle America v. Google, 3:10-cv-03561-WHA
GOOGLE-02-001 04270
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?