Original URL: https://www.theregister.com/2010/11/01/oracle_hits_google_with_code_copying_claims/

Google's 'copied Java code' disowned by Apache

Dis-Harmony from Oracle's Android suit

By Cade Metz

Posted in Software, 1st November 2010 00:01 GMT

When Oracle sued Google over Android, many assumed the database giant would target code Google lifted from the Apache Foundation's open source Java incarnation, Project Harmony. But Oracle just pinpointed six pages of Google code, claiming they were "directly copied" from copyrighted Oracle material, and according to Apache, this code is not part of Harmony.

"Recent reports on various blogs have attributed to the ASF a number of the source files identified by Oracle as ones that they believe infringe on their copyrights," the Foundation says in a Friday blog post. "Even though the code in question has an Apache license, it is not part of Harmony."

On Wednesday, Oracle unloaded a new court filing in which it specifically claims that Android's class libraries and documentation infringe on its copyrights, and that approximately one-third of Android's API packages are "derivative" of Oracle's copyrighted Java API packages. With its filing, the database giant claims that in some instances Google directly copied Oracle code, and it includes code samples in an attempt to prove its point (see next page).

Suit watchers continue to argue over how similar the code samples really are. And many mistakenly assume that the code came from Harmony.

As Google pointed out in its answer to Oracle's suit, Android's Dalvik virtual machine uses a subset of Harmony. "The core class libraries of the Dalvik VM incorporate a subset of Apache Harmony, a clean room, open source implementation of Java from the Apache Software Foundation," Google's court filing reads. But it also points out that other parts of Android, including portions of Dalvik, were independently developed. And Apache makes it clear that the code in Oracle's filing is not from Harmony.

"The code in question has an header that mentions Apache, and perhaps that is the source of the confusion," its blog post says. "The code itself is using a license that is named after our foundation, is in fact the license that we ourselves use. Many others use it too, as the license was explicitly designed to allow such uses."

But Project Harmony may still provide a window into Oracle's strategy. It would seem that Oracle is hoping to hit Google through the Java Technology Compatibility Kits (TCKs), those closed-source Java bits at the heart of a long-running dispute between Sun/Oracle and Apache.

Code unload

In August, Oracle sued Google over Android, claiming the mobile OS infringes on seven Java-related patents as well as various copyrights. With its initial suit, Oracle backed its infringement claims with few details. It merely alleged that Google was infringing with Android's Dalvik virtual machine and the Android software development kit, and perhaps additional portions of the OS.

According to Breton Bocchieri, a patent lawyer with the international law firm Seyfarth Shaw, Oracle' s approach was hardly surprising — at least where the patent infringement claims were concerned. "If you have a direct infringement count, you don't have to specify exactly why the claims are made," he says. "This is not unusual."

Google eventually answered the suit, insisting that the mobile OS does not violate Oracle's patents. And it filed a motion to dismiss the copyright infringement claim, saying that the database outfit hadn't provided the necessary specifics about what code was infringing which Oracle copyrights and how. So, with Wednesday's filing, Oracle provided additional details.

"The infringed elements of Oracle America’s copyrighted work include Java method and class names, definitions, organization, and parameters; the structure, organization and content of Java class libraries; and the content and organization of Java’s documentation," the filing reads. "In at least several instances, Android computer program code also was directly copied from copyrighted Oracle America code."

The filing includes six pages of comparisons beween Google code and Oracle code, including this snapshot:

Oracle Google code comparison

Oracle accuses Google of code lifting (click to enlarge)

Google did not immediately respond to a request for comment on Oracle's latest filing. But judging from its previous court filings, the company will likely claim that Oracle is leaning on copyrights for open source code.

In its motion to dismiss Oracle's copyright claim, Google pointed out that Oracle's original suit named only two specific copyright registrations: one for "Java 2 Standard Edition 1.4" and "Java Standard Edition, Version 5.0." It also pointed out that both of these have been open sourced. "These registrations appear to relate to versions of certain Sun Java materials that were released as open-sourced software in 2006 and 2007," Google's motion to dismiss reads.

But as Groklaw points out, there's a rub. Or two.

Sun/Oracle licensing includes "field of use" (FOU) restrictions that — among other things — prevented the Java TCKs from running on mobile devices, ensuring that Harmony can only be used on desktops. Oracle could end up arguing that Google has violated the FOU restrictions. Android, after all, is a mobile OS.

What's more, Oracle has accused Google of violating copyrights on Java documentation, and it's clear that the documentation cannot be redistributed.

Open argument

In response to Oracle's initial complaint, Google dubbed it "baseless" and accused Ellison and company of attacking the open source community. "The open-source Java community goes beyond any one corporation and works every day to make the web a better place," it said in a statement. "We will strongly defend open-source standards and will continue to work with the industry to develop the Android platform."

Then, in its official answer to Oracle, it accused the database outfit of a certain open source hypocrisy. As Google pointed out in its court filing, Oracle called for Sun Microsystems to fully open source Java in 2007, but then reversed course following its acquisition of Sun. "[Oracle has] ignored the open source community’s requests to fully open-source the Java platform," the filing said.

On one level, Google is attempting to win favor by playing the open card. Google discusses Oracle's Java past in the "factual background" section of its filing, and in some respects this is mere, well, background. "These are claims in which Google is trying to provide context and a foundation for the rest of its case," Bocchieri says. "It remains to be seen how it will weave them into a legal defense...it's background, and that's what Google calls it. It's extra."

Claims of Android openness aren't always what they seem. Most of Android, including the Dalvik virtual machine, is open sourced under an Apache license. But in creating its own virtual machine, rather than just licensing Java, Google creating a world in which Java apps written for Android only run on Android, undermining Java's original mission.

"In developing Android, Google chose to use Java code without obtaining a license," reads a statement from Oracle in response to Google's filing. "Additionally, it modified the technology so it is not compliant with Java's central design principle to 'write once and run anywhere.' Google's infringement and fragmentation of Java code not only damages Oracle, it clearly harms consumers, developers and device manufacturers."

And then there's the truth that Android isn't as open as Google would like you to believe. Portions of the OS are closed, including the Android Marketplace and apps such as Gmail and Google Maps, and Google is careful to develop the latest version of the OS behind closed doors. Because certain tools are closed, Google maintains ample control over the design of handsets.

But Google's "open" discussion is about more than PR. In pointing out that Oracle once called for complete Java openness, it may be looking to counter any argument Oracle makes about the TCKs. Oracle once insisted that the TCK's be open sourced so they wouldn't be used to discriminate against compatible implementations of Java, Google said, but now refuses to open source the TCKs.

The rub — there's always another rub — is that Dalvik is not a compatible implementation of Java. It's an entirely separate VM. ®