I have been using a (mostly) functional version of Android 4.0 on my Samsung Galaxy Tab 10.1, thanks to the efforts of the CyanogenMod people and the developers over at the XDA forums. Aside from no functional camera or VPN--both due to the lack of working drivers from Samsung--everything else is functioning.

I don't think the OEMs or the carriers are the problem. Ever since smartphones appeared, OS updates have been fragmented, delayed, or flat out ignored unless there was a showstopping bug that needed fixing. OEMs simply aren't in the business of maintaining handset operating systems. They've been forced into the role due to the advancing technology.

Apple recognized this as a problem from day one with the iPhone. They took the decision out of the hands of the OEMs and the mobile carriers, and handled all of the OS updates themselves. Admittedly, that's a lot easier to do when you also control the hardware as well, and only have a few models to deal with.

The solution is to have a virtual layer, much in the same way that virtualized host systems like VMware, Hyper-V and VirtualBox function. They create a standardized layer, and then each operating system sees that as the hardware platform that it will be installed on.

Google wouldn't even be required to create the virtual layer. All they would need to do is provide the OEMs with APIs and hardware specifications and let them build it. They wouldn't have to develop OS-specific drivers, and customers wouldn't be forced to sit on their hands and wait for the OEMs to get around to writing updates.

Google would have complete control of the OS, because every device would be presenting the exact same hardware layer to the operating system. They could put out software updates like clockwork, and they wouldn't be held back by the OEMs and mobile carriers because they didn't want to be bothered spending resources on software updates.

But until that happens, we the customers are stuck watching OEMs release new devices with new operating system updates while they let their previous generation of hardware languish. Don't blame Google for Android fragmentation; blame the OEMs and mobile carriers for having too much control over the operating system and no desire to spend any effort to provide updates.