I know that I struck a nerve with a comment about Windows Phone apps, Windows 8, and Microsoft Windows President Steven Sinofsky. I wanted to explore this topic further on two fronts. First of course is the entire Windows Phone app question, and then a little on the Start menu. And I’ll include some general SteveSi related comments along the way.
There are basically three ways that Windows 8 could have supported Windows Phone 7.x apps directly. In increasing order of desirability they are:
1) Packaged a WP7.x emulator in Windows 8, basically allowing apps to run but keeping them completely isolated from Windows 8. Just say no and leave it at that.
2) Created a parallel WP7.x stack and allowed the Windows Store to carry those applications. Handled some of the more common Windows 8 Contracts via system provided defaults. Perhaps even have extended the WP7.x programming model, in conjunction with the WP team, to support the newer Windows 8 concepts (again, like contracts).
3) Started with the Windows Phone 7.0 app model as the basis for the Windows 8 app model. Evolve it substantially, but in an upward compatible fashion.
We already ruled out #1, so let’s address #3. While there are over 100K apps now available for WP7.x, that wasn’t the case at the start of the Windows 8 project. Basically when decisions about Windows 8 were being made there were NO WP7 apps. Moreover, the overall app plat approach taken by WP was in conflict with a couple of the key beliefs driving the Windows 8 app platform.
Windows Phone 7 was done under the most severe time pressure I’ve ever seen for a project of its size. To ship on schedule it had to rely on quite a few pre-existing pieces of technology. For example, the .NET Compact Framework, Silverlight, Visual Studio and Expression Blend had to be used with at most modest changes. Likewise many other parts of the product were taken from earlier Windows Mobile 7, XNA, Zune, and other efforts. An overall app model was defined and implemented around and incorporating all these pieces. I think the team did an outstanding job.
Charlie Kindel (who ran the Windows Phone app platform Program Management team at the time) has commented via Twitter that Steven Sinofsky chose to bet against Windows Phone. I think that is certainly one of the answers. If you evaluate Sinofsky’s bet against two criteria you get radically different views of if he was right or wrong. Based on the size of the app library he was wrong. Based on the number of Windows Phones sold he was right. But why bet against Windows Phone rather than build on their work?
You may recall from other sources that Steven Sinofsky has never been known to be a .NET fan. While others within Microsoft, and even senior people in the (pre-Windows 8) Windows organization, wanted to move to an entirely .NET app model for Windows Steven did not. He (and others fyi) wanted to re-engage the native code C++ developers that Microsoft had been neglecting. And they wanted to co-opt the huge base of web developers to create apps for the Windows platform. Well, what had the Windows Phone guys done? They’d implemented a .NET only app platform. Could the Windows Phone app platform evolve to address the native and web developers? Sure. But with no existing library of apps and a desire not to have .NET-centric platform at the core of Windows Sinofsky apparently felt pretty comfortable ignoring the Windows Phone team’s work.
Of course deciding not to the base the Windows 8 app model on Windows Phone could just be a case of NIH, and there was probably a little of that at play. But at the same time I think the notion of a true reboot of Windows was growing. And evolving the Windows 8 app model from the Windows Phone 7.x app model, particularly in a way that allowed Windows Phone 7.x apps to run unchanged, meant bringing along a lot of legacy that didn’t belong in what was supposed to be a nice clean new app model.
Which brings me to option #2. Why not have included the ability to run Windows Phone 7.x apps on Windows 8 as a parallel stack? This seems easy from a technology standpoint as both the CLR and Silverlight can run on the platform. Most of the work would have been in porting the WP7.x-specific librares. And deciding how to integrate with Windows 8 concepts that were foreign to WP7.x like Contracts. And provide a virtual Back “button”. Its use could have been restricted in such ways that it wouldn’t really be an alternative to the new Windows Runtime app model. You’d get an instant large library of apps, most of which felt alien running on a Windows 8 system.
Take the early days of the iPad, where most apps were actually iPhone apps that the iPad would run at 2x size. In that case, even with an identical app model, many apps really felt ill-suited for use on a tablet. The benefit of sharing the app model came later, when many (perhaps most) apps were able to have a single executable that adapted its experience for the iPhone or iPad. Or take Android tablets, where they’ve had trouble gaining traction at least partially because they had so few apps that really were tablet-aware. While it may be changing now, the first generations of Android-based tablets suffered mightily because all they had to run on them were smartphone apps. And again, that is with a shared app model. So it is reasonable to question how well WP 7.x apps, with a different app model, user model, etc. would be accepted on a Windows 8 system.
In my earlier post today I took the position that having the large library of suboptimal apps, basically WP 7.x apps running on Windows 8, would have significantly helped the platform. I might be right, I might not. Having the large library would have been a marketing message coup that helped the Windows 8/RT tablet business get off to a quick start. But, if it turned into another excuse for developers to delay writing to the new (“Windows Store”) app platform then it would have hurt the Windows 8/RT effort more than it would help. And then there is that pesky problem of not wanting to create this new legacy that you could almost never remove from Windows.
So was this a well reasoned decision by Sinofsky or one driven by arrogance? It is both. I just layed out an argument that says Steven made the right choice. But its also true that he bet against another of the company’s key efforts, drove away a number of his senior people, and believed he knew better than the Developer Division what developers wanted. We’ll soon know if he was right or wrong. If he was right, then Windows has a nice shiny new app model that will live on for many years and evolutions, including ones in which the legacy Win32 app model dissapears completely.
You can extend this thinking to the controversy around removing the Start menu. The Start menu, and indeed the entire desktop, are legacies that will have to be removed from Windows over time. While the desktop itself is probably with us for a couple of additional major Windows releases (though there may be truly desktop-free editions sooner than that) the start menu was something that Steven has bet he could get away with not bringing forward into Windows 8. By doing so he forces users to start living in the new usage paradigm rather than totally avoiding it. Yes you can still set up a system to avoid leaving the desktop most of the time. But you can’t avoid the new world completely. In doing so he sets people up to eventually accept systems without the desktop at all (or at least Windows RT systems for personal use even if they need the desktop at work, for example).
Is Sinofsky’s unwavering stance on dropping the Start menu arrogant? Perhaps. Steven is alienating a lot of Windows users, but they are primarily not the users he’s expecting to adopt Windows 8 anyway. He can worry about how to bring those people on board as part of a “Windows 9″ two or three years down the road.
For me the most interesting part of the decisions that Sinofsky has been making is that they often favor a long term strategic direction over short term more pragmatic ways of enhancing the success of Windows 8. This flies in the face of his history, which is to focus on the current release and its requirements rather than the future (because, for example, you really can’t predict what the requirements for future releases will be). If he’d kept an option for the Start menu Windows 8 would be a far less controversial release. If he’d included a way to run Windows Phone 7.5 apps on Windows 8 then a big chunk of the developer community wouldn’t feel like they’re being abandoned. But he’d also have tied his hands at moving the reimagined Windows forward in ways that Apple and Google have made absolutely critical.
So is Steven Sinofsky arrogant? I suspect that anyone who has tried to partner with him or his organization over the years thinks so. But his decisions aren’t stupid ones. And he’s been right more often than he’s been wrong. While I worry about it, I think he’ll be proven right on the decision not to support Windows Phone 7.x apps. At least if developers don’t take too long to jump on the Windows Store app bandwagon. The Start menu decision? That is the one that still could prove his, and Windows 8’s, undoing. I don’t miss the Start menu, but many desktop power users (and analysts who talk to them) think its absense is the kiss of death. In a few months we’ll know where on the spectrum, from brilliant move to the horrid mistake, the decision really was.