I was originally going to post this on the Verge’s android forum, but now theres a contest here :) I’ll probably still post it there, because there’s a wider audience of nerds, I guess you guys are the beta test? whatever.
Everyone in the tech world knows that skins are evil and slow down your updates, right? Wrong.
A quick disclaimer before you read this: I am a raving android fanboy, I have a rooted nexus S with CM9 on it. I chose it because I had a moto Milestone before. That damn phone was so locked down that even the simplest of bugs couldn’t be fixed without a lot of pain and suffering on some dev’s part. As an engineer, nothing is more frustrating than unfixable problems. I chose a nexus for its openness, not the lack of skin, as skins are mostly an afterthought for me, I put cyanogenmod on every android I touch.
On our nerdy fringe of things, having the latest and greatest is the most important thing imaginable. It really doesn’t matter much to the general public. Sprint even had a commercial with cats in it for the nexus S, and only nerds bought it. I’ve heard people saying that windows phone with its lack of skins and diversity is better than android, simply because pretty much everyone has mango now. If having the latest and greatest mattered, more than 10 people would have bought windows phones by now.
Every time an other manufacturer announces that they won’t upgrade expensive and capable devices, the exact same conversations play out in the comments and here in the forums, and I’m sure everyone thinks they have a unique insight to add. Theres always an iphone owner (who didn’t have his iphone 3G made totally useless by an update, presumably) who will take the chance to crow that its really easy to keep two phones up to date. What weirds me out more though is the “insight” offered by android geeks. For example, there’s almost always a douchey opensource guy who legitimately thinks no one has ever heard of xda-developers and that this is a viable solution for people who aren’t totally nuts (like us). You can’t really cure whatever it is that opensource people have, but these guys don’t really bother me, the ones who do are the other android geeks who have a mad vendetta for skins. THere’s always a cry for either every phone to ship with stock android, or a cry for the option of stock android.
This is really important, so I’m going to write it on a separate line, in caps, bold, italics and underline:
**IT IS NOT THE SKINS.**
No really, you read that right. Those nasty skins are not what slow down your android updates. Its the hardware.
When google releases a new version of android, they only really release it for their own hardware, you can compile android 4.0.4 for the nexus S, Galaxy Nexus and the xoom. Nothing else. If you’re an OEM and your hardware isn’t basically identical in every way to one of these gizmos, you’re SOL and you’ve got some work ahead of you. That work all occurs behind closed doors, so it seems like magic, and when it comes out the other side, there’s blur/wizz/sense piled on top and thats all we see.
To see this happening in the open, we need to have a look in the developer community, because they often work in the open. If your phone is relatively new, theres probably an ongoing effort to port Cyanogenmod to it. If you do a little bit of digging on xda or rootzwiki, you can figure out who is leading that effort and check out their twitter or google+ (or if they’re really masochistic, they’re active in the xda thread), its cool, I’ll wait. You’ll probably see that about a month or 2 after a phone’s realease, they put out a video and said something like “Its totally not ready for a release, but check it out! It boots! Theres touch!” and you might notice that all of the CM stuff is there (whether it works or not yet isn’t super important). THe CM guys re-use a lot of their code for things like the launcher or the flashlight or the performance settings, or whatever else. Where they can’t reuse code is for invisible stuff, like making the processor and RAM work. A lot of the time they have to fight with the sound drivers so that the speakers make sound and not nonsense (in CM history, they’ve had to plug an oscilloscope into a phone before. Hardcore.). This is easier for OEM’s because they either make the parts or can talk with the guys who did, but theres still a lot of adding hardware to android.
When version updates come out for phones, what kind of bugs do they usually have? Is it that the Sense launcher screws up every once in awhile or is it that the update completely breaks 4G or Wifi for some users? That carrier testing that delays your ROM update isn’t testing to make sure all the bloatware works, its to make sure the radios and sensors work, or that the phone doesn’t reboot every time you make a call.
A lovely example of this dropped in our laps since the release of the source for android 4.0. Blur, touchwiz and sense all leaked pretty quickly, and were pretty much fully (de)formed. They’re all available on xda, but seriously buggy. Sony even released an alpha version of android 4 for some xperia phones, and it can’t even make calls yet, but looks suspiciously like sony’s old skin. THe G2X was stock and it finally got a gingerbread update last week.
MIUI 4 came out ridiculously fast, but only for the nexus S and the Galaxy Nexus. This isn’t accidental, with nexus phones, google has already put in the effort to make the hardware work. Adding a completely revamped launcher and contacts is easy- well, easier than trying to port all of android to a new phone. Thats why OEMs do such extensive customization, once you’ve got android booting and functioning on your shiny unrealeased phone, changing the layout of the MMS app or adding a brightly coloured theme to the setting menu is dead easy, especially when you already have some (or even all) of the icons and bits you want to use.
Basically, if you read the last few paragraphs correcly, you should no longer assume that HTC/Sammy/Moto could release a stock ROM for all thier phones the day after google releases thier ROM for the Nexus S. If they did this, the skinned and unskinned versions would probably be released at exactly the same time, so what would be the point?
Annother idea that has been around forever is a theme engine. Its been around so long that android actually already has one. since the beginning. Its called Framework-res.apk. If you dig into your system (or download an update.zip from xda) and go to /system/res/framework-res.apk you can open it with 7zip and you’ll actually find every single system image. It’ll be things like the overscroll glow, or the select text anchors or the signal bars. They all have arcane names, but trust me they’re all there. If you edit them with photoshop (or replace them with your own images that you’ve made before) you can repackage the apk and sign the update.zip again and you could have a totally revamped look for your ROM in a few hours; or a subtle change in a few minutes, seriously, you can change the colours of your Galaxy Nexus’ soft keys while sitting on the toilet. When the ICS sdk was released, there were beta themes for CM7 the same night.
Its also worth noting that absolutely no-one could release updates at the same time as google. Google cheats a bit and develops android for thier hardware at the same time they’re developing the overall OS. That few months of delay that everyone else has is hidden behind closed doors and closed source. Same goes for custom ROMs, sure you can get CM or AOKP to boot on a lot of devices with no official upgrade, but none of them work well enough to say that Romanbb or Cyanogen has ‘beaten’ all these multinational companies. By the time a CM9 RC1 comes, a lot of phones will already have ICS from their manufacturer.
So what does slow down updates?
1)Differing Hardware – Without this, all android phones would be identical, would you want that? There would be no push for dual or quad-core chips. No fantastic amazing cameras. No keyboards. No QHD or 720p screens. None of the diversity we all love. We’d all have windows phones.
2)Manufacturer and Carrier Testing – Alpha and Beta ROMs are fine for xda-dwellers, but I’m glad the general public gets thoroughly tested ROMS.
3) Manufacturer apathy- If samsung made an update for the Galaxy S, it would probably come out in march, and then you would sell it on craigslist and buy a GSIII in June. Is that worth it for them? (no, no it is not)
4)Customer apathy- Average, non-crazy people frankly don’t give a damn. Most people’s only vision of updates is from windows, where they’re constant, annoying and pushy and seldom seem to actually do anything at all.
Don’t be a hater for skins. Part of the reason android is evolving so fast is that the OEMs are trying to add awesome stuff to it and google is taking some of the ideas. The reason verizon has two dozen different android phones on the shelves is that they all feel completely different. We wouldn’t have our market-saturating dominance if all phones were stock. We wouldn’t have deep, seamless social network integration if Motorola hadn’t built it into blur (hell that’s where Blur got its name). We wouldn’t have scrolling widgets if HTC hadn’t put them in Sense. Android probably wouldn’t be as popular worldwide without the “its like an iphone, but cheaper” thing that samsung cemented when they made touchwiz a blatant rip-off of the iphone. Admittedly some of these attempts at innovation go incredibly badly (go to best Buy and play with any LG phone), and its totally fine to hate them for that, but don’t hate them because you think they’re holding you back on 2.2. Don’t forget that skins get better as android gets better too, eclair sense was awful, and a lot of that was because Eclair was awful, froyo-wiz is better than eclair-wiz and gingerblur was better than froyoBlur; sense 4.0 looks like it might even be good.
It would be great if manufacturers tried to consolidate thier portfolios, we don’t need new low-end devices when last year’s high-end devices are free on contract now. It would be really cool if skinned versions of android were as light and fast as stock. It would be really nifty if every manufacturer didn’t find a way to make the gallery and contacts apps clunky and ugly. It would be wonderful if manufacturers would hammer out ICS updates for absolutely everything, but that would be absurdly expensive and wouldn’t net the OEM’s a lot. Calling on google to lock down android would gut the innovation that drives it, and not actually do anything.
So seriously, stop hating on skins. Stop it.