Tuesday, July 06, 2010

Open Source, it isn't just a buzzword

I have got a few Android phones: in addition to my shiny new Nexus One, I also have a first generation HTC G1, also lovingly called the Dream. It is the very first Android phone to ever hit the market. The latest Android version is 2.2 (Froyo), and vendors are pushing this release to their devices. It is more common to see verion 2.1 (Eclair) on devices. In addition to these version numbers, you might also see versions like 1.6 (Donut) or 1.5 (Cupcake).

The G1 came out with the very first version of the OS: 1.0. A user who bought a G1 with a two-year commitment will see his contract expire in December this year, and there are many users still with G1s. In the space of two years, more than four new versions have rolled by, a remarkable achievement for any platform.

Android is open source, which means that the source code is available for anyone to view. Love the alarm clock but want to change one little thing? Here's the source code for the alarm clock: go right ahead. The source code is a wonderful reference when you want to see how the 'official' applications do things: which can save you hours of reading documentation. I referred to the source code for my recent bug fix in Barcode Scanner, for instance. It saved me hours of experimentation, since I could see how the official Settings program worked. There was nothing to guess, nobody to ask. Most of all, I didn't need anyone's permission.

The general view is that customers don't care whether something is open source, that they're not interested in the source. It might be true that the average customer won't read Android source code, but there is an important distinction here. Even if the average customer can't read the source, the availability itself is valuable. Let's go back to my G1 for a second. The final version of the OS that it can support is 1.6. HTC, the manufacturer, doesn't want to put much effort into this device. They would like to invest their valuable engineering effort in their new products. G1 customers, on the other hand, cannot move so fast. Some are tied to a 2-year contract, and might not want to pay $180 for a new phone. If there are a few smart software engineers with G1 devices, they can probably figure out how to load new versions of the Android Operating System on their phones. Once they get it working, they can make it available for everyone to use.

This is exactly what has happened with community-produced firmwares like Cyanogen. There is a vibrant community of software engineers, who have old devices, and can take advantage of the Android source code. Even if it takes a month of developer time, spread over thirty developers, that is a day each: well within the reach of recreational hacking. They recently released Cyanogen 5.0.8, which is based on version 2.1 of the Android source code. They didn't have to ask anyone for permission, and all the work was done in their spare time. I recently downloaded this release, after using Android 1.5 on that phone for a long time. While I downloaded the release mostly out of curiosity, I was amazed at the effort and the skill of the hackers. It is one of the best Android firmwares I have used on the G1. It is stable, it has all the critical Eclair features, and it supports a few features that Eclair did not have: applications can be stored on the SD card, USB and WiFi tethering is available, and the interface is beautiful. That a few hackers can produce something this good is remarkable. Of course, they didn't have to write everything from scratch: they had the source code. An old device like the G1 is given a new lease on life because of the efforts of a few hobbyist hackers and the existence of the source code. Cyanogen is available to everyone, at no charge, and it is very easy to load the new version on phones. Even if you couldn't read and understand source code, you can get the firmware, load it on your phone, and benefit from the source code being available.

The source code gives customers a lot of control over their destiny. Like Cyanogen, customers can develop their own releases. They can add features (tethering, Apps on SD card) that are missing in the official release. They can remove features they don't need or find offensive (privacy intrusions). They can verify that the source code is not malicious. They can continue development if the original project dies out completely. Something like this is impossible with proprietary systems, where customers are completely at the mercy of the vendor to provide updates, features, and releases.

With Cyanogen 5.0.8, I'm loving the Dream even more. Thanks, Cyanogen!