BOOOM! Oracle Sues Google

Posted on August 22, 2010



Once again the nerdsphere is up in flames with the recent lawsuit brought by Oracle against Google for violations of the Java patent grants. A link at Slashdot covering the story (and the ensuing displays of nerd rage that can never be missed at slashdot) is found here:

You should have seen it coming dude

Though I would hate to see Oracle destroy the Android platform, Google should have seen it coming a long time ago. Technical merits aside, Google delved into murky legal waters when they started going that way with Dalvik, and implementing a subset of the java core libraries. The former (I believe) can be successfully argued as a legal way of doing things: there is nothing in the Java license that forbids taking Java source code (or Java bytecode) and convert it into some other format. In Dalvik’s case, into the .dex format.

The later, however, this is where – and forgive my Klingon – this is where Google f* it up big time. An analysis of the situation (and the merits of the lawsuit by Neil McAllister) can be found at Infoworld here:

Be it a nerd display of stupidity or a premeditated corporate move to fragment the Java space (yes, Google is a for-profit corporation, and a very nice one by the way), only history will tell (and will probably do so in short time.)

So, if you are fuming and short of breath after reading to this point, put your e-rage and the nerd emotions (not facts, but emotions) pro/against each company for a moment, and let’s get real.

The patent grants are very clear (short link here) covers the terms of usage. Pay close attention to the second and third items:

The Java Lanugage Specification includes this patent grant language:

Sun Microsystems, Inc. (SUN) hereby grants to you a fully paid, nonexclusive, nontransferable, perpetual, worldwide limited license (without the right to sublicense) under SUN’s intellectual property rights that are essential to practice this specification. This license allows and is limited to the creation and distribution of clean room implementations of this specification that:

(i) include a complete implementation of the current version of this specification without subsetting or supersetting;
(ii) implement all the interfaces and functionality of the required packages of the Java 2 Platform, Standard Edition, as defined by SUN, without subsetting or supersetting;
(iii) do not add any additional packages, classes, or interfaces to the java.* or javax.* packages or their subpackages;
(iv) pass all test suites relating to the most recent published version of the specification of the Java 2 Platform, Standard Edition, that are available from SUN six (6) months prior to any beta release of the clean room implementation or upgrade thereto;
(v) do not derive from SUN source code or binary materials; and
(vi) do not include any SUN source code or binary materials without an appropriate and separate license from SUN.

Whether you like them or not, the terms of licensing are pretty clear.

Google’s Android platform operates on a subset of the Java language without implementing the strict set of classes under java.*, javax.* and org.w3c.* packages as required by the license. It does not support the Swing, AWT libraries nor the J2ME stuff. Furthermore, it uses its own library for UI/app design (under the android.* packages).

I know I know, some (if not many) of the obviated classes under the required name spaces are not work sh*t, vestigial organs from a by-gone era. That’s not the point. Here is where it would be in violation of (i) and (ii).

Item iv by itself is not a problem, but many of Android stuff is implemented using Apache Harmony, which has not received a licensed compatible with ASF for running the test compatibility suits (see item iv). As an aside, one would have to wonder the possible foolishness of the ASF to think (or the arrogance to demand with an open letter) for an alternative licensing scheme.

The Dalvik VM does not directly run java bytecode. Instead, suitable bytecode is converted into their internal dex format. And by "suitable bytecode" we mean bytecode obtained from Java-compatible code that adheres to what it is provided in an Android development platform. The Dalvik VM is radically different in that it is a register-based vm (as opposed to the typical stack-based virtual machines implemented by Sun, Oracle and IBM). This necessitates a completely different instruction set.

Even this should not constitute a problem from the point of view of meeting the patent grant requirements. The patent grant requirements do not specify whether a platform compiles into Java bytecode or dex code or even native code. All it matters for the patent grant is that what is implemented is neither a subset nor a superset of what’s provided under the java.*, javax.*, org.omg.* and org.w3c.* packages by a given JDK release.

It seems to me that Google committed a tremendous blunder (considering the precedent of Sun vs. MS with respect to J++). It also seems like another blunder for Google to not come up with its own dev platform (as Sun eventually did with C# and the .NET CLR after the J++ fiasco.)

This is particularly relevant if we consider that Google has more technical reasons that MS did to deviate from the Java (and J2ME) platform. By letting the language name issue being up in the air while at the same time fiddling with what is obviously restricted by the Java patent grant, Google might have just gotten some egg on its face.

With that said, it should not be that difficult to simply put a brand name to the language it uses for development and make it clear that

1. It is *not Java*;
2. it does not require a Java patent grant since they are not claiming to provide a Java platform; and
3. among their development tools, they provide a conversion tool (the dx tool) that converts some, but not all Java code to the dex format.

By doing 1 and 2, they free themselves of the Java patent grant requirements (me think), allowing them to pursue #3 and anything else for that matter without worrying the suits coming after them. This would ensure the long-term viability of Android as a development platform.

All in all, this is a lesson that even very smart companies can pull some really stupid shit. Like it or not, patents and licenses are the rules of the game. You can belabor on the evil of software patents and the semi-divine purity and technical nerdvana that FOSS imbues to those cavalier enough to fight for all that is technical and pure.

Belabor on it till you fall in love with the sound of your clamors: It ain’t matter a rat’s ass. Build your own alternate universe where patents and laws have no power or effect over you, your work, your company, and your ability to keep your engineers’ salaries. On the way of doing so, also alter the laws of physics so that faster-than-light travel is possible, the Grandfather paradox holds no sway, and Schrödinger’s cat is truly dead.

But until you do, you, your company, your employees and business partners, and your competitors exist here, in Lawsuitland.

Skating around patents and licenses simply because the patent’s original holder (in this case Sun) was too weak, distracted and naive (stupid) to uphold them, that is stupid in itself. Why? Because companies can be bought. There is nothing that says future company buyers will be as weak, distracted and naive (stupid) to let you get away skating around the patents and licenses they now legally own.

I do not agree with the remedies Oracle is seeking after Google, but if we really rub a pair of neurons together and the rubbing do the spark, Google has put this entire promising platform that is Android at risk by a premeditated act to fracture Java (technical merits aside) all knowingly of putting the whole thing on shaky legal ground.

I really hope something is resolved that protects the Android platform. But if you want to be angry, be angry at Google. Oracle is simply exercising its legal rights. I might not agree with it, but I will fight for its right to exercise its legal rights.

Google, I love ya man, but you should have known better.