Day four of Oracle's copyright and patent lawsuit against Google's Android OS brings a lesson in API design and programming that even the judge declares 'confusing.'
Oracle v. Google: The Evidence
(click image for larger view and for slideshow)
Oracle and Google continued their legal battle in San Francisco federal court on Thursday, beginning the day with a tussle over the authenticity of Java code that Oracle claims to have downloaded from Google's website on March 12.
Oracle says the file shows that Google has not removed the allegedly infringing Android code from its public website as Google claims to have done. Google wants some assurance that the file really was downloaded then.
"Are you saying it has been forged?" Judge William Alsup asked skeptically.
Not at all, Google trial counsel Daniel Purcell answered. Google's interest in receiving formal verification of the file from Oracle arose out of having only received notice of this file several days ago, he suggested.
The judge settled the matter by stating that someone will be made available to attest to the legitimacy of the file at a later time. Then he scolded the two sides for their intransigence.
"This is something you should've figured out overnight, c'mon," he said, reinforcing accounts that have characterized him as a no-nonsense jurist.
Mark Reinhold, Oracle architect for the Java platform, returned to the witness stand to continue his explanation of the distinction between the Java language--freely available for use--and the Java APIs, which are the detailed specifications that describe valid uses of the Java language.
Oracle is seeking damages from Google for using a subset of its copyrighted APIs without authorization, and for alleged patent violations.
Cross-examination from Purcell blurred the clear lines that Reinhold had drawn under questioning from Oracle to distinguish between the Java language and the Java APIs. Purcell twice asked that video depositions of Reinhold be played in which his definitions of the boundaries of Java and its APIs differed from the definition he offered in court.
Purcell also had Reinhold acknowledge that some 10% to 20% of Java's API have been written by contributors outside of Sun or Oracle, contributors who were not paid by Sun or Oracle. The implication is that perhaps some of the Java API copyrights may not be valid.
It was enough that Oracle attorney Michael Jacobs asked the court to instruct the jury there's no ownership dispute about Oracle's copyrights in the case. But clearly Google is raising that question and the judge wasn't immediately ready to accede to Oracle's desire to take the question of ownership off the table.
In one of its filings Google asserted: "Computer programming languages are not copyrightable, and neither are Oracle's APIs." So this issue is sure to be raised again.
After Reinhold was excused, Oracle called Joshua Bloch, chief architect at Google, to question him about his views on the importance of good API design. Bloch affirmed that programming is creative, which helps support the notion that code should qualify for copyright protection.
"Writing a program is very much a creative process," Bloch said.
Under questioning from Jacobs, Bloch acknowledged that the Timsort.Java API he'd created for Android was virtually identical to a similar range checking API, Arrays.Java, that he'd written for Java while working for Sun.
Is that copyright infringement? That's what Oracle hopes to establish, but that point has yet to be settled, in part because the boundaries of where the open Java language ends and the proprietary Java APIs begin remain a matter of disagreement.
Bruce Baber, counsel for Google, countered the notion that Bloch had copied Java APIs by asking him whether he had any creative freedom when re-implementing an API, as Google did with Android.
InformationWeek Must Reads Oct. 21, 2014InformationWeek's new Must Reads is a compendium of our best recent coverage of digital strategy. Learn why you should learn to embrace DevOps, how to avoid roadblocks for digital projects, what the five steps to API management are, and more.