HoloLens took the spotlight when //build/ 2015 announced it had sold out in under an hour, but I can’t help but think at least as big a chunk of the excitement is around Windows 10 (or as we developers like to think of it, Windows Unified). As cool as HoloLens is, Windows 10 will most likely be landing in your lap long before HoloLens has images dancing in your living room.
If you’re not already preparing for Windows 10, your solution delivery stack could be in for a shock from the client up. Microsoft is in the process of launching a re-boot of itself, and Windows 10 is the fulcrum of that effort. As usual, many of its changes are aimed at pulling developers in. If solution development has a place in your organization, this will likely impact you as well.
“Mobile First / Cloud First” is, as always, the key phrase, and for a client OS… if it’s not for cloud devices…. give it a moment… let that sink in… Yes. Windows 10 is an OS for mobile devices. Even if your device is a big heavy block of a workstation sitting near your monitor. It will have the same mobile app store as phones and tablets, and it can be managed by the same Enterprise Mobile Device Manager (MDM).
Windows 8 was an introductory / transitional OS. With Windows 10, the transition matures. Windows 10’s maturity is likely to make it far more palatable than Windows 8 was. (Keep in mind that Windows 8 is only a “failure” in terms of Microsoft’s other OS releases… Windows 8/8.1 has a bigger install base than some of the most “successful” of its non-Microsoft competitors. If Windows 10 becomes the hit many foresee it to be, it has potential to become the de facto standard platform to truly de-throne XP and even Windows 7.)
Windows 10 also adds a bit of a surprise, especially around browser technology. Microsoft is tossing in to Windows 10 a whole new web browser (in addition to Internet Explorer) currently code-named Spartan. This new browser is intended to go after the consumer browser market, which IE has lost considerable ground in. I speculate that Spartan will be a breath of fresh air for consumers who feel IE’s bloat-related flaws collectively compels them to download Chrome or Firefox.
If you’re a web application developer who does more than a little HTML, on the other hand, you’re probably already groaning. You know what a pain browser compatibility is. (The browser was never intended to be a homogenous cross-everything platform, but that’s how a lot of web designers treat it, and they’ve shaped culture to expect it. Despite the best efforts of tools like jQuery and others to try homogenize, and trends like responsive to try to change the culture of presentation homogeny, web application developers get severely burned in the crossfire. I’ve got more than a few scars to prove this, but you don’t have to look further than jQuery’s failed mechanisms for helping developers with these issues. (First there was $.browser and $.browser.version, then $.support… then, “awe… heck… we give up, use Modernizr“.) /rant )
Spartan is a move that makes total sense, but it can’t help but add complexity to web application developers’ lives.
In fact, in my mind, the long term net message is… there’s only one way to end browser pain… by getting out of web as a client platform. (Web services are the only part of the web worth salvaging.)
Microsoft has seen what platform diversification has done to its core OS business, and it’s not good. Developers need a consistent platform to deliver consistent solutions on, and that’s been a bigger part of Microsoft’s success over the years than even they seem to have realize.
So if web application development is becoming ever more complex in an already over complicated domain, how should one produce and deploy apps?
In a word: native (aka mobile).
Windows 10 is a unifying platform, a “pentecostal” event to counter the “tower of babel” event of Windows platforms that have fractured into existence since the end of the .NET Compact Framework era. Where before development was requiring more and more effort to support PC, tablet, smartphone, wearable and even Xbox, Windows 10 has a unified SDK across all those platforms. For the first time ever, a .NET developer can build a single solution that runs in all those devices. There may be runtime differences between platforms that have to be ironed out, still, but not compile-time (if(system.capability.phone) {} rather than #ifdef WINDOWS_PHONE_APP)
And think about it… what are the big reasons for web deployment? Centralized management and centralized deployment. Think back to MDMs and mobile app stores.
(Xamarin plays a roll in all this as well. Between Windows 10 and Xamarin, developers will be able to leverage a good chunk of their code base across all hardware, even non Microsoft platforms such as IOS and Android. This, too, is a breath of fresh air, because the cost of maintaining multiple code bases (and talent pools) is ever climbing. Xamarin will likely never be the 110% development experience that the latest .NET framework is, but neither was Silverlight for Windows Phone 7, yet one could do some fairly heavy lifting with it.)
Because Windows 10 is one platform that runs across form factors, it essentially means that any app written for Windows 10 is a mobile app. In that light, it means that Windows 10 is most likely to vault Windows into the top spot for mobile platforms by its projected install base.
This on top of Microsoft’s recent “trickle up” theory of mobile market share growth, where Microsoft has been grabbing market share by targeting the feature phone market. (This tactic has little effect in the US, where carrier subsidies nullify the low end to “$0”) At some point Windows Phone will hit critical mass outside the US. Once that happens, even US developers will no longer be able to afford to ignore it.
Even if Microsoft is not contributing directly to your solution stack, Windows 10 and its biases have potential to culturally influence your solutions and solution delivery over the next decade.