"We expect that, by 2012, around 62 percent of the whole smartphone market will be open source with Symbian, Android and other Linux flavours."
Roberta Cozza, Gartner analyst
I started using GNU/Linux and Free Software in 1992. In those days, while everything I needed for a working computer was generally available in software freedom, there were many components and applications that simply did not exist. For highly technical users who did not need many peripherals, the Free Software community had reached a state of complete software freedom. Yet, in 1992, everyone agreed there was still much work to be done. Even today, we still strive for a desktop and server operating system, with all relevant applications, that grants complete software freedom.
Mobile telephone systems are not all that different from 1992-era GNU/Linux systems. The basics are currently available as Free, Libre, and Open Source Software (F/LOSS). If you need only the bare minimum of functionality, you can, by picking the right phone hardware, run an almost completely F/LOSS operating system and application set. Yet, we have so far to go. This article discusses the current penetration of F/LOSS in mobile devices and offers a path forward for free software advocates.
A Brief History
The mobile telephone market has never functioned like the traditional computer market. Historically, the mobile user made arrangements with some network carrier through a long-term contract. That carrier "gave" the user a phone or discounted it as a loss-leader. Under that system, few people take their phone hardware choice all that seriously. Perhaps users pay a bit more for a slightly better phone, but generally they nearly always pick among the limited choices provided by the given carrier.
Research in Motion was the first to provide corporate-slave-oriented email-enabled devices. Today, most people using a "smart phone" are using one given to them by their employer to chain them to their office email 24/7.
Apple, excellent at manipulating users into paying more for a product merely because it is shiny, also convinced everyone that now a phone should be paid for separately, and contracts should go even longer. The "race to mediocrity" of the phone market has ended. Phones need real features to stand out. Phones, in fact, aren't phones anymore. They are small mobile computers that can also make phone calls.
Free Software in Nokia Devices
If these small computers had been introduced in 1992, I suppose I'd be left writing the "Mobile GNU Manifesto", calling for developers to start from scratch writing operating systems for these new computers, so that all users could have software freedom. Fortunately, we have been given a head start. Unlike in 1992, not every company in the market today is completely against releasing Free Software. Specifically, two companies have seen some value in releasing (some parts of) phone operating systems as Free Software: Nokia and Google. However, the two companies have done this for radically different reasons.
Nokia likely benefited greatly from the traditional carrier system. Most of their phones were provided relatively cheaply with contracts. Their interest in software freedom was limited and perhaps even non-existent. Nokia sold new hardware every time a phone contract was renewed, and the carrier paid the difference between the loss-leader price and Nokia's wholesale cost. The software on the devices was simple and mostly internally developed. What incentive did Nokia have to release software in software freedom?
In parallel, Nokia had chased another market: the tablet PC. Not big enough to be a real computer, but too large to be a phone, these devices have been an idea looking for a user base. GNU/Linux remains the ideal system for these devices, and Nokia saw that. Nokia built the Debian-ish Maemo system as a tablet system, with no phone. However, the market for these devices has been minute.
Few understand why Nokia took so long to use Maemo as a platform for a tablet-like telephone. But, a few months ago, they finally released one. The N900 is among only a few available phones that make any strides toward a fully free software phone platform. Yet, the list of proprietary components required for operation remains quite long. The common joke is that you can't even charge the battery on your N900 without proprietary software.
While there are surely people inside Nokia who want more software freedom on their devices, Nokia is fundamentally a hardware company experimenting with software freedom in hopes that it will bolster hardware sales. Convincing Nokia to shorten that proprietary list will prove difficult, and the community based effort to replace that long list with Free Software (called Mer) faces many challenges. These challenges increased with the recent Maemo merger with Moblin to form MeeGo.
Free Software in Google Devices
Fortunately, hardware companies are not the only entity interested in phone operating systems. Google, ever-focused on routing human eyes to its controlled advertising, realizes that even more eyes will be on mobile computing platforms in the future. With this goal in mind, Google released the Android/Linux system, now available on a variety of phones in varying degrees of software freedom.
Google's motives are completely different than Nokia's. Technically, Google has no hardware to sell. They do have a set of proprietary applications that yield the "Google online experience", and deliver Google's advertising. From Google's point of view, an easy-to-adopt, licensing-unencumbered platform will broaden their market.
Android/Linux is a nearly fully non-copylefted phone operating system platform where Linux is the only GPL licensed component essential to Android's operation. Google wants to see Android adopted broadly in both Free Software and mixed Free/proprietary deployments. Google's goals do not match that of the software freedom community, so in some cases, a given Android/Linux device will give the user more software freedom than the N900, but in many cases it will give much less.
The HTC Dream is the only Android/Linux device I know of where a careful examination of the necessary proprietary components have been analyzed. Obviously, the Google experience applications are proprietary. There also are about 20 hardware interface libraries that do not have source code available in a public repository. However, when lined up against the N900 with Maemo, Android on the HTC Dream can be used as an operational mobile telephone and 3G Internet device using only three proprietary components: a proprietary GSM firmware, proprietary Wifi firmware, and two audio interface libraries. Further proprietary components are needed if you want a working accelerometer, camera, and video codecs as their hardware interface libraries are all proprietary.
Based on this analysis, it appears that the HTC Dream currently gives the most software freedom based on the Android/Linux platform. It is unlikely that Google wants anything besides their applications to be proprietary. While Google has been unresponsive when asked why these hardware interface libraries are proprietary, it is likely that HTC, the hardware maker with whom Google contracted, insisted that these components remain proprietary. While no detailed analysis of the Nexus One is yet available, it's likely similar to the HTC Dream.
Other Android/Linux devices are now available, such as those from Motorola. There appears to have been no detailed analysis done yet on the relative proprietary/freeness ratio of these Android deployments. One can surmise that since these devices are from traditionally proprietary hardware makers, it is unlikely that these platforms are freer than those available from Google, whose maximal interest in a freely available operating system is clear and in contrast to the traditional desires of hardware makers.
Mobile and the Free Software Community
Whether the software is from a hardware maker trying something new to sell their hardware, or an advertising salesman who wants some influence over an operating system choice to improve ad delivery, the software freedom community cannot assume that the stewards of these codebases have the interests of the user community at heart. Indeed, the interests between these disparate groups will only occasionally be aligned. Community-oriented forks, as has begun in the Maemo community with Mer, must also begin in the Android/Linux space too. We are slowly trying with the Replicant project, founded by myself and my colleague Aaron Williamson.
A healthy community-oriented phone operating system project will ultimately be an essential component to software freedom on these devices. Consider the fate of the Mer project now that Nokia has announced the merger of Maemo with Moblin. Mer does seek to cherry-pick from various small device systems, but its focus was to create a freer Maemo that worked on more devices. Mer now must choose between following the Maemo in the merge with Moblin, or becoming a true fork. Ideally, software freedom is a community-led effort, but there may not be enough community interest, time and commitment to shepherd a fork while Intel and Nokia push forward on a corporate-controlled codebase. Further, Moblin will likely push the MeeGo project toward more of a tablet-PC operating system than a smart phone.
A community-oriented Android/Linux fork has more hope. Google has little to lose by encouraging and even assisting with such forks as its goals include wider adoption of platforms that allow deployment of Google's proprietary applications. Operating system software-freedom-motivated efforts will be met with more support from Google than from Nokia and/or Intel.
Any operating system, even a mobile device one, needs many applications to be useful. Google experience applications for Android/Linux are merely the tip of the iceburg in the plethora of proprietary applications that will be available for MeeGo and Android/Linux platforms. For F/LOSS developers who don't have a talent for low-level device libraries and operating system software, these applications represent a straightforward contribution towards mobile software freedom. On this point, we can take a page from Free Software history. From the early 1990s onward, fully free GNU/Linux systems succeeded as viable desktop and server systems because disparate groups of developers focused simultaneously on both operating systems and application software. We need that simultaneous diversity of improvement to actually compete with the fully proprietary alternatives, and to ensure that the "mostly F/LOSS" systems of today are not the "barely F/LOSS" systems of tomorrow.
Other Systems To Consider
Careful readers have likely noticed that I have ignored Nokia's other release, the Symbian codebase. Every time I write or speak about the issues of software freedom in mobile devices, I'm chastised for leaving it out of the story. My answer is always simple: when a F/LOSS version of Symbian can be compiled from source code, using a F/LOSS compiler or software development kit (SDK), and that binary can be installed onto an actual working mobile phone device, then I will believe that the Symbian source release has value beyond historical interest. We have to get honest as a community about the future of Symbian: it's a ten-year-old proprietary codebase designed for devices of that era that doesn't bootstrap with any compilers our community uses regularly. Unless there's a radical change to these facts, the code belongs in a museum, not running on my phone.
I must also mention the FreeRunner device and OpenMoko. This was a noble experiment: a freely specified hardware platform running 100% F/LOSS. I used an OpenMoko FreeRunner myself, hoping that it would be the mobile phone our community could rally around. I do think the device and its software stack has a future as an experimental, hobbyist device. But, just as GNU/Linux needed to focus on x86 hardware to succeed, so must software freedom efforts in mobile systems focus on mass-market, widely used, and widely available hardware.
Jailbreaking and the Self-Installed System
When we decided to move our office as close to a software freedom phone platform as we could, we picked Android/Linux and the HTC Dream. We carefully considered the idea of permission to run one's own software on the device. In the desktop and server system market, this is not a concern, but on mobile systems, it is a central question.
The holdover of those carrier-controlled agreements for phone acquisition is the demand that devices be locked down. Devices are locked down first to a single carrier's network, so that devices cannot (legally) be resold as phones ready for any network. Second, carriers believe that they must fear the FCC if device operating systems can be reinstalled.
On the first point, the HTC Dream, while somewhat more expensive than T-Mobile branded G1s, permit the user to install any operating system on the phone, and extract no promises from the purchaser. Google has no interest in locking you to a single carrier, but only to a single Google experience application vendor. Offering a user "carrier freedom of choice", while tying those users tighter to Google applications, is probably a central part of their marketing plans.
The second point, fear of an FCC crack down when mobile users have software freedom, is beyond the scope of this article. However, what Atheros has done with their Wifi devices shows that software freedom and FCC compliance can co-exist. Furthermore, the central piece of FCC's concern, the GSM chipset and firmware, runs on a separate processor in modern mobile devices. This is a software freedom battle for another day, but it shows that the FCC can be pacified by keeping the GSM device a black box to the Free Software running on the primary processor of the device.
Seeking software freedom on mobile devices will remain a complicated endeavour for some time. Our community should utilize the F/LOSS releases from companies, but should not forget that, until viable community forks exist, software freedom on these devices exists at the whim of these companies. A traditional "get some volunteers together and write some code" approach can achieve great advancement toward community-oriented F/LOSS systems on mobile devices. Developers could initially focus on applications for the existing "mostly F/LOSS" platforms of MeeGo and Android/Linux. The challenging and more urgent work is to replace lower-level proprietary components on these systems with F/LOSS alternatives.
This article is Copyright (C) 2010, Bradley M. Kuhn, and licensed under the CC-By-SA-3.0 USA license.