Microsoft has been getting more focused on the enterprise and server side of things. While Windows desktop and Office licenses may be the bulk of its income stream and will be for the short term, Microsoft is quickly moving to make its money on the various server licenses. Think about it like this: Is it easier for Microsoft to sell a $10,000 license for a Datacenter edition of Microsoft and practically give away the client OSs or to try to sell 100 licenses at $100 each? With the former, Microsoft makes money when use goes up, as opposed to the latter which depends on the number of users going up. With the outsourcing and automating going on, do you really want to tie your business strategy to user count?
Microsoft has known for some time what HP just figured out: While there may still be a lot of profits to be made in desktop computing, there won't be soon. As companies shift more to Web applications, paying $100 or so for a Windows license doesn't make much sense. After all, many typical users are not using any locally running applications other than a Web browser, something like iTunes or some other media player, and perhaps Office. In addition, few people use more of Office's features than what Office Metro (in WP7) or Office Web (in Office 365/SharePoint) have. Combined with SharePoint on the server side, locally running Office is becoming less compelling for any business that does not depend on specialized macros or Office plugins. There hasn't been a compelling Office upgrade in at least a decade, because the feature set 10 years ago was more than ample for the average person (who could actually get away with using WordPerfect 5.1 if they wanted).
Windows Vista was Microsoft's last real stab at reviving desktop computing with the traditional model and wedding it to the future. If you don't believe me, look at the development-related techs that came with it: WPF, sensor access, pen input (for the slate and convertible PCs Microsoft was pushing), the Aero UI, and more. This was followed by the Silverlight initiative, which was Microsoft's final attempt to impose its own standards and ideas onto the Web. Both Vista and Silverlight failed to meet Microsoft's goals. Other than ditching WinForms for WPF in some cases, streaming video, or making internal-use-only line of business apps in Silverlight, neither set of technologies really took off. WPF and Silverlight didn't spark interest in creating new, unique, and beautiful desktop or in-browser apps.
WCF, LINQ, and to a lesser extent Entity Framework have done very well. After those technologies started to move, Microsoft pushed ASP.NET MVC hard. For a long time, I saw ASP.NET MVC as a "me too" technology (which it is, incidentally), but now I see how it fits into Microsoft's strategy. Between ASP.NET MVC and Microsoft's big commitment to jQuery, the company has made it much easier for developers to produce AJAX-based applications delivering a desktop-like experience. In addition, Microsoft has given us IIS Express and SQL Server Compact Edition for a "no install" deployment of Web apps, which is huge for cloud deployment to Platform-as-a-Service providers. In addition, it gives developers the chance to embed SQL Server and IIS into their applications, so they can deploy Web applications in a standalone mode to clients.
Windows 8 is a bold vision from Microsoft; the company is asking developers to start from scratch yet again. As Andrew Binstock points out on Dr. Dobb's, other Microsoft pushes for full reboots of development had really compelling arguments behind them, such as the shift from DOS to Windows or 16 bit computing to 32 bit computing. Where's the compelling rationale here? To be honest, developers are already making the move. Web apps have been exploding lately. I don't know many developers who are starting new projects as desktop applications. Web apps give you superior reach, especially to those pesky mobile users who are soon going to be penetrating the desktop arena.
Microsoft is already acknowledging the concerns around the Windows 8 Start screen. The changes in Windows 8 go far beyond the Start screen -- they are essentially a deep and pervasive shift from desktop applications to mobile apps in the development model. Again, if you want a sneak peek at what Windows 8 development is like, go look at WP7 development. The signal that Microsoft is giving us is loud and clear: if you need sophisticated applications, write Web apps; if you want easy-to-use applications, write Metro/WinRT apps. Microsoft doesn't want you writing desktop applications.
I keep hearing people say, "oh, they won't cut backwards compatibility." Maybe, maybe not -- remember what Microsoft learned from WP7. Microsoft may be willing to not invest much in making legacy applications play nicely with Windows 8. Microsoft would certainly be delighted if everyone moved to Metro/WinRT, because that would bootstrap the ARM application environment nicely.
If you want a wide open marketplace, Metro/WinRT is a great place to start developing. The truth is, even if Windows 8 tanks or takes off slowly, you are often better being the only fish in a small pond than a small fish in a giant ocean when it comes to app markets.
In an upcoming post, I will focus on exactly what technologies and concepts are important for starting to develop Metro/WinRT apps.
J.JaAlso read: 10 ways Microsoft can make Windows 8 a game changer
Justin James is the Lead Architect for Conigent.