I learned this morning that Windows Phone 7 – the smartphone OS that bricks your phone! – is a skin over a bunch of core components from Windows CE. Which if you came in late, is widely regarded as the second most wretched hive of bugs and villainy Microsoft ever shipped.
(Yes, I said “second most”. Even WinCE could not come near matching the epic failitude of Microsoft Bob, which can only be explained by the justified supposition that its product manager was doing the mattress mambo with Bill Gates. She later married him, and Microsoft Bob disappeared down the event horizon of a black hole created by its own suckiness.)
My initial reaction to this news was “Doomed! What on Earth were they thinking?“. On reflection, however, there is an angle from which this way of slapping WP7 together makes a horrifying kind of sense. Not that I now think it’s any less doomed, mind you…but there are perhaps some useful lessons to be learned if we examine this fiasco from the Microsoft point of view.
It’s 2008. Microsoft’s previous attempt at a new mobile-phone OS, codename “Photon”, has just crashed and burned. Suppose you are the loyal Microsoftie told that Microsoft needs to produce a new smartphone operating system on a deadline of less than three years. You can’t use anything with open-source ick all over it because der Ballmer would have an apeshit freakout and fire your ass the second he found out; there go all your best options. The weenies over in R&D have things they call operating systems, but after listening to a couple of presentations about stuff like fine-grained parallelism and persistent objects you realize they really are research vehicles and adapting one would be as much work as building from scratch.
But you don’t have enough time to build a new OS from scratch. You’re on a tight deadline. And that deadline, for once, isn’t PHB bullshit; Apple shipped in early 2007, and by 3Q2009 there’s also a real risk from Android. In either case a late first ship could find a competitor so entrenched in a supermajority position that all your NRE would have been effectively wasted. If your higher-ups hadn’t held you to a tight deadline, that would have been good evidence that they were on bad hallucinogens.
Note that this is not exactly, or not only, a “Microsoft is incompetent” analysis. Android took four years, 2003-2007, and that was with the tremendous boost it got by re-using the Linux kernel. Building a production-quality OS is not a weekend project, you can’t re-use Linux, and the tempo of today’s smartphone market is brutally fast. As recently as 2004 or so you might have had the luxury of three or four years to first ship, but not in 2008. You have to re-use massive amounts of code to have a prayer of shipping soon enough.
There’s all the WinMobile and WinCE code lying around, and programmers who know it. Trying to salvage something from that wreckage makes sense even if you know it’s mostly shit. Otherwise how are you going to meet deadline?
Reusing as much of WinCE as you can swallow without gagging is the rational-minimax thing to do under the constraints you’ve been handed. That doesn’t mean it’s a good thing, necessarily, as the owners of now-bricked WP7 phones have just found out. What really went wrong here?
Closed source went wrong. I think it’s that simple; we don’t actually need the hypothesis that anyone at Microsoft was incompetent. They were boxed in at every turn by Microsoft’s insistence that we must own it and no open source can be allowed on strategically critical paths. They couldn’t reuse the Linux kernel, and their WinCE equivalent had three orders of magnitude less engineering time in it (judging by calendar years of deployment and the maximum possible size of the dev team). Possibly four orders…
There’s no recovery from this, I think, because having to base WP7 on WinCE wasn’t a contingent, accidental failure. It was an essential one. And, a few years from now when smartphones are almost everyone’s primary computing devices, it may be the particular one that goes on Microsoft’s tombstone.