Windows 8, “The Desktop App”, Win32, and the one ARM man
It’s been almost a year. I can’t believe it. For almost an entire year, pundits (including myself have been talking about ARM and Windows. We started the year with lots of questions. We end the year with almost all of those questions… unanswered.
It’s Microsoft’s prerogative whether to answer the question of how well enterprise customers will be able to port any of their line-of-business (LOB) or ISVs can port any of their apps to Win32 on ARM. It was a huge question many of us walked into BUILD with, and several days later, walked back out with. The other day, Mary Jo Foley brought up the unanswered question again – “Microsoft to drop Desktop App from Windows 8 ARM tablets?“. It’s Microsoft’s question to answer when they’re ready. But I know Mary Jo’s readers, as well as my readers (and many of Microsoft’s partners – many of whom are also our valued readers) really would like to see some answer to this. We’ll find out, when Microsoft is ready.
As I look back on the year and Windows, I recall four distinct posts talking about Windows 8 and ARM . First, where I pondered whether we would see any announcement of Windows on ARM, pondered what SteveB’s pronouncements at CES almost a year ago meant for ARM (which raised many questions not answered yet, or not answered until BUILD), talked about the Win8/ARM announcements at D9/Computex in June, and talked again about Win32 after BUILD when many were writing Win32 off for dead. I also sang a little ditty about landscape vs. portrait oriented tablets, but I don’t think anybody ever read that.
Of all of these, I believe my post on September 20th on Win32 is the most important. In that post, I highlighted the important role that Win32 plays in Windows – even in the BUILD preview we received. I also do not believe any fundamental rearchitecture has occurred in the last 3 months or will in the next two that could calve off Win32 from the product.
Many have been stating that there would be no “desktop app” in Windows 8, as Mary Jo’s piece did. As far as I can tell she was not the originator of this errant term – it may have even been a proper noun that originated at/near BUILD that I either missed the pronouncement of, or have forgotten – perhaps out of a desire to forget it.
Let me be pointedly clear. There is no “desktop app” in Windows. Not in Windows Vista, not in Windows 7, not in Windows 8. Explorer is the host process for the Windows shell – even the new one, even in Windows 8. If there is no provision to show the Win32 desktop, that’s fundamentally different – but as I’ve said on Twitter – that’s not removing the room from the house, it is spackling over the door.
Given the large amount of code in Windows 8 that still runs on top of Win32 itself (including WinRT), even on ARM such as Task Manager, Notepad, and several of the deeper caverns in the dark cave that is the Windows Control Panel (I saw it myself at BUILD, at the partner pavilions). I don’t believe those are going away. I strongly believe the Windows desktop (or as errantly referred to, “the desktop app”) will remain. It’s just a question of how well developers – recompilers of existing apps, largely – of Win32 applications will ever be able to target it as a compile architecture using Visual Studio.
I can’t be certain, but I personally believe that Microsoft has elected to not discuss Win32 on ARM for one (or both) of two reasons. 1) Win32 on ARM performance isn’t peachy, and they’d rather people didn’t focus on that as the endgame at all, and 2)WinRT is the application platform for Windows 8 – any muddling of that message risks the viability of ARM completely.
Earlier this year I noted:
Throughout it’s life, NT has supported quite a few non x86 architectures – but in the end, every one has been deprecated – even the Intel Itanium (IA64) architecture is now end-of-lifed – leaving x86 and it’s descendant x64 as the sole Windows architectures. Again.
That’s very, very important to understand. Whether 1 or 2 above is the reason why Microsoft won’t discuss ARM and Win32 in the same sentence doesn’t matter. Win32 application portability has always sucked on any non x86-based processor. Even if you can get the entire OS fundamentals available for Win32 on the non-x86 architecture, either the horrible performance, some section of missing, broken, or changed Win32 calls, or a vacuum of partner redistributable libraries that prevented app porting fatally hosed every platform port other than x64. Really. Things haven’t ever worked out as planned except with x64, which is a fundamentally different case than any other architecture.
WinRT is Microsoft’s bet on the future. Even if little niblets of Win32 are available on ARM in the end, even if you can run certain .NET apps or certain recompiled PE binaries using certain redistributable libraries there, WinRT is the bridge Microsoft is betting on.
In many ways, this isn’t unlike the origins of Windows NT, which as I noted earlier this year was largely done on the Intel i860 RISC processor, and not the Intel x86, in order to encourage platform portability. Surely Steven Sinofsky and a few others at Microsoft know just how much of Win32 will be customer visible/usable in Windows 8 on ARM. But they don’t want you to think about that. They want all eyes on WinRT – far above the processor architecture, as WinRT needs to have a breadth of apps available in order to cantilever Windows 8 on ARM to success by leveraging apps written on x86/x64 Windows systems.