

Android is the new Google-owned and sponsored Open Mobile Phone Development Toolkit. It is in its infancy and, as such, Google is really reaching out to try to build a nice ecosystem around it. They sponsored an all-day class and hacking session on it in Cambridge, MA on Sat Feb. 23.
Google is really doing its best to sign up all the players in the mobile phone industry - and encouraging those players to donate intellectual property (codecs, etc) to the effort. Where possible, they are making things open-sourced with the Apache 2.0 license (one of the least restrictive licenses). In addition to this, they have one of the famous Google challenges going to generate interest in Android - they will be giving away $10M to promote app development in Android.
They are doing this because they see tremendous inefficiencies with how software is deployed in the mobile market. Right now, each carrier gets to determine what apps run on what phones on their network. If you are a small software provider, you spend way more time worrying about testing your apps on different networks with different phones and negotiating with different carriers. It has become a huge barrier to innovation and with a 3 billion user world wide market versus a 1 billion user world wide market for PCs, the mobile phone market is screaming out for innovation. It is the largest bit of processing power that most people in the world own.
The technical details are impressive - they have built everything on a linux 2.6 kernel - and targeted it for ARM processors mostly (e.g. the byte code generated by the Java compiler is really optimized for the way that ARMs like to process instructions). They have made a lot of mods to the 2.6 kernel for the ARM that they have fed back into the tree. They have drivers for USB, wifi, bluetooth, flash, audio, camera, keypad, display, etc.
They made their own custom libc that is more of a bsd-based libc. They didn’t get into much of the details as to why they did this or what they specifically did. There are many other libraries that are included with the platform - openGL, SGL, SSL, SQLite - and, of course, and integrated browser based on the open source WebKit. The Application Framework and the runtime was the focus of the day. It is all Java-based and there are no current plans to do a C or C++ mapping. The Java runtime is based on the Dalvik virtual machine - which, as mentioned above, has optimizations for the ARM architecture and a minimal memory footprint. The additional Java packages available for apps developers are things like a package manager, an activity manager, a notification manager, location manager, etc.
Finally, there are a core set of apps that have been developed that are delivered as part of the whole SDK. In addition to the SDK, there is an emulator available to run any apps you might develop since actual hardware running android is not out yet. They have a pretty neat paradigm for app development that is explained here.
Before the class, I downloaded their SDK, the Eclipse development environment with all their plugins, etc and wrote and ran a “Hello World” program. Google solidified itself as my favorite company by making this event free AND giving all 300 of us breakfast, lunch, and a t-shirt. Yow!
I saw Hal Abelson there - my 6.001 professor - and general god of computing.
If Android is at all successful, there will be many people hacking Java apps with Activities and Intents, etc - but there will also be a neat opportunity here for companies that have knowledge of the Linux kernel, writing drivers, and dealing with the ARM processor - all stuff that is, lucky for us, right up Echo’s alley. As Rich Miner - the platform manager for Android - said, “Phone makers and Carriers know nothing about software”. If they move to an open platform like Android, they will need lots of core competence in the technologies that it is based on.
Tags: Linux, Software // Add Comment »