I hit my head on the way out of the bathroom hard enough to bleed slightly. So, after applying a bandaid, I think it's time to bitch about phone OSes.
I recently was playing with an Android phone while waiting for my brother to pay the bill at the local AT&T store. One thing finally struck me why I really dislike Android. It's -almost- perfect, but where it fails, it fails pretty hard.
First, is the UI. The UI isn't hardware accelerated. Meaning that the fancy 3D chip that powers games could also be speeding up the front end UI. Now, in the past, this used to incur penalties with battery life. However, with modern graphics chips, doing these operations are now so efficient, you wouldn't notice any perceivable drain on the battery or generate any more heat. There's largely no excuse for the EVO to ship with a GPU that can push more graphical operations per second than my old Dreamcast can but not have any of that horsepower being used for the UI.
What does this mean in the real world? Laggy UI. Browser that renders slowly. Dragging elements around is ridiculously jittery.
Second, is the underlying UI API. In addition to the fact that the UI itself isn't hardware accelerated, the UI API sort of sucks. Doing things like transitions, sliding elements around, doing graphical manipulations, etc. all have to be done mostly by hand. UI elements are also sort of bring-your-own. Which kind of sucks. Especially for developers who are used to developing on OSes like Windows Mobile where UI elements could be tiny because you needed a stylus to use the bloody thing. UI elements can go anywhere, and look like anything, so, using it can be really tricky. I don't trust developers to be graphic designers. Largely because they mostly suck at it.
Third is the app ecosystem. Let me bitch about the market place actually. The Android Marketplace is full of nasty malware that want to steal your personal information or otherwise pwn you phone while masquerading as Justin Bieber wall papers, or Kesha ring tone download packs. Not only that, but the Marketplace doesn't support easy check out the same way that other application repositories do. The App Store for instance, does one click tied to your Apple ID. Bills via available balance from gift cards or from your credit card. Easy right? Compare that to using Google Checkout. I really do NOT want to have to be careful on the official app store about what apps I grab, and when I do want to buy one, I want it to be simple and curated. I really don't care that non-official app stores are full of crap, they're third party, not Google's fault. However, when comparing with a default Cydia list of repo-sources, I'd rather download shit through Cydia than the Android market place. When the iPhone's unofficial app repository is better than your official source, you're doing something really wrong.
Finally, it's the amount of control Google has over their own project. While I applaud Google for open sourcing the thing under the GPLv2, when vendors push out hardware, they do so under a different license, and part of their license should require certain requirements. CPUs should be a certain speed, RAM, etc. to ensure some sort of consistent experience. Another thing that should be absolutely required of OEMs that Google isn't forcing, is that all devices shipped in a given time frame should be given timely OS updates when they happen. It's sad to see devices still shipping with 2.1, 2.2, and in some kind of rare cases, 1.6. Why? Why are new phones being announced with old OSes with no chance of upgrade? It's stupid. Yes, the iPhone 3G didn't get 4.3.1 and the first gen iPhone didn't get iOS 4. But the 3G is nearly 3 years old and the first gen iPhone is nearly 4. There are Android phones that are six months old that aren't going to see *FroYo* much less Gingerbread.
Android's a good OS, but so close to being a great OS it sort of leaves a bad taste in my mouth. Google's been cracking down on OEMs shipping lousy hardware with lousy OSs, so hopefully we'll see a better experience coming up soon.