Dear Android Custom ROM developers: I love most of you. Really. You're part of what makes Android so awesome, because you're so enthusiastic about it, and about making it better. Because of you, we have awesome things like CyanogenMod.
I want to give you some numbers. Let's just look at some popular Android devices:
- T-Mobile Galaxy S II: 9
- AT&T Galaxy S II: 8
- HTC ThunderBolt: 23
- DROID BIONIC: 7
- Epic 4G Touch: 10
What do these figures represent? The number of different custom ROMs found on the first page of the XDA forums for the above devices. The ThunderBolt's count comes from the pinned post on the ThunderBolt's forum with a listing of ROMs - and those are only the Gingerbread ones. None of these are counting CyanogenMod.
The DROID BIONIC doesn't even have its bootloader unlocked, and doesn't support custom kernels, yet the just-over 2-month-old phone already has seven custom ROMs available. What's different about each of them? Bloated, de-bloated, "BLUR'd", "un-BLUR'd", odexed, de-odexed, ICS theme, Gingerbread theme, new build, stock build. But to anyone but developers, most of these differences are superficial - many people probably don't even know what they really entail (even I don't fully understand some of it). And custom themes allow users to skin most ROMs as they choose, so the visual differences are typically only skin-deep.
In fact, most of the differences are completely unnecessary points of distinction. Just look at CyanogenMod - by allowing theming support, 90% of users get what they want from a custom ROM (a custom look), and the carefully tested and peer-reviewed release builds aren't made official until TeamDouche feels they're ready for that title. If users want to be on the bleeding edge, nightlies and alpha builds allow them to get their fix with an implied caveat that the software may not be ready for primetime.
I'm picking on the BIONIC specifically because I own one, and after a lot of frustration with custom ROMs (I've tried 4), I went back to the stock build using a custom launcher. It's a better experience than any of the custom ROMs I've used. It's less buggy, it runs more smoothly, and it doesn't look half bad. Sure, I don't have a fancy (and embarrassingly sluggish) Ice Cream Sandwich theme, but my Gmail syncs properly, I don't have any more weird capacitive touch glitches, and my battery life is actually slightly better.
And I'm not new to the whole custom ROM community, either - I've been flashing and tinkering away since I bought my Nexus One last February. The first time I actually soft-bricked a phone was when flashing a ROM to my BIONIC, the instructions for which I followed with excruciating attention to detail, yet I still ended up in a bootloop from which I could not escape. I had wiped every nook and cranny of the device before flashing the ROM, too. Luckily, un-bricking was quite an easy affair. I won't name names, because frankly, it doesn't matter who developed it - and it's possible even with my careful reading of the instructions that I missed some minor step. My point, though, is that this shouldn't happen in the first place.
But This Is Free And Open, Right?
Don't get me wrong, I understand that the Android community thrives because it's open to anyone. Because anyone can develop an app, custom ROM, theme, or kernel modification and post it up to their community forum of choice. At that point, natural selection and word of mouth take over, and ideally they weed out the software that users should avoid and promote the "good" stuff. And the premise on which this sort of open system is based is great - in theory.
In reality, we end up with the situation you see on the ThunderBolt - almost two dozen ROMs based on the same Android version for the same phone. Sure, some are far more obscure than others, but there's a mess here nonetheless. The average user who is new to the custom ROM scene has no idea which one to pick, what different ROMs entail, and without embarking on a significant endeavor to research terminology and the difference between those ROMs, will probably end up flashing something not having a very good idea of what it is they're actually doing.
Each will have slightly different (and often poorly written) instructions for flashing, and many will die at the hands of their respective authors' disinterest or frustration when they become infatuated with a new device or a major software update is released. Users end up with a device that's out of date, and without an upgrade path that doesn't involve a total wipe of their handset - a very scary prospect for some people.
CyanogenMod, on the other hand, aims to provide users a single custom platform across many devices that would be updated so long as a community supporting each device exists, and upgrading is technically feasible. This "no device left behind" policy has made CyanogenMod the most popular custom version of Android by a country mile, because users feel secure knowing that their device will be "kept in the loop" as long as it's practical to do so. CyanogenMod has actually been better about this than anyone, supporting devices long past their respective manufacturers in some cases.
More custom ROMs could (and should) be like this - if people would just f'ing work together. Everyone should take a page from Team Douche here. I don't care if your ROM is the only one with the special bootscreen with your developer name plastered on it or that is uses the best ICS theme out there. I don't care if you're the only one running a special tool pack built specifically for your ROM. I don't care about your custom wallpapers or ringtones. I'd rather not have any of those things and instead get a ROM that received a lot more pre-release testing and underwent a legitimate peer-reviewed development process.
I want something that works. Hell, I'd pay for something that works as well as CyanogenMod on my phone, since the BIONIC doesn't really support it at this point. Instead, I have a choice between stock, buggy, and buggier. Everything's a "beta" or an "alpha." No one ever commits - it's always a work in progress subject to abandonment or radical change requiring a full wipe at any moment. That doesn't make me feel secure. And it sure as hell doesn't make a lot of sense to me to have seven mediocre ROMs for one phone, but not a single really good one.
I suspect a lot of this has to do with egos and rivalries, and people's desires to get their name "out there" in the community. I think we can all understand that - Android's the free market, everyone's got the right to do their own thing, and they'll be damned if anyone's going to tell them what to do. But really, guys, isn't open source about collaborating? Perhaps I'm totally off base here. In fact, I fully expect to receive a good, hard flaming from some people for this post. But it's just something I've noticed as an observer and participant in the Android community for well over a year now, and have often thought about speaking out on.
My rant isn't an attack on the open source community. It's a complaint that the community has become a place where more is always better, new is always progress, and any attempt to criticize work being done is a slight against the powers that be.
I'm fine with people doing their own thing. I'm not fine with people doing their own thing just to do their own thing, and doing it in a sub-standard fashion. I get that there's always going to be crap software in an open community, and that it's a fact of life. But to suggest that crap software is somehow "good" because it maintains openness is just as naive as saying closed source always makes a better product because it allows total control over the result.
There's a difference between someone porting a full-on version of AOSP to a formerly skinned device and someone who tacks on a theme to that ROM, right? The problem is that people are constantly adding "little changes" and "minor optimizations" and then calling it a "new" ROM. Sure, they give credit, but they've also created confusion for users and diluted the hard work of someone they've piggy-backed on, and possibly made it worse.
There should be some kind of accountability. I'm not suggesting strict guidelines, but I am asking that there be a little more guidance in this area. Anarchy certainly has its drawbacks.
So, whether you agree or not, I'd like to hear what you think about the situation with the development community too - are things getting out of hand, or do you believe this is just the process of open source at work? I'm genuinely curious.