Android without the mothership

This article brought to you by LWN subscribers Subscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible.

The success of Android has brought Linux to many millions of new users and that, in turn, has increased the development community for Linux itself. But those who value free software and privacy can be forgiven for seeing Android as a step backward in some ways; Android systems include significant amounts of proprietary software, and they report vast amounts of information back to the Google mothership. But Android is, at its heart, an open-source system, meaning that it should be possible to cast it into a more freedom- and privacy-respecting form. Your editor has spent some time working on that goal; the good news is that it is indeed possible to create a (mostly) free system on the Android platform.

One might well wonder why this goal is important to some. After all, Google's services define the Android experience; disconnecting from them can only leave an Android device with fewer features and capabilities. There are a few reasons, starting with the fact that some users simply do not trust Google at all and do not wish to share with it the details of their social connections, email interactions, physical movements, and more. Others may trust today's Google while fearing what the company could become after a management change. Regardless of the level of trust, the concentration of personal information found at companies like Google cannot help but attract the attention of governments and criminal organizations. One need not reach the tin-foil-hat level of paranoia to want to opt out of that arrangement.

There is also the simple fact that Google has repeatedly shown a willingness to shut down its (free of charge) services. As this history of Android recently posted by Ars Technica shows, Google-attached Android devices have a finite lifespan; after a while, the remote support they need to function will simply not be available. Depending on free services from others carries certain risks; some of those risks can be avoided by taking a more active role in the selection of the services one depends on.

That said, there is, beyond doubt, a great deal of functionality and convenience built into an Android device. Those of us who remember losing our contacts along with a phone do not wish to go back to those days. Disconnecting from Google can only mean losing some of those features. The important questions are: what's left, and what can be replaced?

Building a Google-free device

For those who want a 100% free Android experience, the Replicant project offers images for a handful of devices. But this project does not appear to have a vast number of developers; releases tend to be slow (the last was 4.2 in January) and a fair amount of functionality is missing. For most users, Replicant is probably not the way to go at this time.

Instead, for most, the starting point for an alternative Android device will be a CyanogenMod release. CyanogenMod is not 100% free; in particular, it contains whatever non-free drivers and firmware are needed to make a specific device work. But, above that level, CyanogenMod is free; it is mostly a build of the Android Open Source Project (AOSP) release with a bunch of added goodies. Google's proprietary user-space apps and utilities are available, but they must be downloaded and installed separately. It seems certain that the vast majority of CyanogenMod users immediately do that installation, but it is not necessary to do so. Your editor started this experiment with a fresh CyanogenMod 11.0 M7 release without installing the Google apps.

Leaving out the Google apps will deprive an Android device of much of its functionality. In many cases, such as with Gmail, Google+, GDrive, etc., these apps will be something that one has already decided to live without as part of a plan to disconnect from Google. In other cases, the loss of functionality hurts more. That said, a bare CyanogenMod installation provides a highly functional device. Most of the basic functionality that one might need is there; all that is left is the task of filling in the rest.

Perhaps the first missing feature that will be noticed by many is the app for the Google Play Store — the app used to download and install everything that is not on a device by default. This is a proprietary app that will refuse to function unless the user is logged into a Google account; most of what it installs is also proprietary, of course, and, increasingly, Play Store apps depend on on the proprietary Play Services layer. So the Play Store is not really an option for this use case. (Interestingly, the CyanogenMod 11.0 M7 installation included the Play Store app; from your editor's understanding, Google's licensing says that it should not be there at all, so its presence was a bit surprising.)

So one of the first post-installation steps is to get set up with another app repository; that generally means installing the F-Droid app. The F-Droid repository is limited to free software, though some of the apps may rely on non-free dependencies or services. At a little over 1,000 apps, it is rather smaller than the commercial app stores out there, but it has many of the essentials needed to bring a Google-free device up to full functionality.

Replacing Google apps and services

