Days after making waves in the nascent social networking pond with its OpenSocial initiative, Google just cannonballed into the much larger world of mobile phones. Today Google announced the Open Handset Alliance, a consortium of over 30 technology and mobile companies, and Android, an open source software stack for mobile devices. A developer SDK for Android will be available on November 12th, and phones (gPhones?) that conform to the Android standard are expected in the second half of 2008.
Andy Rubin (of Sidekick fame), Director of Mobile Platforms at Google, says that the Android platform will include "an operating system, user-interface and applications -- all of the software to run a mobile phone, but without the proprietary obstacles that have hindered mobile innovation." The goal? "A better and faster pace for innovation that will give mobile customers unforeseen applications and capabilities."
Under the covers, the new platform is built on the open Linux Kernel, created by Linus Torvalds. Linux is licensed under GPLv2, but the rest of Android will be covered by the Apache v2 license. From the FAQ:
Why did you pick the Apache v2 open source license? Apache is a commercial-friendly open-source license. The Apache license allows manufacturers and mobile operators to innovate using the platform without the requirement to contribute those innovations back to the open-source community. Because these innovations and differentiated features can be kept proprietary, manufacturers and mobile operators are protected from the "viral infection" problem often associated with other licenses.
Android will use a publicly accessible repository, with module owners similar to how the Linux kernel is managed. However it will likely be a central repository hosted at Google.
Various Open Handset partners will be contributing parts of the new platform. For example,
- Ascender will provide a collection of fonts for use by the system and third party applications
- Nuance will provide the software to implement voice commands
- PacketVideo is contributing OpenCORE, software that supports music applications, video creation and playback, podcast services, and real-time streaming
- SONiVOX is contributing its audioINSIDE technology, which includes General MIDI instrument sets, audio codecs and effects, interactive game audio (think DirectMusic without Microsoft), and ringtones
One question that remains unanswered at this point is how developers will program the platform, i.e., what language they will use. Sun CEO Jonathan Schwartz congratulated Google on "their new Java/Linux phone platform, Android". The web pages for Android say that the system "utilizes a custom virtual machine that has been designed to optimize memory and hardware resources in a mobile environment", and that sounds like Java. But if Java is part of the equation, it almost certainly won't be from Sun because Sun's mobile Java stack is all GPL. Perhaps they're planning to include Harmony, the Apache-licensed open source implementation of Java that has yet to be used anywhere outside of a few demonstration projects.
My guess is that the platform will be primarily programmed in C, with Java (and other languages) as an option. The inclusion of Wind River as an alliance partner points to C, since they market a commercial Eclipse-based C development system and Google says that tools will be included. Another partner, Esmertec, says that "Beyond Open Source of Android, Esmertec's leading edge Jbed Java Virtual Machine (JVM) platform can easily be made commercially available per customer request for the Alliance 's mobile platform." Jbed lets you run standard Java ME applications, but it's not open source.
Some have speculated that Apple might support Android on the iPhone. I think that's unlikely given that the iPhone is based on MacOSX which has its own unique programming interfaces. Apple's XCode tools are based on Objective-C, which almost nobody but Apple uses any more. Maybe eventually virtual machines will make their way to handsets, and you'll be able to have Windows CE, PalmOS, Android/gPhone, Symbian, and MacOS/iPhone, running at the same time. Not that you'd really want to.