Monday, April 3, 2017

Why I gave up on Android

I got my first smartphone in January of 2011-the year after I finished college. I had been writing Java professionally for a couple of years and opted for an HTC Aria running Android. Android apps are written in Java, so I thought it would be fun to be able to write software for my own phone.

From https://www.att.com/esupport/article.html#!/wireless/KB110410

Over the next six years I had three different Android phones, each better (and larger) than the last[1]. I also wrote some Android apps, the most successful being the Pretty Good Music Player, which has been downloaded over 4,000 times in its two different forms.

Writing Android applications is a lot of fun and really rewarding. Through open source development on Github and F-Droid I met a lot of people from around the world who were willing to contribute to my application - it has been even been translated into seven different languages!

By this point you should be wondering: If things are going so well, why am I giving up on Android?

I'm ready for a phone that's not a project

With every Android phone I've owned, I've had to work to deal with the following issues:

  1. I have little to no control of what's on my device
  2. I have little say over the software versions or upgrade process
  3. There is little transparency and poor support in the hardware or software unique to each carrier and device
None of these issues are insurmountable, but I have a limited amount of time and money to spend on my phone, and I'm tired of fighting with device control, upgrades, and hardware support. 

Control

Android is open source. In theory, that means it should be user-modifiable. I should be able to tear it apart and rebuild it as I want. I should be able to accept or reject changes to my phone, and I should have control over what's on it. This is the case with other open source projects. It's not the case with Android.

The Android ecosystem is so convoluted it's hard to get a phone that doesn't have bloatware from at least two different sources on it. Google occasionally releases a "clean" phone (the Nexus or the Pixel), but these are the exception, not the norm. At the Verizon store yesterday, I had two options for phones without "NFL Mobile" installed by default: Google Pixel (not in stock) or the iPhone.

This is not what "open source" is supposed to mean. If I want Debian customized with or without something, I can rebuild it myself or choose from one of its many offshoots (e.g., Ubuntu). If I want Android customized, I have to root (hack) my phone with sketchy software and install a custom Android build like the (now defunct) CyanogenMod.

Upgrades (and Downgrades)

Virtually every major Android upgrade in recent memory made my phone worse. The upgrade from Android 4 to Android 5 made Bluetooth media buttons stop working after about 20 minutes. Some aspect of Android 5 or 6 introduced a memory leak that required me to restart my phone every two days or risk apps crashing randomly.

In a normal open source environment, I could address these issues by rolling back the update or creating a fix myself. In Android, (without rooting my phone) I have few choices. It's hard to tell where the issues even originated, since my phone wasn't just running Android: It was running Android, plus LG's bloatware, plus Verizon's bloatware. One of them caused the memory leak.

The best Android option today seems to be the Google branded Pixel. Unfortunately, I have the same long term support concerns with the Pixel as with all of the others. Google has a bad habit of losing interest in a project and dropping it with little fanfare (anybody remember iGoogle? Google Buzz?)

Hardware


Hardware support is the one place Android acts like an open source project: it's frustrating. There are a plethora of manufacturers, each making a wide variety of devices. Android has to support them all. Linux has a similar problem on the desktop. For example, the Linux kernel has to be written to support a wide variety of CPU types.

Android has a several major device manufacturers (Samsung, LG, Motorola) and a plethora of smaller manufacturers. At any given time each phone maker has two to four devices on the market and approximately fifteen devices within a three year support window. When you factor in the four major carriers (each pre-installing their own bloatware and network support), this makes approximately two hundred sixteen device configurations Android must support at any given time[2]. Linux gets around this issue by being transparent, employing an army of engineers, and by allowing users to handle upgrades and downgrades. Android has all of the weaknesses of open source, and none of the strengths. From a quality control standpoint, this is a nightmare.

The result of this nightmare is that new phones function well. The software on them is well tested. As a phone gets older and older, testing priority stays with the new phones - there's far more motivation for new phones to work well than old phones. For example, the autofocus on my LG G3 stopped working correctly about six months ago (around the two year ownership mark). I believe this was a software error, since the phone remained physically capable of focusing correctly, it would simply re-focus sporadically.

Why I bought an iPhone


I weighed the odds. Android has to support two hundred sixteen phones in a three year rolling window. Apple's iOS has to support eighteen[3]. The chance of frustrating problems, while non-zero, is (at least theoretically) significantly lower on the iPhone.

My experience with Android is only anecdotal, but I'm tired of poor support and buggy software. I'm tired of buying phones that wear the badge of open source but won't let me uninstall bloatware. I know that many of my frustrations have solutions, but those solutions take effort, and I'm tired of my phone being a project.


Final Thoughts

I'm in the honeymoon period with a new iPhone 7. In three years, we'll see where I stand.



1. I had an HTC Aria on AT&T, a Motorola Droid Razr on Verizon, and an LG G3 on Verizon.
2. Assuming three current devices per manufacturer with a six month device release cycle. 3*3*6*4 = 216.
3. Assuming Apple has the same release cycle as Android manufacturers and a similar testing budget.

Copyright 2017 Tyler Smith