One week with Android

Posted on Tue 23 December 2008
Android phoneOne week ago I got a T-Mobile G1, the very first phone powered by Android (thanks Phil!). Being the CTO of a mobile-oriented company, I see and use lots and lots of phones. All "iPhone killers" I had in my hands before the G1 were quite crappy (don't get me started on the Samsung Player), but that one is definitely different.

The G1's touch screen is as sensitive as the iPhone's, the usability is very close to that of an iPhone, and it has a similar set of built-in applications, including an application catalog. So the comparison definitely makes sense. Where the G1 falls short though is the hardware itself, which isn't pretty and not even as good as other HTC phones. But Android is an open source operating system, and lots of manufacturers have  joined the club so we can expect shiny devices to appear soon.

One very nice Android feature is the notification bar. When an application wants to notify the user that something has happened in the background (incoming email, IM, application download, etc), a little icon appears in the top bar and you can "open" that bar to browse through notifications and launch the corresponding applications.

Android can't run J2ME midlets and hence can't run the Goojet client application. So I started writing a specific client with the Eclipse-based SDK. It just took me a couple of hours to have the first version running, thanks to the WebView user interface widget that is a simple wrapper around a WebKit browser, and the fact that it is Java.

Compared to our iPhone application, also based on WebKit, developing on Android is way easier for a Java developer. You don't have to learn Objective-C, Interface Builder and be forced to use a Mac (although it's been my computer of choice for years). And once the application is built, you don't need complex signing procedures and insane validation (our application got rejected 2 times already for minor problems).

The application architecture of Android is really powerful, being centered around a message bus that allows applications to listen to and contribute to other applications and components. The system provides lots of reuse and extension points. For example, it was rather trivial to plug Goojet in the "Share picture via..." command of the photo application in addition to the existing "Mail" and "Instant messaging" options, or allow adding shortcuts to our widgets on the phone's home screen. At a lower level, the security model is very clever in its simplicity: every application runs as a different Unix user, and that user belongs to groups related to the permissions granted to the application. No need for sandboxing or code verification, all this is handled by the Linux kernel!

So, bad things about Android? From the user point of view, beyond the fact that the G1's design isn't shiny, and I'm not a big fan of white text on a dark background which is the standard color scheme. I'm also missing the "pinch" and other multi-touch gestures of the iPhone, which aren't present most probably because Apple patented them.

From a developer point of view, the documentation is scarce and a bit confusing (I want a proper Javadoc with frames!), but since it's open source, you can browse the code of the built-in applications for non-trivial examples which helps tremendously. There is also some strange usage of XML namespaces and weird text escaping in resource files. But overall it's a really pleasant and productive experience, and I should mentioned on-device debugging which is as easy as connecting the phone to the computer with a USB cable.

As a conclusion, my impression is that Android will really change the phone market, building on the road opened by the iPhone: a friendly user interface, lots of communication features. But on top of that it adds an easy development environment and no vendor lock-in. So I think the iPhone will keep its luxury design market niche, BlackBerry will stay for a while because big companies like it, Nokia will keep on using Symbian, but most other smartphones will run Android, and Windows Mobile will finally die.

How is Google going to make money out of Android is still unclear to me. Is it through the application store, where they will also keep 30% of the price like Apple does? This is a quite different revenue model from their current core business. There are certainly preparing location-based services, some sort of geo-adsense that will suggest interesting things depending on where you are and what they have learned from you by scanning your email and instant messages. And as usual, people will be ok with giving away a lot about them for nice services and features.

Mario Kart is alive!

Removing HDMI overscan on a Sony HDTV