Friday, January 01, 2016

Telirati Analysis #17: Google jukes around Oracle's copyright play, and what Oracle is missing out on

Android is client Java

Android applications are, by several orders of magnitude, the dominant form of client Java software. The only widely used interactive Java applications, other than Android apps, are integrated development environments (IDEs) which are big, complex software creation tools.

Oracle is breaking the business of software creation

Oracle, which now owns the leading proprietary implementation of Java, should be grateful that client Java has been revived. Instead, Oracle has decided this is an opportunity to litigate poorly established parts of intellectual property law, vexing Google, Android developers, and tool-makers in the Android ecosystem. Oracle has made various claims, one of the most destructive to software development in general is that software interface specifications, usually known as "APIs" or "application programming interfaces" can by copyright protected.

This claim is deleterious to the whole software business and nonsensical. It is like claiming that the information that your washing machine uses 3/8 inch bolts to mount the motor is covered by copyright. It is longstanding doctrine that facts like the size of a bolt can't be copyright protected from dissemination. Similarly, the symbolic names and data types used in method calls has, for decades, been assumed to be a similar set of facts. Oracle may, however, succeed in lawyering this into a point of contention.

If Oracle prevails, many published APIs will come under copyright claims and license fee demands. This is an industry-wide disaster in the offing.

Fortunately, Sun liked the GPL

Sun Microsystems has been of two minds about Java, sometimes claiming it is proprietary and sometimes working to assure the software industry that it is an open standard. To promote the latter, they created OpenJDK, an implementation of Java licensed under the GNU General Public License, an open source license that strongly discourages claims of proprietariness in derivative works. This is in contrast to the Apache license Google adopted for all the non-proprietary parts of Android that Google created, which allows OEMs and integrators to hold their enhancements to Android as proprietary code.

Where's the Java?

We've used the name "Java" loosely. Most people would say "Android runs Java," but, strictly speaking, that's not true. There is no Java in an Android device. All the Java bytecode in an Android application is converted to Dalvik bytecode before being packaged in an "apk" file. The Android runtime environments (Dalvik and ART) don't know anything about Java bytecodes. It may look like Java code is being executed with the expected Java-like semantics, but it isn't.

So, where's the Java? Up to now, you had to get the Oracle a certain version of the JDK (Java development kit), freely available from Oracle's web site, in order to create Android software. That's because Android used interface specifications from the Oracle JDK.

Google embraces OpenJDK

By embracing OpenJDK, Google has sidestepped potential licensing demands, at the cost of having to step up and contribute to an open source project that hasn't kept up with the proprietary JDK. This is good for Google, even though it should not have been necessary, and it is good for all Java developers, because it prevents Oracle from imposing licensing fees on anyone using the Oracle JDK. It is also a step toward an open and unencumbered Java standard.

And that's a pretty good beginning to a New Year of Java development.

What should Oracle be doing?

Oracle's stand has been spiteful, contrary, and vexing to the whole software industry, which relies on the ability to use information about APIs. Oracle is willing to overturn many apple carts just to mess with Google. This is a management style that is on it's way out in the software industry, and it paints Oracle as a has-been, fighting a rearguard against nosql databases eroding the grip it had on the database business. The web doesn't need Oracle, and Oracle appears to be thrashing about, lawyering for money instead of making new things to sell.

Imagine what Oracle could have done by cooperating with Google: Development tools, Java technologies, and vast new product areas to extract new revenue streams. Many of these opportunities have passed by due to Oracle's litigiousness. Being a ruthless bastard is one of those strategies that can be made to look good for a while, and then it stops being effective and turns into a burden.