Remembering CyanogenMod
Hyperbolic as that may seem, and perhaps a little too personal for a tech blog, it's the truth. Seven years ago this Christmas a workplace accident rendered my right hand mostly useless. I couldn't type, painkillers kept me in bed most of the day, and I had two different doctors telling me surgery was unlikely to restore enough of my hand that I'd be able to do just about all of the things I enjoyed doing. I was in a seriously dark place, and when I wasn't trying to figure out how let my family cheer me up I was lurking in public CyanogenMod IRC channel just to keep my mind busy.
The time I spent watching as all of these remarkable people used every minute of their free time worked together to build ways for their phones to do new and amazing things not only encouraged me to push myself to find ways to contribute, it gave me a unique perspective. I was able to watch as the CyanogenMod team grew from a small public chat with a handful of clever ideas into a global community.
Unfortunately that means I was also there to watch as the software company that grew from this community quickly burned to the ground and pissed off a fair percentage of that loyal community. What excites me now with the recently announced Lineage OS climbing out from the CyanogenMod ashes has a lot to do with what excited me about CM from the beginning, and that's what happens when clever people openly talk about what is possible with their spare time.
Back before anyone knew better
My adventures with CyanogenMod didn't start until the Nexus One, but only because I really needed my HTC G1 to be as stable as possible. I bought a G1 the day it was released because it had a Linux Terminal, and that meant I could remotely access my work servers and troubleshoot customer needs without carrying my laptop around everywhere. I worked for a small web hosting company and it was important that I always be ready to answer a support call when I wasn't in the office. I was aware of the existence of CyanogenMod as a potential alternative, but didn't really bother with it.
Most people didn't hear about CyanogenMod until Google tried to shut the project down. A Cease And Desist letter from Google left the team thinking the project was completely dead, because Google didn't want the proprietary parts of the OS included in these community builds. You could build Android and do whatever you wanted to it, but Google's apps needed to be separate. The way around this quickly became installing the core OS built by CyanogenMod and then finding GApps elsewhere and installing that on top, but a surefire way to bring the Internet's attention to something is to tell them they can't have it. With a spotlight on the project, it grew quickly.
The Nexus One was different for me. It was a gift after my accident, so I didn't need it for work. This was mine to play with, so I started looking for the best resources to learn how to tinker. Most resources at the time pointed me to the XDA forums, but I found myself drawn to the real-time communication of the CyanogenMod IRC. In these relatively early days, the public channel existed as general communication and support. People would drop in, ask a question, and there was usually enough people around to lend a hand with whatever problem they were having. At this point, there was never more than 150 people active and the general conversation was geared toward sharing ideal and working through issues found when implementing new ideas.
Watching the channel over a period of months was great for me. The Nexus One was much easier for people to tinker with, which added to the rapidly growing popularity of the project. I was able to watch other people ask the questions I had, since typing with one hand took me forever, and before long I was able to offer help to those that had come in with common questions. This quickly became a social outlet for me. I made friends in the channel, and we all knew roughly when each other would be online. For someone less skilled like me, this meant I could make sure I was around when Cyanogen and Koush and others were around so I could learn from them as they worked out new ways to implement their ideas.
Be an expert in 5 minutes
Get the latest news from Android Central, your trusted companion in the world of Android
At this point, the purpose of CyanogenMod was entirely personal. The group thought was if you bought something and weren't able to alter it to work the way you wanted it to work, you didn't own it. For some people this meant ways to enable tethering in a time when the OS itself didn't offer the feature. For others, this meant tweaking the underlying hardware to maximize battery life. All of these ideas came together, and the stuff that worked got added into the next build. That next build would be announced on XDA, and shortly after small burst of new users would come into the IRC to ask for help or talk about a new way to implement a feature. Rinse, build, repeat.
Expansion and Monetization
As much fun as the Nexus One group was, things didn't really take off for Android as a whole until Motorola and Verizon released the original Droid. Verizon's marketing budget drew in all kind of users looking for the official answer to not having an iPhone, and with that came tons of new people eager to play with all of the cool things the Nexus One kids were playing with. This raised several interesting problems at the time. For one, almost no one in the CyanogenMod team had Verizon Wireless and even fewer people had a desire to switch carriers. Perhaps more important, several other Android phones had been released both to GSM carrier in the US and internationally. Everyone wanted a way to flash CyanogenMod, but each of these phones had separate needs and required separate maintainers.
The single IRC channel quickly fragmented into many different channels to more easily discuss the individual needs of each device. Working with Verizon phones was a relatively low priority for most, both because Verizon was way more likely to be litigious and because CDMA networks are complicated and terrible things compared to the relative simplicity of GSM.
The desire to support these phones grew quickly, though, mostly out of necessity. HTC had released the Evo on Sprint with a customized version of Android, Motorola's Droid wasn't quite the same as "stock Android", and Samsung was releasing phones on AT&T and T-Mobile with their customizations as well. These modifications all had the same things in common: they had a couple of ideas that were worth implementing on CyanogenMod, and software updates to add features Google was releasing weren't coming to these phones anytime soon.
Supporting all of these phones required more than just the free time of a couple talented software developers and clever tinkerers. Each new build took time and energy on someone's computer, and a desire for a centralized repository for all of the ideas being tested on all of the phones was a must. The CyanogenMod donations link was reasonably active, especially when team members reminded everyone the link existed, but in a time before Kickstarter or Patreon or really even significant activity on Twitter this meant working together to build a centralized place to build for all of these devices. It was time for the little blue bugdroid on a skateboard to become stickers and buttons and even umbrellas to help pay for the cost of maintaining the steadily increasing cost of supporting everything at the pace Android was expanding.
The CyanogenMod team eventually grew to try reselling virtualized servers for other projects among other ideas, and eventually the project itself started making money. This meant more phones could be bought for more maintainers when new hardware was released, and eventually the team could offer nightly builds for the more popular phones. Every night there was a new build available with a new tweak. Sometimes these were small changes, sometimes major features were tested and added. Users got in the habit of flashing every single day to try the new things and offer feedback, and the teams contributors with their own ideas continued to grow alongside the users.
This growth period wasn't enough for anyone to draw a salary or anything. CyanogenMod thrived as a project that offered a better way to use your phone, with features manufacturers either hadn't thought of or didn't want to add. This was a weird time for Android, where carriers were doing things like disabling NFC chips in phones for seemingly no reason and manufacturers were starting to figure out ways to build exclusive services that would encourage users to stay loyal and only buy that brand. As most of those ideas failed and crumbled, CyanogenMod continued to thrive and grow.
Growing up is hard
Weirdly, CyanogenMod and Google decided at right around the same time that Android needed to stop being the thing geeks loved and start being something everyone could use. For Google, that meant standardizing features and becoming more aggressive with the manufacturer requirements for adding Google Apps to a phone. For CyanogenMod, that meant every single thing a person wanted couldn't be yet another setting in a never ending list of options to enable or disable. Google and Android needed to be recognized brands, and the Google services needed to be front and center for every user to appreciate. CyanogenMod needed to be something that was just as stable as the software that came on your phone, and in most ways just as easy to use.
It took both sides a really long time to figure out what those changes meant, and not everyone agreed with how to proceed. Now that Apple's iPhone was available on all of the same carriers you could get an Android phone, it became clear the ability to push a single update and have every iPhone become better was a feature people wanted. Google countered with a dramatic reimagining of Google Services. This was no longer a bundle of apps, it was a unified mechanism for tools that developers could add to their apps and know it worked the same on every phone. It also meant Google could better enforce security decisions if an app misbehaved or was behaving maliciously. Google's answer to Apple's universal identity is a unified core that can be modified and improved without the user ever needing to do anything.
CyanogenMod had a slightly easier decision to make and implement by comparison, but the people making those decisions were not organized in a corporate fashion. This was, by and large, a collective of voices that talked out each decision before making it. Streamlining CyanogenMod brought up some questions that weren't easy to answer, like how many people actually needed root access after an update was installed and whether there really needed to be five toggle switches for how your notification light behaved. These questions started to guide the OS itself in a new direction, one that was less about adding a new feature because you could and more about creating a genuinely useful alternative to the less capable versions of Android being released by Samsung and HTC and others.
At the same time, hardware manufacturers were doing some maturing of their own. Competing with Apple in a world where Google was able to enforce their will on the way software worked meant competing almost exclusively in performance. Bigger, higher resolution displays and impressively capable audio or photography tools became the biggest talking points. Suddenly the conversation was all about specific ways you could use your phone that could only happen on this phone, and less about the most megapixels or whether the battery was replaceable. Meanwhile, Google's Nexus program began a price war with devices like the Nexus 4 and Nexus 5. Did it really matter if your phone had all of the best specs if you could get it for half the price of the things that were considered the best? It's a question still being answered today, with new reasons to have the conversation every couple of months.
Everything was maturing at a crazy rate, and the people spending every minute of their free time on this passion project now had hundreds of thousands of loyal users eager to see what happened next. While small compared to the overall scale of Android, the CyanogenMod community had become a massive global effort. A standalone website with detailed instructions for new users with hundreds of different phones existed, and a unified CyanogenMod release cycle ensured the team was building once and everyone had nearly identical experiences. This was no longer a couple of internet strangers in their free time, it was a group of close friends passionate about building something great.
Going corporate
The next step for CyanogenMod couldn't have been more clear. This version of Android was now good enough to be the kind of thing people who aren't nerds could use and enjoy. CyanogenMod could have legitimately been something you handed a family member and didn't worry about things like boot looping or apps constantly crashing. More people started asking what it would take for CyanogenMod to actually be an option out of the box for users, but the answer wasn't a great one.
Here's the thing about CyanogenMod: it'll never exist as the default option on a phone you buy in a real store. It can't, not legally anyway. Google has very specific rules about what needs to happen in order to approve Google Apps to be used officially, and a big part of that is a piece of hardware passing the Compatibility Test Suite. There is no mechanism for an OS passing this test without being an official piece of software for a phone. In order for CyanogenMod to be considered official and legitimate, the people responsible for software at the companies manufacturing hardware would need to see this OS as something more than a side project.
We all know what happened next. Steve Kondik and several others quit their day jobs, approached VCs, and secured funding to launch Cyanogen, Inc. This gave Kondik and others the ability to approach and be approached by manufacturers and offer an alternative to building a fork of Android in-house. For small hardware companies looking to make a dent in the budget hardware market, Cyanogen was very appealing. This third-party would handle maintenance, updates, and Google certification. Their small but aggressive community project user base had a history of being highly supportive, which even meant a wider group of US consumers that never would have given the phone a second look would buy immediately. Several phones running Cyanogen OS were available shortly after the company launched, and these small victories encouraged the company to grow aggressively.
It's unfair to say that everything wrong about what happened next can be placed at the feet of Cyanogen Inc's CEO, but Kirt McMaster is without a doubt the reason things went horribly wrong. Being overly bombastic to get a little attention from larger news organizations is not a new tactic by any stretch, but headlines about Cyanogen "putting a bullet in Google" with their fork of Android rapidly soured the community that helped create this company. From the perspective of users that had followed CyanogenMod for some time, McMaster was a loud-mouthed outsider with little substance. When it became clear in released emails his attitude was likely responsible for ruining early relationships with hardware partners, community opinion of the CEO worsened quickly.
Having been to the Cyanogen Inc. offices to learn about the new company myself, and been with Cyanogen staff at several events since, it's clear McMaster was a divisive and controversial CEO. As far as I was concerned, the people building a CyanogenMod everyone could use were way more interesting. Fortunately, those people still exist and many are still passionate about that core thought about ownership. People should be able to do things with their hardware the manufacturer didn't intend, and this is one of many community projects aimed at that thought.
What happens next
CyanogenMod as I've known it over the last seven years isn't going anywhere. It's getting a rebrand, some of the people I've come to call friend have moved on to other things, but the core idea still exists and Lineage OS is something I plan to pay very close attention to. Android has changed a lot. I've argued many times that it's gotten good enough that community projects aren't really producing things worth most people making the jump for anymore. Google is focused on making their services new and exciting through AI and more clearly defined hardware experiences.
But the mission for community projects is the same, and it's something anyone of any skill level can participate in. Imagine a way your phone or the way you use your phone could be better, and talk with other people about how to make that happen. For me, back in the Nexus One days, that thing was a way to answer the phone with the trackball. That idea encouraged me to talk to people, learn how to make it work, and share that idea with the world. The most important thing I learned through that experience was how incredibly powerful a community software group can be if there's a clear goal.
While it's true there's a lot less broken about Android nowadays, there will always be new ways our phones can be better and I'd like to see the Lineage team introduce a few of them to us.