Last week saw the beginning of the Oracle vs. Google trial. Oracle's main complaint, involving a damages claim of $1bn, is that Android's use of 37 Java APIs infringes its copyright in the Java programming language. A separate allegation that Google infringed seven Java patents was whittled down to two patents ahead of the trial, with claims for damages on those expected to be less than $10m. Google maintains APIs cannot be copyrighted, and has tried to frame the case as Oracle's response to its own failure to build a Java-based smartphone platform.
The courtroom slides from Oracle (here) and Google (here) highlight some of the evidence being presented. A second slide-deck, which Oracle also presented, dates from July 2005 and describes Google's early Android strategy. This makes clear the importance that Google placed on Java, and outlines two possible scenarios for dealing with it. The first was developing a clean-room implementation of a JVM and taking a license from Sun. The second was to negotiate the first OSS J2ME license with Sun (slide 9):
In opening statements, Oracle claimed that Google's top executives have long known that they stole a key piece of technology to build Android. Oracle alleges that 103,400 lines of its API specifications appeared on Android's developer website, representing "years of creative design".
Oracle had many choices for what elements and names to include in the APIs. Other than a few classes, Oracle was not required to include any particular element or name.
Google's opening statements tried to frame the case as Oracle's response to its own failure to build a mobile platform. Oracle CEO Larry Ellison admitted under questioning that Oracle had considered building a Java-based smartphone to compete with Apple's iPhone. "The idea was building the smartphone using JavaFX and then charge carriers like Verizon for it," said Ellison. The firm had also considered buying Blackberry-maker Research in Motion, and Palm, before abandoning the idea, feeling that the price for RIM was too high, and that Palm was not competitive. "We explored the idea," Ellison said in court, "and decided it would be a bad idea".
Google CEO Page's testimony began on Tuesday and continued during Wednesday. Page made a couple of comments that caught media attention. One was that he didn't believe Google had done anything wrong. The other was that Android "was good, but not that important" to Google. Many news outlets describe him as taciturn, appearing uncomfortable or evasive as he deflected questions about his role, and he claimed not to remember seeing some of the internal Google documents that Oracle is using to build its case.
Oracle's theme was that Google was the only company using Java APIs without a license. Page said that he wasn't sure "whether we ever got a license" from Sun.
In its evidence, Oracle cited an October 2005 email from Senior Vice President of mobile at Google, Andy Rubin, to Page as an early sign that Google realised it probably would have to pay Sun for using Java in Android.
My proposal is that we take a license that specifically grants the right for us to open source our product. We'll pay Sun for the license and the TCK. Before we release our product to the open source community we'll make sure our JVM [Java Virtual Machine] passes all TCK certification tests so that we don't create fragmentation. Before a product gets brought to market a manufacturer will have to be a Sun licensee, pay appropriate royalties, and pass the TCK again.
Sun has already permitted open source VM projects in non mobile areas - areas where they didn't have a well defined revenue stream. Apache is an example.
Oracle then pointed to a May 2006 email from Schmidt to Rubin as an indication that Google knew it might need to seek other solutions for Android if it couldn't work out an agreement with Sun.
How are we doing on the Sun deal? Its (sic) it time to develop a non-Java solution to avoid dealing with them?
By August 2010 Google still hadn't found a suitable alternative, according to an email from former Sun, now Google, engineer Tim Lindholm, which Google fought hard to exclude from testimony. The email states:
What we've actually been asked to do (by Larry [Page] and Sergey [Brin]) is to investigate what technical alternatives exist to Java for Android and Chrome. We've been over a bunch of these, and think they all suck. We conclude that we need to negotiate a license for Java under the terms we need.
Lindholm acknowledged in court that he wrote the email, but said that his words are being misconstrued, according to a Bloomberg report. When Oracle's lawyer David Boies asked him if he meant he was recommending that Google purchase a license for Java from Sun, Lindholm replied, "No, it was not. It wasn't specifically a license from anyone."
With the focus on whether APIs can be copyrighted, Edward Screven, a Chief Corporate Architect at Oracle, emphasised the importance of APIs to Oracle's business and stated that Google had "fragmented and forked" Java by releasing Android.
Former Sun colleagues Joshua Bloch (Google) and Mark Reinhold (Oracle) both testified on Thursday, discussing APIs and class libraries in some detail. Both observed that the Java language is largely useless without APIs, but Reinhold argued that only a small number of classes are required for the Java language, and that the bulk of the 37 APIs that Oracle claims Google infringed upon are not amongst them. According to CNET, Reinhold also pointed out that each page of the language specification includes a copyright notice. Google maintains that the APIs are not copyrightable, and Google's counsel, Dan Purcell, further argued that 10 of the 37 APIs in question were created with other members of the Java Community Process who were not paid for their work by either Sun or Oracle.
CNET also noted the testimony of Google engineer Joshua Bloch, who admitted to Oracle's lawyer that he had copied some Java code into Android whilst at Google. Bloch was specifically asked whether the 9 lines of "range check" code that he wrote whilst he worked at Sun, was used for Android. "I don't recall," Bloch said. Jacobs showed code for Timsort.java (Android) and Arrays.java (Java), both of which included "range check". Bloch agreed they were almost the same, and admitted that he was aware that Sun copyrighted code during his work there. The Guardian reports that Bloch also stated that API design is "a noble and rewarding craft," with the Guardian's reporter suggesting that this statement "may become critical with Oracle attempting to prove that APIs attract copyright".
Timsort.java has an interesting history. It was ported by Bloch from Python to Java in the middle of 2007, whilst he was not a part of the Android team. Google later contributed the code to the Open JDK under GPL version 2 in 2009. According to Google, the "range check" code is not in the latest Android version.
These two themes continued to be explored on Friday, and Oracle's evidence made it clear that Google spent more than five years trying to either license Java or acquire rights to the language. But, of course, the fact that Google clearly wanted to have a license for Java doesn't necessarily mean they actually needed one. For its part, Google claims that it didn't use any restricted Java code in Android's code. From a code base of around 15 million lines, Oracle claims to have come up with a few hundred lines that contradict this view, including the range check code mentioned above. But the central issue is whether the 37 APIs Oracle claims are copyrightable actually are. The received wisdom in the industry has always been that APIs are not subject to copyright. The implication, therefore, is that if Oracle is successful in this part of the trial then copyright will itself be extended into new areas. A seperate InfoQ article explores this in more detail.
The case continues, and is expected to last around 8-10 weeks. Android chief Andy Rubin is amongst the witnesses for this week.