Technically speaking, Android is open-source. This means anyone can look at the operating system's code, or change it - this is how OEMs like HTC and Samsung add their own tweaks. That openness has often been a rallying cry for hardcore Android enthusiasts. Why use a closed platform like iOS, when you can have a free and open-source platform?
But even from the beginning, there were components of Android that were closed-source. The Gmail app, Maps, Google Talk, and the Play Store were some of the earliest examples. To combat the always-present fragmentation of Android, Google offers many APIs through the Play Services Framework. As more and more apps switch to these proprietary APIs, they become less functional (or break entirely) on devices without the Play Store.
Four years ago, Ars Technica wrote a detailed analysis of using Android without all the proprietary Google software. It wasn't a great experience, as you can probably guess. But plenty can change in four years, so is the situation any better in 2018? That's what I wanted to find out.
Free and open source software (FOSS) has a number of advantages, but to users, the main benefit is privacy. All the code is out in the open, so anyone with programming knowledge can go through it and see exactly what an app is doing. Proprietary apps can sometimes feel like black boxes, where you don't really know what's going on behind the scenes. That's almost never the case with FOSS.
I say 'almost,' because there's technically nothing stopping open-source apps from spying on you, but that behavior is extremely rare. If you're doing something you're not supposed to be (like spying on users or bundling malware), you probably wouldn't announce it to the world.
Proprietary apps can sometimes feel like black boxes.
Another popular talking point for FOSS software is freedom of choice. For example, if you don't like one Android ROM, you can switch to another. There are plenty of other advantages, but you get the idea.
Choosing a ROM
Unlike with full-blown computers, it's essentially impossible to go 100% open-source with smartphones. When it comes to Android, the drivers for many of your phone's components are closed-source, since they come from either the OEM (Samsung, HTC, etc) or the silicon manufacturer (Qualcomm, MediaTek, etc).
These closed-source components are called 'binary blobs,' and are required to make the phone operate properly. For example, the Pixel 2 XL uses binary blobs to operate the GPS, camera, fingerprint gestures, DRM, display, and various sensors.
There is an Android ROM called Replicant, which aims to replace binary blobs with open-source implementations. Unfortunately, the project doesn't have a large community, so development is extremely slow. There are only 13 phones and tablets currently supported, with the newest one being the Samsung Galaxy S3.
I don't own any devices that Replicant supports, so I opted to use LineageOS... sorta.
LineageOS with microG
As mentioned above, Google Play Services is completely proprietary, so I couldn't use it for this experiment. However, there is an alternative - the microG project. MicroG is an open-source re-implementation of Play Services, designed to replicate as much functionality as possible.
At the moment, microG includes its own versions of GmsCore, the Services Framework Proxy, Unified Network Location Provider, and v1 of the Google Maps API. There are plans to develop a Play Store client as well, but that isn't available yet. Even though the project is still very far from complete, it sounded interesting enough to try out.
Unfortunately, there's a catch - microG only works with custom ROMs that support signature spoofing. The LineageOS project is against adding support for that feature, citing security concerns, so microG offers its own ROM called 'LineageOS for microG.' It's available for all devices with official LineageOS support, and comes with microG and the F-Droid app store pre-installed. There are no other changes, as far as I'm aware.
I decided to use my Xiaomi Mi 4c for this experiment, since it's the only functional phone I have that I don't frequently use. It has a Snapdragon 808 processor with 3GB of RAM, so it's fairly fast (albeit a bit toasty). I wiped it, flashed the microG LineageOS ROM through TWRP, and went through the setup process. Once that was done, my (mostly) open-source phone was ready to be used.
If you've never tried LineageOS, it's somewhat similar to stock Android, but with some custom applications and minor UI tweaks. There's a lightweight WebView browser (nicknamed 'Jelly'), an improved E-mail client, an audio equalizer, a music player, and so on. Some of these are part of AOSP, but have been improved by LineageOS.
As mentioned above, microG's fork comes with the F-Droid store already installed. F-Droid is a catalog of FOSS apps for Android, where proprietary apps are not allowed. You have Firefox instead of Chrome, Nextcloud instead of Google Drive, and so on. As I expected, finding alternatives for all the apps I use was the most difficult part of this experiment.
My first task was to set up my usual communication methods. For email, I ended up using the included Email application, which worked just fine once I set up an app password for my Gmail (because I have 2FA enabled on my Google account). SMS obviously worked with the built-in Messaging app. The 'Conversations' XMPP client allowed me to use Hangouts in a limited capacity (no group messages or video/audio calls), since Google never shut down the old Google Talk XMPP servers.
'Conversations' is a pretty great XMPP client, but functionality with Hangouts is limited.
Then I started running into roadblocks. Android Police uses Slack for internal communication, but there is no open-source client available. That ended up being the one closed-source app I installed, since that's a necessity for my job. I occasionally use Discord, but that's proprietary.
I already talk with most of my friends over Hangouts and SMS, so the requirement of using open-source software wasn't a major problem. If I was a heavy Skype or Facebook Messenger user, this would have been far more irritating.
I use Chrome on all my devices, so I planned on using Chromium as my web browser. If you're not familiar with it, Chromium is Chrome without all the closed-source bits. There is no H.264 video support, no automatic updates (only applies to the desktop version), no MP3 playback, and no Flash plugin (again, only for the desktop).
Chromium itself is not available on F-Droid, but there is 'getChromium,' which downloads the latest build from Google's servers. Even though it's open-source, Chromium for Android does still rely on Play Services to sync bookmarks/history/tabs. This is where microG comes in... or so I hoped.
When Chromium asked me to log into Google, I entered my credentials, and then... nothing. I went to the browser's settings, and it said I hadn't logged in. I tried logging in again, and microG told me I had already logged in. This happened with every app that tried to sync with my Google account, including the Contacts and Calendar apps.
Jelly tabs appear in the system app switcher, like Chrome in the Lollipop days.
Since I couldn't sync data on Chrome, and Firefox on Android still isn't a great experience, I ended up just using the included 'Jelly' browser. It relies on the system WebView to render pages, and performance is great.
Here's where things get rough. I use a few different media services, including YouTube, Netflix, Hulu, Spotify, and Plex. The only decent open-source YouTube client is NewPipe, but you can't log in, so I mostly just used the YouTube mobile site. There are no FOSS clients for Plex, Netflix, Hulu, or Spotify.
In other words, I couldn't listen to any of my music, unless I copied the MP3 files from my Plex server to the phone's internal storage. I couldn't stream any TV shows or movies, either.
I don't play many mobile games, but all of the ones I occasionally open (Lux Deluxe, RCT Classic, Bloons Tower Defense 5, and Crossy Road) are all closed-source. There are a few games on F-Droid, but they're pretty basic. If you're just looking for a way to kill time, there are some okay options.
There is no shortage of great third-party Twitter apps, but there aren't very many open-source ones (at least on Android). The best one seems to be Twidere, which we covered last year in our Best Twitter clients roundup. It hasn't changed much since then, but the F-Droid version doesn't have any of the in-app purchases (like scheduling tweets and Giphy integration).
Twidere is pretty good, and even supports other Twitter-like social networks.
The experiment continued to become frustrating as I moved to productivity apps. I use Google Drive to store most of my important files and documents, but there's no FOSS client I can use. My notes are in Google Keep, so I had to use the mobile site.
I basically never edit documents from my phone, but since they are all in Google Docs format, I wouldn't have been able to edit them without the official apps.
I started this experiment with one question in mind: could you realistically use an Android phone in 2018 with only open-source software? I think for most people, the answer is no. Just about every service or app used by the general public is closed-source, and unless you're willing to switch away from Google's ecosystem and go without most apps, it's just not practical.
Some of you may already be heavily invested in open-source software. Maybe you run a Nextcloud installation instead of using Google's cloud products. You might heavily use Telegram or Signal, instead of proprietary services like Allo, Hangouts, and Facebook Messenger. There are some that wouldn't feel a great deal of impact from going without closed-source products, but I think that is an incredibly small amount of people.
I'm not trying to criticize FOSS developers. Many of the apps listed on F-Droid are maintained by a small group of people (or single developers), usually in their free time. The quality of some of these apps is very impressive, especially given the limited resources and time these people have.
There are some great FOSS alternatives to popular apps and services.
If there's one lesson to be learned, it's this: there are some great FOSS alternatives to popular apps and services. Going all open-source isn't feasible, but moving some of your friends to Telegram or switching to Firefox might be. With recent events, I think everyone can agree that the fewer Silicon Valley companies collecting detailed analytics about you, the better.