Android is a Google product—it's designed and built from the ground up to integrate with Google services and be a cloud-powered OS. A lot of Android is open source, though, and there's nothing that says you have to use it the way that Google would prefer. With some work, it’s possible to turn a modern Android smartphone into a Google-less, completely open device—so we wanted to try just that. After dusting off the Nexus 4 and grabbing a copy of the open source parts of Android, we jumped off the grid and dumped all the proprietary Google and cloud-based services you'd normally use on Android. Instead, this experiment runs entirely on open source alternatives. FOSS or bust!

Before we begin, we have a few slight notes. FOSS stands for "free and open source software," and when we say "free" we don't mean free of cost, but free of restrictions. It's software that we can do whatever we want to, including copy, modify, and redistribute.

But, wait... did we say we'd dump "all" services? Not going to happen. Almost instantly, we had to compromise our open source ideals due to hardware. The SoC in the Nexus 4 is made by Qualcomm, and many of the drivers for it are closed source (this is the case with nearly all smartphones, not just our sacrificial Nexus 4). The firmware and drivers for the cellular modem, Wi-Fi, Bluetooth, GPS, NFC, and camera are closed source, too. The CyanogenMod repository has a list of closed source drivers in each device branch called "proprietary-blobs.txt." You can see the list for our Nexus 4 here, which is 184 items long.

These chunks of proprietary code come from the component manufacturers themselves (Qualcomm, Broadcom, Synaptics, Sony, Samsung), and seeing what's in them usually requires you to be a big developer with an NDA in place. While some of this code is locked down for competitive reasons, there's also a concern that modifying the firmware for basic components could damage the device or, in the case of the modem, disrupt the cellular network. There is really no escaping proprietary component firmware on any device (though some are trying), so we had to hold our nose and just deal with it. With that disclaimer, the journey begins:

The basics

It starts with CyanogenMod (CM), what we're going with for our software build. The "Android" that ships on phones today is a mix of open source software from the Android Open Source Project (AOSP) and proprietary Google software. CyanogenMod takes AOSP, adds a bunch of handy enhancements, and ports it to tons of devices. While most people install CyanogenMod and immediately sideload the proprietary Google Apps, that's an extra, optional step. This experience is all about FOSS, so we're going to skip the Googley parts and just run raw AOSP-based CM.

There is a project out there called " Replicant ," which is based on CyanogenMod and is, in the words of developer Paul Kocialkowski, a " fully free Android distribution." As you can see from the status page , though, the current product isn't doing so well. While CyanogenMod is up to 4.4.4, Replicant is still stuck on Android 4.2. CM runs on just about everything, but Replicant is only supported by a handful of devices ranging from two to four years old. Plus, while Replicantto replace the proprietary drivers, it doesn't actually have a complete stack of drivers for any device. Most of the aforementioned problematic components still need non-free drivers. If we're going to have to deal with closed source drivers anyway, we'll go with CyanogenMod since it's much more up-to-date and has much better device support.

Installing CyanogenMod today is a relatively simple affair, thanks to the CyanogenMod installer. If you're interested in what installing CM looks like, check out our previous article on the process.

Time to install, boot up, and—hey, this doesn't look so bad! At only one page, the app selection is a little sparse, but it looks like we're starting with a good amount of base functionality. We still get software buttons and a status bar. The home screen (CM's "Trebuchet") even looks like Google's KitKat version, minus the Google Now integration.

Even with the seriously slimmed down app selection, a lot of these apps are junk. DSP Manager is CyanogenMod's audio equalizer, which really belongs in the settings somewhere instead of the app drawer. Movie Studio, Sound Recorder, and Voice Dialer are part of AOSP, but like a lot of AOSP apps, they aren't actively developed and aren't meant to be taken seriously. Terminal Emulator is definitely one of those apps that belongs in an app store, since the majority of users won't touch it.

The good packed in apps are outlined below for a quick preview:

















Ron Amadeo

As you can see from the shots above, CyanogenMod alone will set you for e-mails, phone calls, contacts, SMS, music, file browsing, and taking pictures. The biggest problem is that there's no app store of any kind. The calendar also doesn't work locally, there's no productivity software, and an update to the old AOSP browser would be nice.

F-Droid—the FOSS-only app store

Most of these problems seem like they could be solved by a good app store, so it's time to hunt one down. If we go back to a stock Android device running the Google Play Store, it's impossible to tell the source availability of any given app. The Play Store is a no-go anyway, since this isn't a Google device and the Play Store is closed source. Plan B when you don't have the Play Store is usually the Amazon App Store, which we could download, but that's also not open source.

FOSS users do have a sanctuary though: an app store called "F-Droid" that hosts entirely free software.



The solution is F-Droid. This works a lot like a Linux app store—it connects to a repository, downloads the contents, and shows the apps in a listing. We're connecting to the F-Droid repository, but you could add more if you wanted. The best part for our purposes is that F-Droid shows the licensing information on the right side of the listing, ensuring open source.

F-Droid will scan your current apps and offer to update any existing apps. Right out of the box, it starts tracking a handful of built-in CyanogenMod apps, like the camera and music player. The updater isn't the smartest thing in the world, though, as it initially offers to "update" the AOSP Keyboard from 4.4.4 to 4.4.2. At least it clearly displays the version numbers for both; it was clear what would happen, and we could decide to skip that update.

Living the open source life is tough. There are only about 1,000 apps in F-Droid, and while things are broken down into app categories like "Office" and "Security," there are no top lists. With such a limited selection and no way to see what's popular, it's very hard to find something good. On the plus side, you can browse the app selection online, and there's a search function on the site and in the app.

We knew to search for Firefox, which, sure enough, was listed in the repo along with the information that it used the MPL2 (Mozilla Public License Version 2.0) license—there is even a direct link to the source code in the menu. Checking out the app listing reveals the biggest downside to F-Droid: there are no screenshots. All you get is a few paragraphs of text, an optional display of permissions, a version history with no changelog, and a few warnings about privacy and promotion of non-free software.

No screenshots or video in F-Droid is a real bummer, but it's typical of a community which seems to care much more about functionality than it does about design. If you haven't noticed already, a lot of these open source apps really skimp in the looks department compared to their closed source counterparts. Put F-Droid and the Play Store (right) side-by-side for a good example. The F-Droid versions all feel like relics of several years ago, skipping modern Android UI conventions and ignoring most user experience concerns. While most of these open source apps work fine, the design usually boils down to "things on a list with a black background."