Three weeks ago, I attended TechRepublic Live 2011. One thing I like about the event is that I get to spend time with people on the non-development side of things. My job involves a lot of networking and systems administration, but when I get together with IT people, it is usually developers. At the event, I was able to chat with people from the other parts of IT, as well as thought leaders like TechRepublic’s Jason Hiner, Mark Kaelin, and Bill Detwiler, who spend a lot of time talking to people in the IT trenches. One of the things that gelled for me when I was at TechRepublic Live 2011 is that I realized Windows 8 will be Microsoft’s attempt at a Windows 95-like reimaging of what computing should be, and along the way it will initiate a complete rewrite of the development story.
In the TechRepublic post in which I looked at Windows 8 from the perspective of a developer, I was focused pretty closely on the technical details. In this post, I focus on the strategy that will make or break developers in the Microsoft ecosystem.
First and foremost, you have to understand that Microsoft believes desktop computing is an antiquated notion for all but a few specialized tasks. The company’s strategy the last couple of years has been to rush full tilt at making the non-desktop computing experiences as good as or better than desktop apps. Here are the basic facts of the situation.
Windows Phone 7 is a conceptual beta
Windows Phone 7 (WP7) is Microsoft’s most successful beta program ever. I do not mean that WP7 is a beta at a technical level; it is a well-produced, stable OS with a great UI for its intended purpose. Many pundits prior to the release of the Windows 8 Developer Preview were calling for WP7 to be scaled up to the tablet form factor, not for Windows 8 to be scaled down to tablets. Nearly every independent tech analyst I’ve read puts WP7 at the top or number two slot in terms of overall quality of phone OSs. That’s impressive.
WP7 is a beta of the concepts of things such as the Metro UI and the development model. The lessons Microsoft learned by putting WP7 in front of millions of users, tens of thousands of developers, and a number of hardware makers have clearly played a huge role in the decisions made around Windows 8. If you want to know what developing for Windows 8 will be like, try developing for WP7. While the libraries have some differences, there are a lot of similarities, including the multi-tasking model.
The most important thing that Microsoft learned from WP7 is that with the right support from its community, they could wipe the slate clean on an established development model and a year later have an application market that is booming. I cannot emphasize enough how important this is and how I think it will color Microsoft’s strategy for a long time. If you have a deep commitment to the current WinForms or WPF development models, you need to seriously evaluate that commitment in light of the WP7 lesson.
Clients are getting thinner
Many devices that are not corporate controlled PCs (tablets, smartphones, user-provided devices, etc.) are being used for work; in addition, users are now self-provisioning services for themselves via the public cloud. When you also factor in the high total cost of ownership (TCO) of the typical desktop PC and native applications, it’s clear the IT department is being squeezed hard. As a result, more and more IT departments are turning to Web applications (both on and off premise) to provide the cross-platform, access-anywhere, zero installation required experience. This allows IT departments to save a ton of money. The real cost savings in the cloud aren’t that you get rid of your data center, it’s that you no longer have to support locally installed, easily broken applications.
On top of all of this, a variety of Web technologies such as AJAX, Web services, and HTML5 are adding up to an experience that, while not nearly as slick as a good WPF or Adobe AIR application, is “good enough” to meet common needs, and is much easier to develop than a client/server application. While the days of the perfect thin client aren’t here yet (the most recent stab at this, Google’s Chromebook, hasn’t exactly been a success), clients are definitely getting thin to the point where many users don’t use native applications other than Office, a multimedia player, and a Web browser.
Office 15: the wildcard
Office 15 (which may be out in late 2012 or early 2013) is going to be the true sign of what will happen here. I wouldn’t be surprised if Office 15 was essentially Office 365. I wouldn’t be shocked if Office 15 was either an offshoot of Office Mobile as a Metro/WinRT application. I would be even less surprised if Office 15 was the Office Web stuff from Office 365, perhaps beefed up with some sort of local deployment or in-house deployment to placate security concerns.
Office 15 will clearly be the last traditional “desktop” version of Office, if it is offered as a “desktop” application at all. If Microsoft bites the bullet on Office 15 and goes straight to Office Web or Office Metro, the company will clearly be willing to nuke desktop apps completely. If Microsoft hedges its bets and delivers a native Office for x64 and Office Metro (or Office Web) for ARM, then we know the company is willing to give us a little bit of a gentle sunset.
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.