04 May, 2014

"Project Hera": Wish List: Just Call It "Chrome Cordova OS"

On April 6, 2014, rumors surfaced of one of the most dramatic changes to Android to date. Simply put: it would be to Chrome OS what ICS was to Honeycomb, completely dropping Java apps for HTML5 ones and making use of HTML5 to develop Android apps far more seamless than before. Subsequently, on April 9, that rumor was confirmed by an insider's throw-away account on Reddit. Being a long-time analyzer of how Google's OS management ticks, however, I knew this would happen.

Let's be clear: Facebook, Twitter, Instagram, Snapchat, games like Angry Birds and first-person shooters, and countless other big-ticket Android apps have something in common: they ALL are written in either A, HTML5 (in the case of the less-performance-demanding ones), via PhoneGap (and by extension Apache Cordova), to allow seamless rendering of Web content in a mobile fashion, such that they don't have to worry about converting Web UI elements into native ones and back again when moving content from client to server, or B, the NDK (and by extension C/C++), to mitigate performance issues. So, the only third-party (non-Google) Android apps that still use Java -- really -- are old ones for old devices. Add on top of that Java's infamous lack of security that has been a boon for Android malware writers, not to mention Oracle's patent-trolling over Java, and you can see where this is going. Yeah, Java should indeed be phased out on my watch.

The first clue that something along the lines of Hera was in the works actually came in December 2013. Google, knowing how powerful Chrome's packaged app APIs really were, decided to release a series of Apache Cordova plugins that serve as Chrome app API wrappers for easy development of mobile and desktop apps that use the same code... and I knew that was the beginning of a merge. Sundar Pichai, let's not forget, is notorious for his cloud computing expertise... that's precisely why he was able to bring Chrome OS from just a browser with a keyboard into something as awesome as it now is, with Aura, Ash, and all the glory of a desktop OS it simply did not have at the beginning. Now, he's trying to do the same with Android. Which, of course, he indeed took over the management of after Andy Rubin decided to work on some REAL robotics projects that the Google X lab had up its sleeve instead.

What kind of changes does this suggest? Simply put: Now that the basic Chrome Cordova framework is out there, Google is able to use it, along with other powerful HTML5 APIs like WebGL, to completely rewrite Android in HTML5 down to the core framework and launcher levels. Of course, things like the kernel should still remain native, the way they always have been... but anything Java (especially with XML in there, which Android is also notorious for using) is ridiculously easy to rewrite in HTML5+JS (which is NOT the same as Java, mind you) and thus improve consistency between native-like and Web apps. This in turn would make it just as easy for Google to push content from the server to the client and back as it is for Facebook, Twitter, and the like, which should put Android's head closer to the cloud than ever.

This model would also be a boon for Android developers, especially those with Chromebooks, let's not forget... Why, you ask? Because with Hera out, Chrome OS users wouldn't need to get Crouton up and running to develop Android apps. Porting Android's entire user interface to Cordova would allow an Android emulator to run just like a Chrome app, in a browser window... oh, yeah, the same way the iOS emulator is able to run on a Mac: seamlessly. Instead of being VMWare-like, the emulator could just be Crouton-like, and that would eliminate all the performance headaches involved with Android development. Moreover, using the Chrome app APIs, developers can already target a wide range of platforms -- Windows, Mac OS X, Linux, and Chrome OS -- using the same code, the same developer tools, and the same APIs. Hera should make it just as easy for Chromebook users to add Android to the mix, which right now, as the Chrome Cordova documentation mentions, isn't so easy. Simply put: with Hera, it should be just as easy for Chromebook users to develop Android apps as it is for Mac users to develop iOS apps.

Alright, that's the end of my wish list, which based on the rumor mill is probably an accurate one... and if it does come true, sign me up! Got the code, the developer tools, the Google Play/CWS dev accounts... the only thing I'm missing is something other than a Chromebook to get the Android SDK and JDK (impossible to get onto a Chromebook without Crouton) on. Well, now that my wish list has ended... what's yours? Is this a good idea or not? The comments might be a good place to discuss this.