Since my shift of job, I'm "living" on a multi-platform environment (in fact, I am part of the minority of Windows users), and a lot of people has iPhones. Add to it some friends who have them too, and it's impossible to avoid looking and chatting about them. So this post is some sort of personal comparison and thoughts about iPhone and Windows Mobile.
I've been using Windows Mobile since I think 8 years (the old HPs with 4 colors and a terrible battery), so I have some knowledge of their evolution.
Windows Mobile has always been very similar. Apart from higher resolution "cousins" (which haven't extended too much to the market, maybe because of the higher battery consumption, maybe because a lot of applications don't support non standard 320x240 or 240x320 resolutions), most core changes habe been related either to internal aspects (less hangs/errors, better multithreading, lower battery consumption, smaller WM cores...) or to integrate Windows Mobile with phones (but then, not so good, because Smartphones are just non-touch screens and fewer buttons, and at least with WM5.0 Visual Studio had yet problems differentiating them).
So we can say that Windows Mobile evolves very slowly, except on from the developers perspective, because since .NET Compact Framework appeared, creating apps has been simplified and extended a lot (currently we have .NET CF versions 2.0 and 3.5, although are not comparable to normal .NET Framework ones).
And with P/Invoke we always have the option to access all the APIs non available from managed code.
But Windows Mobile has a really big burden that Microsoft seems to avoid constantly: Usability.
Using a smartphone is far away from using a low-cost Nokia, and miles away from using an iPhone. And the PDAs, phone or not, can't be properly used without the pen, no matter how much effort companies like HTC put into creating custom UI; they are just applications over the Windows GUI and you end having to use it for any non-trivial task.
But then came the iPhone and revolution arised. A semi-perfect UI, impressive look&feel, fast responses, very decent battery, big buttons and on-screen keyboard to avoid needing a pen...
So my first question is: Why Microsoft doesn't improves drastically the UI of Windows Mobile? After all those years it should have been a logical advance. Now, it is a requisite.
Windows Mobile 6.5 has indeed improved it, but both internet articles and friends told me that it is "the Windows Vista of PDAs": Pretty but slow and a resource hog. So either you buy a new non-cheap phone with a fast "cpu, or forget about it. Do we have to wait now until WM7.0 to "fix" resource usage?
Apple is improving iPhone OS quite vastly, adding tons of new APIs and radical unpresent functionalities (like push application messages). Why MS don't does something similar, at least with the things it most needs?
The iPhone has hardware accelerated graphics built-in, and a growing list of impressive games. Windows Mobile has had touch screens since they appeared, and until the Nintendo DS came out, we didn't had more than one or two games that implemented radically different ways of interacting with a pen on a touch screen.
Some PDAs even had a now defunct NVidia 3D accelerator. And yet, I only play two games or ScummVM from my PDA, because the rest of games suck.
Why so much resource, innovation (at the past) and time wasted for nothing?
The iPhone has some serious lacks, like not supporting background applications. Windows Mobile has always had them, and it is so easy to develop one. And yet, Appe launches a "patch" (push messages) and I'm sure it will make the iPhone shine even more.
I am tired of phone company spam over SMS, so I have in mind developing an SMS-spam filter (a background application that checks new SMS as they arrive and using a black-list deletes them automatically). That kind of application can't be done for the iPhone, unless Apple decides to do it (or you jailbreak it, because I've seen that kind of apps on a unlocked iPhone).
We have Windows Mobile emulators, APIs, third party components, native DLLs, ActiveSync APIs, PocketOutlook, IRDA, GPRS, 3G, Wireless, Bluetooth, SMS, MMS, push mail... tons of options at our disposal. And all of them lightly used.
Just look at the browsers... iPhones Safari is almost perfect, it only lacks Flash support, but renders webpages perfectly, allows zoom and works like a charm. Is almost equal as using the desktop Safari.
Apple has some dictatorial restrictions: App store apps having to be approved, SDK only for Mac and limited (but growing a lot in new APIs), no option of other browsers or applications already present at the iPhone OS... But it works! At least what they provide is really good, enough for the majority of the users!
I love having the option to develop my own applications for the devices I use, I like developing in C# for my HTC Touch. But the truth is that if in Spain Telefonica didn't had the monopoly of iPhone distribution, I would probably switch from Windows Mobile to an iPhone, even not being able to develop my apps (or maybe yes, if Mac OS and the SDK works inside a VM...).
Palm is already dead because of their lack of innovation, and Windows Mobile took its market.
Blackberrys are widely extended for corporate use because they won't be really nice, but they are usable and good for email.
If Microsoft doesn't "awakes" and starts focusing on really improving Windows Mobile, they will lose their market share and user base and keep their PDA-Phones only for their employees and friends.
And from my developer perspective, that would be a pity. Windows Mobile isn't bad, it is just too desktop-like and needs to become a real phone-oriented OS. But Microsoft doesn't seems to understand that, and is slowly going to the same path Palm went: slow and delayed improvement (not evolution). While iPhone is becoming a revolution.
Note: Here it is a very similar post to what I think of iPhone, but more deep as the author actually owns an iPhone and not has only played with them as I.