Another interesting discussion came up on the private Mobius discussion list, and my response was a bit long so I thought it was worth sharing here. One of the Mobius group members made a comment about how it was time for something to be done to separate the firmware from the customizations that operators made - allowing for easy OS and application updates. My response, slightly expanded for public consumption...
We were at that point back in 2001 when some of the first generation Pocket PCs were denied upgrades to the new OS. This has been a sore point for Windows Mobile from the start.
iPhone = Two phones + one OS + one company = easy updates
Zune = Three devices + one OS + one company = easy updates
Windows Mobile = Dozens (hundreds?) of phones + two OS' + dozens of companies = nightmare update scenario
This issue has come up time and time again: because of all the different phone hardware, and the low-level software customization required for drivers and whatnot, OS updates and even simple patches are much more complicated than they could be if the underlying system was simpler. Every time there's a new version of Windows Mobile, we hear that updates are going to be made easier, but it never seems to translate into actual updates for users. Someone smarter than me can probably explain this, but on desktop PCs (at least with Windows) you have a hardware abstraction layer (HAL) that takes care of certain important things related to hardware and software talking to each other. Here's part of the Wikipedia definition:
"A hardware abstraction layer (HAL) is an abstraction layer, implemented in software, between the physical hardware of a computer and the software that runs on that computer. Its function is to hide differences in hardware from most of the operating system kernel, so that most of the kernel-mode code does not need to be changed to run on systems with different hardware. On a PC, HAL can basically be considered to be the driver for the motherboard and allows instructions from higher level computer languages to communicate with lower level components, such as directly with hardware." Read more...