It took a while and some questioned whether it would ever happen at all,
but, on November 14, Google
the availability of the source for version 4.0.1 ("ice cream sandwich") of
the Android open source
project. This news has been received with a fair amount of celebration,
but also with a certain amount of criticism. Now might be a good time to
think a bit about how Android interacts with the open source community and
whether all of our expectations are where they should be.
What is there not to like about this release? One obvious problem is that
it was so long in coming; there has not been a major Android release since
2.3 came out in December, 2010. Since then, the Android code (with the
exception of the relatively small parts covered by the GPL license) has
been developed and kept behind closed doors. Google's reasons for
withholding the source have been explained and examined many times; some
find them reasonable, while others do not. But it seems clear that the end
result - no Android releases for almost a year - was not a good thing.
Complaints have also been heard about Google's refusal to provide tags for
the "Honeycomb" release that was shipped on a handful of devices. The
official reasoning is that Honeycomb was "a little incomplete" and that
Google would rather see people focusing on the 4.0 release. A focus on the
current code seems likely to happen naturally; it is hard to imagine that a
whole lot of people will be interested in going through the pain of turning
an old and "incomplete" version of the source into something that actually
runs on a device when something newer is available. But there may well be
people who want to reproduce something like the current binary installation
on their devices before proceeding to something newer. Removing the tags
and forcing those people to dig through the history for an appropriate
commit does seem like a bit of gratuitous obnoxiousness.
On the other hand, if Google had really wanted to be difficult, it could
have squashed out that history altogether.
People often complain that Android is not a real open source project. Such
assertions are hard to argue against. Android's governance is very much
controlled by its owning company. Releases of source are routinely
withheld, albeit not usually for as long as was the case for 4.0. To gain
access to the current source - to build a new product, for example -
requires being a Friend of Google and agreeing to its requirements. The
code contains certain antifeatures, such as applications that cannot be
the inability to use cell-tower-based location services without reporting
back to the mothership, that would probably not exist in a truly free
project. And so on; Android clearly works differently than most true,
community-oriented free software projects.
It is worth pointing such things out so that we are all clear on exactly
what the Android project is. It can even make sense to grumble about them
occasionally in the hopes that gentle pressure might cause some things to
change over time. But there also comes a time to simply accept Android for
what it is and make the best of it.
Let us remember that Android represents a gift of a vast amount of code
that is truly free software. That code has become the basis for more open
projects like CyanogenMod, where people have done some very fun things with
it. The advent of Android has coincided with the arrival of a whole range
of devices that are far more open than their predecessors. We now carry
powerful computers with broadband network connections in our pockets, and
we actually have some control over what runs on those computers. Anybody
who wants to build a new platform with Android's capabilities has the
software available to them, free of charge and free to modify.
Linux was doing well in the embedded world before Android; now it is
pushing toward a point of world dominance. Manufacturers design devices with
the idea that they will run Linux from the outset, and, increasingly, their
work is flowing back into the mainline kernel as well. Android may be far
from a traditional Linux distribution, but it's a base that is entirely
capable of running real Linux applications for those who want to do so.
If Android had shoved aside a viable "real Linux" platform in the handset
and tablet space, there might be at least a small basis for complaint. But
it would be hard to argue that platforms like OpenMoko or MeeGo would have
succeeded if Android had not come along and hogged the spotlight. For
better or for worse, nobody has managed to put together an alternative
Linux-based platform that has seen any adoption by the hardware vendors,
and that's not Android's fault.
In fact, even now, there would appear to be space for another mobile
platform. Admiration for Android is not universal, and manufacturers would
love to have another viable option for their products; it should be possible
to establish another contender. There are plenty of Linux-based projects
trying to become that contender; the GNOME and KDE projects both have their
eyes on that market, and Canonical evidently does as well. Whether any of
them (or somebody else) can pull together an offering that succeeds there
remains to be seen. Let us hope they can; it would be a shame if that
space were to be occupied by another fully proprietary system instead.
Meanwhile we do have Android, and Android, for all its faults, is a gift of
great value. It often seems that, as a community, we behave most harshly
toward those who contribute the most to us. Let's not stop talking about
how Android could be a better project from the community's point of view,
but let's also not forget to say "thank you" for all that it is. With the
4.0 release, we once again have a whole bunch of code that we can do great
things with; that merits a big "thanks!" from us all.
to post comments)