Microsoft recently wrote off a $900 million loss on its ARM-based Surface tablets. But according to Computerworld, the company intends to double down on its bet in hardware devices. CEO Steve Ballmer says that "Going forward, our strategy will focus on creating a family of devices and services... We will design, create and deliver through us and through third parties a complete family of Windows-powered devices." Look to Microsoft to produce more new hardware as it fights for market share in the handheld space. Ultimately Microsoft intends to develop a common code base across all devices -- from servers to desktops to handhelds -- that supports "write once, run anywhere."

Analyst Frank Gillett of Forrester Research says that Microsoft is fully committed to shifting away from its traditional emphasis on packaged software and into handheld devices and services (such as subscription software). He sees this as a fundamental reorientation, and says that "No matter what, it's a messy process."

I don't question the .NET language, I've never actually heard anything bad about C#; but the .NET strategy has been a massive misstep followed by many smaller ones.

In theory, .NET is good, in reality it has sucked. It's not reliable enough (I've had to fix enough machies where .NET has gone corrupt -- it's a true pain to clean up and fix), it's a burden on users (downloading / installing runtimes), doubly so ten years ago, hasn't really delivered on promises and Microsoft don't even dog food it after discovering that rewriting Explorer in managed code was impossible. It's a burden on developers too with constantly changing tools, runtimes, platform strategies (WinMo 6! 6.5! 7! 8! Silverlight is the future! HTML5 is the future! WinRT is the future!)

Looking at all this, I can only imagine that it would have been easier on every computer user (Microsoft themselves, end-users and developers) if they had just kept iterating on WIN32.

Windows Phone runs its developer stack on .NET, the Windows Phone head is now in charge of Windows. The powers that be inside WinDiv actively subverted .NET, and despite then it has thrived. Thrived in enterprises, on servers, and more recently on Windows/Windows Phone with their respective app stores being a majority .NET

Explorer not being managed is an aside and a result of a bad product cycle where many things, even non .NET things suffered. What isn't shown is what prospered, notably Indigo (WCF) and Avalon (WPF). WCF powers a lot of the aspx runtime now, especially WebAPI, and the fundamentals in WPF make up WinRT (XAML, Data binding, Dependency properties).

With WinRT, Microsoft united the chasm between managed and unmanaged whereby calling into native or managed WinRT components looks the same. That is a powerful concept which will put .NET on equal footing moving forward.

Also important is that WinDiv has taken ownership of XAML and the .NET metadata format that powers WinRT component registration and that comes with an implied legacy.

At the end of the day, .NET was owned by DevDiv and Win32 was owned by WinDiv. .NET focus by MS didn't impede Win32s development as much as Win32s development impeded .NETs for political reasons.