Redmond Review
Modern Apps or Desktop? The Answer May be Spelled W-E-B
Can Microsoft successfully straddle the fence between Windows desktop and the mobile app age? And what should you do about it?
In the financial markets, people are fond of saying "don't fight the Fed." In the Windows development market, we might say "don't fight the Red(mond)." So as Microsoft continues to put more emphasis on the Modern/Windows Store touch-first environment in Windows 8 and Windows RT, the question arises: should .NET developers continue to develop for the Windows desktop?
The Windows desktop has history and heritage to it, and that gives it the kind of staying power that is very hard to defeat, even if Microsoft wanted to. Meanwhile, the signs of such deprecation are there: The Windows 8 desktop is barely evolved from the Windows 7 one. Microsoft field personnel are being heavily tasked with making sure as many apps as possible are added to the Windows Store, with $100 bounties offered to developers to stoke the progress. It sure seems like the writing's on the wall for the Windows desktop, and it's in Microsoft's handwriting.
Is it really that simple, though? Is it Windows Store apps or bust for .NET developers? Does an answer of "no" fight the Red?
Analyst's Hat
If there were ever a time to realize that Microsoft is not one monolithic organization, this is it. In Redmond, the Windows Division has long wielded massive influence. With Windows being one of Microsoft's two big cash cows (Office is the other), that just makes sense. But that doesn't mean WinDiv has absolute power. The Server and Tools Business is influential too, and the Business Solutions Division (which includes Office) calls a lot of shots of its own.
In Server and Tools, the big push is Azure, and the Azure strategy is to provide cloud infrastructure that's language- and even platform-neutral. On Windows Azure, you can just as easily run PHP on Linux with MongoDB as you can C# on Windows with Azure SQL Database. On the Office side, the new Apps model leads us away from Windows desktop-based add-ins and towards self- or cloud-hosted Web apps, leveraging the JavaScript API for Office. Even the Windows Division has hitched its ride to the Web technology bandwagon, with WinJS and HTML5.
Microsoft's divisions aren't provinces -- they're states. They each have their own laws and cultures, and yet remain loyal to the corporate parent and its greater strategy, just as state leaders rally patriotically behind Federal interests on the international stage. Divisions aren't just loyal to company strategy; they help shape it. So if you're trying to determine what Microsoft will mandate next, take a look at what its divisions are doing now to forecast the emerging consensus strategy.
The Windows Division is pushing developers towards native client development, but Windows supports two native models, with the company and the market at odds over which one should prevail. That will take a while to shake out, and it makes sense to look to the other Microsoft divisions to break the tie. And with the Server and Tools Business, and the Business Division, pushing toward platform independent Web technology, that would seem to be the safe bet, and a smart one, for developers as well.
Native (Platforms) are Restless
Does this mean native is dead? Hardly; iOS and Android have proven that people still love their native apps, a lot. The real issue is that Web technologies are certain to be relevant for a long time and the native platform game, after having been stable for more than 20 years, is encountering upheaval that hasn't resolved yet. To which platform should you allocate more investment: the one that's volatile or the one that's stable? The latter would seem more sensible in the majority of cases.
As Windows 8/RT/Phone, iOS and Android fight for market share, frameworks that abstract away platform differences are gaining in popularity. The Unity game engine and Xamarin.iOS/Xamarin.Android (formerly MonoTouch) do this for games and apps developers, respectively. On the Web side, PhoneGap and Google's Packaged Apps seek to make HTML5 and JavaScript universal tools that navigate the platform storm. But these tools are platforms in themselves, and betting on them must be thought through as much as investments in the various platforms they target.
The void that exists is a dominant standard, and all of these vendors are trying to fill that void. Microsoft used to fill that void with Windows. Now the center of gravity is shifting and it's hard to tell where it will settle in. It still makes sense to hedge your bets and develop for a combination of platforms. But it's also time to bias investment towards Web application technologies, including HTML5 and JavaScript.
And with JavaScript frameworks like jQuery 2.0 offering support for Windows Store apps, perhaps.NET devs will come full circle, back to the client.
About the Author
Andrew Brust is Research Director for Big Data and Analytics at Gigaom Research. Andrew is co-author of "Programming Microsoft SQL Server 2012" (Microsoft Press); an advisor to NYTECH, the New York Technology Council; co-moderator of Big On Data - New York's Data Intelligence Meetup; serves as Microsoft Regional Director and MVP; and is conference co-chair of Visual Studio Live!