For a company that regularly brags about its commitment to open source, Google is remarkably closed about how it develops Android.
The result is occasional shock at a sudden change in direction. The latest example emerged last week, when the Android community stumbled across a major change that appeared in the Android code base last November.
Google confirmed to several sources, including VentureBeat, where I first saw the story, that it is dropping its own implementation of the standard Java libraries that are at the heart of Java, in favor of Oracle's OpenJDK libraries.
That would be ho-hum software-plumbing news, except for the fact that Google and Oracle have been locked in a years-long copyright lawsuit over Google's alleged copyright infringement in those same libraries. Replacing the packages that Oracle claims were copied with open source alternatives minimizes the potential damages to Google if they end up losing the case.
Google (mostly) won round 1 of those trials, but a U.S. appeals court reversed those decisions emphatically, and last summer Oracle confidently expanded its lawsuit to cover 40 major and minor releases over six versions. The timing of the commit suggests that the shift to using Oracle's libraries is at least partially a response to the lawsuit.
The news might have been a surprise to the Android community, but Google has apparently been planning the contingency for almost a year.
Google is, not surprisingly, spinning this development as routine, but former Mozilla CTO Andreas Gal, who competed with Google while developing the Firefox OS, calls it "a huge change [that] will have far-reaching implications for Android and the Android ecosystem."
As Gal explains, Google's competitive advantage with Android stems from its "deep strategic understanding of different classes of open source licenses, their strength, and their weaknesses."
Google's Java implementation -- the one at risk in the Oracle lawsuit -- was licensed under the Apache 2 license, which allows chipset vendors and OEMs to modify library code without having to publicly share those changes.
By contrast, the Oracle-managed OpenJDK library uses the GPL2 license, which requires publishing the source code for any changes a licensee makes. That's bad news for Google and its partners, Gal argues:
Because Oracle has means to control Java beyond source code, OpenJDK is about as open as a prison. You can vote on how high the walls are, and you can even help build the walls, but if you are ever forced to walk into it, Oracle alone will [decide] when and whether you can leave. Oracle owns much of the roadmap of OpenJDK, and via compatibility requirements, trademarks, existing agreements, and API copyright lawsuits (Oracle vs Google) Oracle is pretty much in full control where OpenJDK is headed.
Oracle can easily force Google to include pretty much any other code or service that pleases Oracle. How about Java Push Notifications, specified and operated by Oracle? All Oracle has to do is add it to OpenJDK, and it will make its way into Android. Google is now on Oracle's Hamster wheel.
The implications for the Android app ecosystem are profound. OpenJDK behaves differently from Google's code, which was based on the now-defunct Apache Harmony open-source project. That means extensive (and potentially expensive) testing for app developers, as well as new licensing agreements.
The bottom line, Gal suggests, is that Android N, the next version, is likely to hit serious delays and compatibility problems. "Google is changing engines mid-flight," he argues. "The top priority will be to not crash. They won't have much time to worry about arriving on schedule."
All that uncertainty offers a major opening for Google's main rivals. That includes Apple, obviously, whose late CEO Steve Jobs called Android a "stolen product" and threatened to "go thermonuclear" to destroy the rival OS.
But more intriguing is the prospect that Microsoft could finally get the wedge it needs to build its own version of Android.
Speculation has run rampant for years that Microsoft has plans to build its own Android version. The problem has always been that doing so required that Redmond follow far behind Google's lead. Indeed, that edge is part of Google's business model, as a leaked slide from the 2011 Oracle trial revealed.
"Do not develop in the open," Android boss Andy Rubin told his executive team. "Instead, make source code available after innovation is complete." It's certain that Microsoft would never have been allowed early access to that software.
But in the new world, Oracle is in the driver's seat. As Gal notes, "Silicon vendors will be still allowed to do proprietary enhancements if they obtain the same library code under a difference (non-viral, non-GPL2) license from Oracle -- for a fee."
Microsoft signed a wide-ranging partnership with Oracle in 2013 that both companies are probably willing to extend to include Android. And Microsoft already collects substantial royalty payments from Android handset makers to avoid legal troubles over Microsoft patents. Put those two factors together and you have an incentive for mobile OEMs to willingly drop Google if an alternative appears.
In April 2015, Microsoft announced a partnership with Cyanogen, the scrappy independent that reportedly turned down a buyout offer from Google in 2014 and whose CEO later declared, "We're attempting to take Android away from Google."
It's probably just a happy coincidence that the Cyanogen-Microsoft joint venture delivered its first substantial results a few days ago, with owners of the Cyanogen-powered OnePlus One phone starting to see a new update that contains "deeply integrated features for Cortana."
The Cortana virtual assistant, which is also built into the desktop and mobile versions of Windows 10, is Microsoft's alternative to Google Now and Apple's Siri.
Microsoft can probably never hope to win over Android loyalists, but having its own Android-based OS might appeal to enterprise customers who need to run Exchange, Office, and Azure-based services without the baggage of Google services. And having Cyanogen firmly in the pro-Microsoft, anti-Google camp offers a way to bring the large community of Android developers back to Redmond.