While it is certainly possible to keep contact and calendar information locally on an Android device, chances are that most users will want to have that information backed up to a server somewhere and synchronized across all their devices. Naturally, if Google is cut out of the picture, Google will not be providing those synchronization services. Happily, the contact-management and calendar code built into AOSP handle these tasks nicely, with no need to install any additional software — if one has a server on the net somewhere to synchronize with. There are a number of alternatives for people wanting to set up their own servers, including ownCloud and Kolab. Commercial services exist for those who do not want the trouble of maintaining a server on the net; your editor set up an account at MyKolab.com for this purpose.

The instructions provided by MyKolab for setting up synchronization were straightforward enough. For users with information in Google currently, it is easy enough to extract that information and upload it into MyKolab. The end result is contact and calendar synchronization that Just Works and which is outside of the Google sphere. This sort of arrangement might be a good option even for people who do not want to cut the connection with the mothership entirely, but who want to back up their contact and calendar information in a more private place.

The Chrome web browser is not available in CyanogenMod, but CyanogenMod does have the classic "Browser" app that was the standard Android browser not that long ago. This browser is entirely capable; for those wanting more, the Firefox browser is available through F-Droid. For email, the standard Android email client comes with CyanogenMod, but most users will likely want to install the K-9 Mail client instead. K-9 is not an ideal mail client, but it does slowly get better with time. Of course, one needs mail hosting somewhere else on the net to be able to use clients like K-9; such services are available from a wide range of providers for those looking to get away from Gmail without having to set up their own mail server.

Simple file synchronization, like that provided by GDrive or Dropbox, is an important feature for some users. It can be useful to synchronize documents across devices, say, or to automatically upload photographs to a server. The best option would appear to be the ownCloud client, though that, naturally, requires the availability of an ownCloud server on the net. There is also an app for the (discontinued) Ubuntu One service, but that is not likely to please large numbers of people.

One of the hardest applications to replace might be Maps. There are a couple of mapping and navigation tools available in F-Droid; of the two, OsmAnd appears to be the better bet. OsmAnd offers high-quality, audio turn-by-turn navigation; the route planning is fast and it reroutes quickly when the need arises. The ability to download maps and operate offline can be helpful in places where coverage is spotty or expensive. The map data itself comes from OpenStreetMap, so the quality can be variable but is, as a rule, quite high.

On the other hand, the user interface to OsmAnd is confusing and difficult to use. Finding destinations by address is a hit-or-miss affair, and the extensive search capabilities found in Google Maps are absent. The audio instructions are often strange; a sharp left turn (seen in the screenshot to the left) was accompanied by an instruction to "make a U-turn" followed by a right turn. The maps themselves can be cluttered to the point of being unreadable (see example to the right). The core application is open source, but some features are reserved for a proprietary premium edition. Satellite imagery is not available. And so on.

For those who like the configurability and the use of OpenStreetMap data and who are willing to deal with occasional quirks, OsmAnd could well be preferable to the Google Maps app. For the (presumably larger) crowd that just wants to find a nearby sushi bar and be told how to get there, the lack of a full replacement for Maps could be the one factor that keeps them in Google's embrace.

For those who like the video-calling features found in apps like Hangouts or Skype, there are not a lot of alternatives in the Google-free world. A couple of SIP phone clients claim to be able to do video calling, but, it goes without saying, the number of people who can be called with such a client is relatively small.

Beyond that, though, almost any user will miss at least one app that would otherwise be available via the Google Play Store. Just like putting Linux onto a desktop system means giving up the world of proprietary Windows software, setting up a detached Android device means doing without the wide range of apps out there. Even apps that might run happily on a system without proprietary Google software may simply be unavailable; since most devices only allow installation from the Play Store, most app developers do not make their work available anywhere else.

Given that the number of users who go out of their way to install restricted versions of Android must be quite small, it is perhaps surprising that the Android free software community is as successful as it is. Getting the base system from AOSP is clearly a nice start, but there is a wide variety of free add-on software available; much of it is quite capable. A fully free system that is not attached to any company's data centers is attainable now. One can only imagine what might be possible with (1) a bit more attention toward making such systems easy to install and (2) more awareness of the value of such devices. There is a lot to be said about the virtues of a Google-attached mobile device, but it would be good to have well-established alternatives.

(The Free Your Android site is a useful resource for those wanting to pursue this idea further.)

