We released Windows Mobile 5 a few months ago and devices are starting to hit the market now.  A question I've seen asked in a number of places is, "Why can't I upgrade my existing WM 2003 SE devices to WM5?" 

The answer is sure to get me a bunch of angry comments from people who abbreviate our name "M$."  You can choose to see this as spin from a greedy marketing wonk, or you can see it for what it is--an honest attempt from a developer to explain how this stuff works. 


Possible vs. Practical
Since 2002, we've set our hardware requirements and designed our software to make it possible to upgrade any PocketPC or Smartphone at least once.  And there have been a number of devices that have upgraded from one version to the next.  Also, some of our partners have announced that some of their WM 2003 SE devices will be upgraded to WM5.  But, by and large, the number of devices that will upgrade is pretty small.

The trouble is, while it's possible to upgrade devices, it's often not practical to do so.  The reason it's not practical boils down this:
1) It costs a lot of money to upgrade a device
2) So few people upgrade that it's hard to amortize this cost


Second things First
I know that it's frustrating to want to upgrade and hear me say, "But no one upgrades."  Obviously you want to upgrade.  You wouldn't be reading this if you didn't.  And, I'll bet you know a bunch of people who want to upgrade as well.  Please understand, the companies involved do not say, "Hey, let's not bother to upgrade the device.  We won't piss off too many people."  Everyone wants to upgrade your devices.  There are a number of reasons for this, not the least of which is that we know that providing upgrades makes customers happy.  And, yes, we all like happy customers. 

It's not about figuring out how many people we can get away with annoying.  Upgrades don't happen due to a much simpler calculation. 

(Total cost of doing the upgrade) / (number of people who will use it) = (unreasonable price)

The value of "unreasonable price" varies from situation to situation.  But there have been times where it was higher than the price of a new phone.  Because there have been upgrades in the past, we know how many people do them.  And, even though you know a bunch of people who want to upgrade, it's still a tiny percentage of the owners of that device. 


Show me the Money
So what are all these costs?  The first is the cost of developing and testing all the drivers for a new version of the OS.  While Microsoft writes the bulk of the software on a WM device, a significant amount of it is written by the OEM or ODM who created the hardware.  And the part they do is the most complicated part of the device: the drivers, parts of the kernel, and the radio stack.  On major OS revisions, many of these parts need to be changed, sometimes dramatically.  And, any time they need to be changed, extensive testing needs to be done.

Another cost is associated with phone devices sold through Mobile Operators.  MOs rightfully want to be sure that any device on their network doesn't interfere with other devices on their network.  To do this, they put every device they plan to sell through a battery of tests that last weeks.  If a significant amount of code on the device changes, it needs to be retested.  And that takes away testing time from another device.  The Mobile Operator needs to make a conscious decision to test an upgrade that few people will use instead of testing a sexy new phone that potentially many more will buy.

Another cost comes from how difficult it is to upgrade these devices.  The steps are complicated, there are changes that users don't expect, and sometimes it doesn't work.  All of those situations result in calls to product support, which are really expensive.  Yes, you're capable of pulling off the upgrade.  But you're techy enough to be reading an MSDN site.  How do you think your grandmother would fare? 


Well, what are you doing about it?
In WM5 we spent a lot of time building an infrastructure for enabling updates that anyone can do.  We're heading toward a Windows Update sort of experience, where you're using your phone and it suddenly pops up a box that says something like, "An update is available, would you like to have it installed?"  Then you just need to select "Yes" and it'll happen for you.  How much OEMs and Mobile Operators make use of this infrastructure is up to them, but it's there now.  This should solve the "could your grandmother do it?" problem, especially for smaller updates like security fixes.

Of course, to do this, we had to change a ton of stuff, which makes the first two problems even bigger for this release.  No pain, no gain. 

We're doing a few things to make future updates easier for OEMs and Mobile Operators.  First, we're going to try to do some smaller releases that don't require changes in OEM code.  If the drivers don't need to change, then it's much easier for the OEM to take an update from us and make it work.  The Mobile Operators will still want to test the device, but, hopefully, if the drivers didn't change, they can have some assurance that the things they worry most about didn't change either.  That should make their testing easier.

Longer term, we're looking at ways to design our OS so that even major revisions don't require significant driver changes.  We don't know for sure that we'll be able to pull that off, but it's a goal we're striving toward. 


No it's not just "greed"
I've seen people complain that upgrades don't happen because the parties involved are just greedy.  I guess there's a fine line between "economics" and "greed" but that line does exist.  The economics of the situation are that it often just doesn't make sense to provide an upgrade.  We're working on both parts of that equation.  We're trying to reduce the total upgrade cost, and make upgrading easy enough that more people will make use of it.  Whether this work will result in more upgrades being provided in the future remains to be seen.  But we hope so.

Mike Calligaro