Everyone in the tech world knows that skins are pure evil and slow down your updates, right? Wrong.
JellyBean spilled onto the android scene this last week and it highlights a nasty and embarrassing issue with Android. ICS has only trickled out to about 10% of existing phones and its already out of date. Evidently, Google is innovating faster than their partners can keep up. ICS was a big update with a lot of low-level changes, but still, 10% is a very small number.
Over the next few weeks, a lot of manufacturers are going to be announcing that capable, expensive phones will be left in the dust. The comments on all these posts will be:
- A link to xda-developers, as if that's a solution for people that aren't insane like us
- A Microsoft astroturfer crowing that Windows Phone totally doesn't have this problem, and that people totally care about this issue and are buying windows phones by the boatload. STATIC GRID OF ICONS.
- A stock android fanboy calling for an end to skins, or something like that.
1 and 2 are easy to ignore, but 3 always sparks a completely misguided conversation about how these skins are holding android back and that they really should be optional or how we need a theme engine. Almost everything people say in these comments is wrong.
Do people give a shit?
No. Not in the slightest. There are people who bought the Nexus S last year and didn't upgrade past 2.3.2. Sprint ran an amazing commercial with cats in it for the NS4G. The Galaxy Nexus has the same review score as the iphone 4S, and can be had for free on contract, and people still aren't buying them in significant volume. If people cared about timely, consistent updates, Windows Phone would at least be growing faster than Windows Mobile is shrinking.
There's an awful lot of different colours of green on that there pie. A lot of them are old and stale shades of green. Android fragmentation is pretty much the worst thing that has ever happened, right? Of course not. Besides cloud to device messaging (2.2+), the only thing that caused any real user facing fragmentation was the actionBar which is the main reason that there are ICS-only apps, there's more reading on the actionBar here, but google fixed this issue anyway. Even a user who is stuck on Froyo can enjoy apps written for JellyBean, this doesn't effect users and only has a minimal effect on developers.
Skins Don't Slow Down DevelopmentSeriously, you read that right. The skin is one of the quickest parts of the development cycle, it just happens at the same time as the slow parts, so by the time an update is unveiled it just seems like TV magic. When a phone is all screen, the only differentiation is with software. These tweaks are totally worth it.
In the next few weeks, we'll see Jellybean ROMs leak from Samsung, Moto, HTC and probably a few others. They will all look mostly like Wizz, Blur and Sense. They'll have their themed icons, skinned settings menus, ugly statusbars and those stupid speech bubbles in the sms app. One of them won't be able to make calls, some of them won't have wifi and the cameras will be buggy if they work at all. They won't know up from down because the sensors won't all work, and the performance won't be particularly enchanting.
Skins are, for the most part, a set of apps that replace the stock apps. A lot of what makes a skin a skin is the visuals. People always think they're super original when they clamour for a theme engine, but its actually a very old idea. So old, in fact, that it was built into android 1.0. Its called framework-res.apk. Its in your /system folder. If you don't have root, go to xda and download pretty much any update.zip and have a look inside. If you unzip the .apk with 7-zip, you'll find every single system icon from the signal bars to the text selection handles to the overscroll glow. They all have kind of esoteric names, but trust me, they're there.
If you edit those files, or replace them with preexisting ones and repackage the .zip properly, you'll have a totally themed android build. When a new ROM release happens, themes show up the same night. A complete asthetic overhaul can be made in a few hours if you already have the icons you want to use. A subtle tweak can take a few minutes; you can change the Galaxy Nexus' soft keys while you're on the toilet.
The visual part of a skin is almost always done very quickly and very early in the development process.
Some Insight From Custom ROMs
For the next high-profile phone release, check xda-developers to see who the Cyanogenmod maintainer is. About a month after the initial release, they'll probably tweet (or post on G+, every single Android dev is on there) a video of the ROM booting, and maybe they'll fling through the settings menu to show you that touch response and overall performance aren't all there, and to show you the about phone section. Then they'll tell you that wifi, bluetooth, calls, rotation, HW acceleration, camera and sound are all totally not working. #norelease. What you should notice is that all the CM profiles, performance, lockscreen and launcher settings are all there and most of them work, ADW or Trebuchet launcher is there in full force, along with the terminal, DSP settings and whatever else CM adds. If it gets picked up by the Verge, the first comment will be "NICE! DR KMOBS JUST TOTALLY PWND HTC!!! ITS JUST SO CRAZY THAT ONE DEV CAN BEAT ALL OF HTC TO GIVE US JB!!!", of course HTC will be way ahead, they just don't post videos about how broken JB is on their new phones.
These bits are just like the massive number of clocks in sense, social integration in Blur, and brightly coloured and questionably useful things Wizz adds. They're just apps. They're reused in every version of Blur/Wiz/Sense. Motorola doesn't write a whole new version of the SMS app for each phone that gets Blur, they reuse that code, and its relatively easy to write in the first place, especially if they base it on the stock SMS app, which they do. Most of the parts of sense 4.0 are exactly the same code on the One X, One S and One V, even the desire C runs the same sense.
As of this writing, you can download and build android 4.0.4 for the Galaxy Nexus, Nexus S and Xoom. Nothing else. If a phone or tablet is not using all of the exact same hardware as one of these devices, the OEM is SOL. They have to make thousands of changes to android to make each peice of the phone work. Qualcomm has to write a few hundred thousand of lines of code to make ICS work on snapdragons like it does on OMAP4's, Nvdia has to do the same for the Tegra. NXP has to make change the NFC support for each chip in their product line. Sony has to write new camera drivers. Micralyne has to make it work for thier gyroscopes, so does Dalsa. Samsung, moto and HTC all have to bring this together and make sure it all works together for each phone in their line, almost none of that is reusable because each phone in a product line is a different arrangement of different parts. This takes a ton of time and it really can't be cut down.
This stuff is extremely hard, and as slow as it is, its usually still rushed. The next time verizon halts an update, it won't be because VZW navigator crashes or the Sense launcher force closes if you look at it funny, it'll be because the update breaks wifi or causes signal loss or screws up the camera.
The same is true on your computer, the start menu works just fine on Intel or AMD chips, but your GPU needs constant driver updates, and your trackpad never quite works. Hardware is really, well, hard.
Can't They Just Release Unskinned Builds?
Well, they could, but since the delay is all in the hardware and hardware related testing, your Senseless ROM would come at exactly the same time as a Sensible one, all while forcing HTC to maintain two source trees. They aren't doing that because screw that.
But Skins Are Ugly and Slow
They only really are uglier and slower than the newer version of android. Skins are getting a lot better. Sense 4.0 blows Sense 3.0 out of the water. GingerBlur is miles ahead of FroyoBlur, the galaxy S sucked with eclairWiz because eclair sucked, especially compared to Froyo, and when the Galaxy S got Froyo it sucked a lot less.
Skins Drive android forward. Without Blur we wouldn't have deep, built-in social network integration. Without Sense, we wouldn't have scrolling widgets. Without touchwiz we never would have had the success that comes from being able to say "its like an iphone, but...". Jellybean is the first version of android that doesn't take the majority of its features from android skins, every other release has been a cleanup and mashup of the last version's skins. Android as a platform grows because the manufacturers try to do new, innovative things with it. To see what happens without experimentation and different inputs from different perspectives, look no further than windows phone. Every new idea in a new version of windows phone comes from microsoft, a lot of it is iterative, slow, boring even. Every new idea in android is Google's coolest version of an idea from samsung, HTC or motorola and sometimes even Cyanogenmod.
So Hardware Diversity Is the Problem?
Yes. If you want to call it that. Android's success comes from choice. The simple fact is, if you want consistent updates, directly from Google, you have to choose Nexus, or a phone that is nearly identical to the nexus. If you want a phone with a keyboard, you have to wait for the OEM to get the keyboard working. If you want LTE, you have to wait for someone to get LTE working. If you want a different display, you have to wait for the display drivers. This can't change.
There is a little hope, last week at I/O, Google announced the PDK - Platform Developer Kit. It essentially means that they''ll work with more than just the nexus OEMs on each new version of android letting the more important hardware manufacturers help with the next release. It basically moves those months of development behind closed doors and closed source, giving the partners a head start.
So, Roll Over and Accept Skins
Hardly. Sometimes, these attempts at innovation go horribly wrong. Hand an LG to someone and they'll be visibly frustrated in a few seconds. Vlad called VoiceTalk on the GS2 a gimmick "Whatever value you extract from using it will be be the result of sheer stubbornness on your part rather than good software design." Nobody can seem to make a photo gallery that isn't uglier and clunkier than stock. Get a hate-on for these things for what they are: bad software and bad user experiences. They aren't the reason why 19% of users are still stuck on Froyo.
Couldn't Android be a Teensy Bit Less Open?
Only if you want to gut the innovation and diversity that drives Android, while accomplishing next to nothing. Stop hating on skins.