03 April 2009

Android and Open Source

Posted on April 2nd, 2009 in Android Hacking, Android News by Disconnect

A lot of noise has been made recently about Android and it’s “openness” (from both sides.) If you follow me here, or on the lists, or on twitter, etc, you probably already know I have strong feelings on the matter. Although I don’t usually write articles for this site (mostly it is just announcements) I had this one that I didn’t post to the lists. (It got away from me, and was mostly off-topic to the discussion.) I liked it enough to finish it, and so here you go. My take on Android, open source, and how we get this thing from a toy up to world domination.

Lets think about the big players in Android right now. Google, of course, hosts all of the developers. Tmobile and Vodo and company pay all the bills. HTC and others make the handsets, although mostly under contract to the other members. But why? Where is the money supposed to come from? How does open source make money at all? Through the community. Community provides free support, free application coding, free advertising. In an open project, it even provides free debugging, patching, even security auditing. (In the “here’s a fix” style, not the usual “Its jailbroken now!” style..)

Google isn’t doing this out of their love of the community. (That should be obvious from their hatred of the community..) Google is doing this because Tmob (and to a lesser degree Vodofone and company) are paying them to do this. If Google was doing this for love, it would be working in the open and letting dev teams (either internal or external) fork AOSP into the closed source device trees.

Instead, its the other way around, for the simple reason that that is where the fast money is. “We’ll pay you to build us a handset” is what is happening. (”We’ll pay you to work on open source (and give us a couple of custom apps)” is what they claim, and its arguably where they need to be if they are to succeed.) Some very small number of their developers - I would bet fewer than 3 - currently work primarily in the open. They are noticeable because of the large quiet room they are standing in, with empty desks where the other devs should be.

Think I exaggerate? Ask where your open source SDK is for 1.5, and why its not out even though the final 1.5-compatible images already exist. (And the phone is due out in less than a month..) That will tell you where the priorities of Google lie in respect to the AOSP. (Contrast that to an open source release cycle - public bugs, alpha and beta releases, a roadmap that actually goes into the future(!!) ..)

In a successful hybrid open/closed project, the open source releases drive the closed source forks. Witness Apache httpd (open) and IBM httpd (closed). They have the same codebase, and - shockingly - its not the one in IBM’s secret dungeons that generates new releases. IBM does do their own set of releases, but they work just like everyone else - by taking changes from the open tree and integrating their closed code.

Google works with Android in exactly the opposite way - development is done mainly in secret, and occasionally someone takes the time to audit it and dump a huge, unmanagable set of changes into the open source tree. (In all but one case, this comes without including changelogs. And never do outside contributors see relevant discussions, code reviews, etc.) Periodically developers such as jbq volunteer their time to try to make the open project work vaguely correctly without the closed pieces.

So it is, technically, open. But not so fast - you cannot expect to contribute to the community version without knowledge of deadlines, requirements, UI guidelines and so forth that Google will not and can not publish. The closed source trees drive the open source development. (There are a bunch of browser changes in 1.5 - where are those patches in code review? Sure, some of them are there. Most, however, arrived - if they arrived at all - as part of a massive, opaque code dump. The same sort of bulk merging that they - correctly - refuse to do from outside contributors.)

All the handwaving and marketing in the world won’t change the way this is going. Want a happy ending? Push your developers out and make them work in public. Update the truly pitiful roadmap at least every quarter or so. Release binary versions of the closed source apps such as Gmail and Android Market. (Source is too much to ask, its not like this is open source or something.) Let Android users and community members have at least some of the capabilities that you give to rivals such as Apple’s iPhone, Nokia’s Symbian platform, and so many others. Stop talking and start acting.

The only thing Android has right now to recommend itself (to developers, handset manufacturers, carriers and community porters) is the code. The “hey neat” factor will wear off, and at the end of the day Symbian is right: Android is not an open project. Android is a closed source project with a related, incomplete pile of code. And if it is to succeed, that has to change.