Microsoft’s BUILD conference has come and gone this year, and in its wake there is a great deal for developers to consider. For most there are new capabilities and goodies to leverage, but as we will see there are some who are not entirely happy about where things are heading on some fronts.
As expected, the keynotes at BUILD were laden with announcements of cool things that developers can use—many of which are tightly bound to Windows 10. Our goal here is to dive into what the coming release of Windows 10 offers to developers that earlier versions of Windows do not. To accomplish this, we have to take a long, hard look at Kevin Gallo’s keynote in particular. Gallo is the vice president of Windows Developer Platform at Microsoft and has been a fixture at events like this for a long time.
One of the first surprises for some is that Microsoft has chosen to make a big deal out of the fact that the first anniversary of Windows 10 has come, and they are referring to what would normally be the first service pack release as the Anniversary Update. This is in keeping with the promise from Ignite last year that Windows 10 is the last version of Windows as Microsoft changes its model from packaged software to Software as a Service—even for the operating system—and seeks to dominate as the leading cloud provider. In this context the anniversary talk makes much more sense, and we need to keep these stratagems in mind as we look at all of the developer features because Azure especially is leaving it mark on everything Microsoft.
Project Centennial and filling the store
We all see that one key to a successful platform is a killer App Store, especially in the mobile space. This is something that has eluded Microsoft in comparison to what Apple and then Google have built in their respective App Stores. Never complacent, Microsoft has tried to remedy this issue in the past, but lack of mobile market share and outright mistakes in the approach failed to deliver over the last couple of years. Microsoft has an App Store, but it is missing depth and in some areas lacks quality due to a lack of participation.
There are many areas where Microsoft has come to dominate, such as the e-mail server with Exchange, and SQL Server is more respectable in the database space than could be hoped in the SQL 6.0 days. Yet we often forget that Microsoft seldom achieved success at first, and in most cases was not pioneering. Instead, it was battling incumbents that did not appear to be assailable (Netscape anyone?). This is not to say that Apple and Google should panic; more to the point, Microsoft does not really give up often, and its persistence is usually rewarded.
In this round, Microsoft is playing to its strengths as it seeks to fill its App Store in ways that shore up its current weaknesses. One strength Microsoft has is a broad ecosystem with many form factors, including PCs, tablets, phones, Xboxes, and you could even count HoloLens among them. Microsoft also has a strong developer community with real depth in areas like .NET. Perhaps the key to this challenge is to combine these and provide a way to get many more applications that already exist into the Microsoft App Store?
We will find out if this approach will work because Project Centennial is doing exactly this, by making it so that .NET and Win32 applications can be converted to support the Universal Windows Platform and as a result can be loaded into the Windows App Store. This could mean that thousands or even tens of thousands of mature applications will be available on all flavors of Microsoft platforms, but with no path for them to be made available on Apple or Android platforms. If it works, it will be dramatic. It could turn the tables in ways few saw coming, but it requires developers to do their part and believe the Microsoft Store is worth the effort. Based on the demos at BUILD the effort to process an application to be Store ready is trivial, but demos are often like that. View this as convergence and as Microsoft pulling every lever to keep its platform (especially the flagging Windows Phone) relevant. No predictions other than that if this does not work out, we should all expect Microsoft to keep pitching.
Xamarin changes the game
The release of the .NET Framework and the C# language so long ago started a renaissance for developers that in many ways lasts to this day. In the early years, there were those who saw a missed opportunity and sought to bring these things to Linux (and Unix and many others now) via the Mono project. The idea is to bridge the gap and make life easier for developers in pursuit of a unified codebase that lets us write once and run everywhere. Xamarin began as a company from this same core group pursuing the same goal, and they have created some mind-blowing tools and capability.
Miguel de Icaza is the technical face of Xamarin and the whole Mono movement that started it. For more than a decade now there has been conjecture on when Microsoft would realize they needed Miguel and Mono, though official relations were quite frosty at times. The recent purchase of Xamarin by Microsoft is really opening up the options, and it cements the reality that C# will be the unifying language for cross-platform development in the next decade.
Many have and likely still do fear that Microsoft buying Xamarin will destroy the things that make Xamarin so cool. That is fair, but the leadership at Microsoft seems to be handing this acquisition with kid gloves. There was fear that Microsoft would make Xamarin tools only available in the highest-cost versions of Visual Studio and therefore out of reach for most developers. Seemingly to counter just this concern, it was announced at BUILD that they will be included in all editions of Visual Studio, including the free Community Edition. Microsoft’s development platform could come to be the only reasonable way to write applications to maximize reuse and minimize the pain of targeting iOS and Android. Microsoft wins in this scenario because targeting Windows Phone and the other Microsoft platforms becomes less than trivial and another way for Microsoft to make Universal Apps even more attractive.
Development on unconventional platforms
During the BUILD keynote, when it was announced that Bash support is now part of Windows, there were two responses among the attendees. Many couldn’t care less, but a certain segment of the audience went wild. I was sitting with a friend who does a lot of Linux, and this was a big one for him. As the implications sank in, even the less interested in attendance started to realize that there is an ongoing convergence, and that open-sourcing .NET was not a fad.
This is the new normal. Microsoft is not paying lip service to this cross-platform push, and we should accept things like SQL on Linux are real, and moreover are the way things will be going forward. During one of the best sessions from BUILD, Scott Hanselman and Scott Hunter (who referred to themselves as “the lesser Scotts” in homage to Scott Guthrie) did a demo in which they showed code that targeed the .NET Core deployed on stage and scaled across not only Azure, but also across Amazon and Docker’s cloud. Again the message seems to be to do what you want, where you want, but bring Microsoft along for the ride where it makes sense.
HoloLens garnered a lot of buzz at BUILD as it did last year, but the story still seems to be that it is not targeted at mass market and it is not being positioned as a competitor to Oculus. Many of those interested in HoloLens have real projects in engineering or healthcare that would benefit from augmented reality.
While Microsoft has started to ship the developer units as part of their first wave to insiders, it still seems like there are no plans to put one of these cool devices into consumer hands. It is not positioned as a competitor to game-centric VR devices like Oculus, and for the foreseeable future it will, like the original Surface tablets, be something that plays a niche role. I would personally really like to see that change (or at least know why this is the case), but thus far nothing official has explained this position of what will likely be a source of cool demos for years to come. The developer experience for HoloLens is pretty robust from all accounts. This will be much more fleshed out as those in the initial waves report their experiences of trying to make real-world projects work with the tools available thus far.
The fulfillment of the old three screens and a cloud promise from the first BUILD is finally getting that third screen with the announcement that any Xbox One can now be put into development mode and serve as a target for deployment from Visual Studio. If you want to take advantage of Xbox Live features like Gamertags, achievements or Gamerscore, then you have to sign up with ID@Xbox. But if you just want to play or experiment, you can switch any updated Xbox One from Retail Mode to Development Mode and back again as needed.
There is always a new set of buzzwords purported to be brewing to change everything, and the Internet of Things (IoT) is one of the big ones currently. Microsoft has its Windows 10 IoT Core available to make sure that IoT is part of the platform and so that Universal Apps target this growing segment. Most estimates show IoT installs will surpass everything else in IT as the average consumer with a dozen computing devices ends up with dozens of IoT components in things like dishwashers, TVs, thermostats, and perhaps even faucets or windows (not the OS kind).
You know things are cooking when you watch BUILD sessions and keynotes and it changes your perspective and approach to major projects. I myself now have a major project that will leverage .NET Core to target Linux and Windows without requiring separate codebases.
Universal Windows Apps bring it together
All of this news has brought a wide array of platforms for developers to target, but that can be a mixed blessing, as fragmentation of the platform complicates life for developers. This is where a unified development platform is required, and Microsoft has been evolving Universal Windows Apps.
The .NET development community has been large and strong for a long time, but reach beyond a single area was elusive. Microsoft has been great about letting developers build just about anything in Visual Studio, but if you wanted to target Xbox and Windows, you had to maintain two projects. Windows Phone added another option, but also added another project in a way that has played itself out very similarly to the way developers must address iOS, Android and Windows Phone support.
Developers crave a write-once, run-anywhere paradigm—or even just run most anywhere. The introduction of Universal Windows Apps coincided with Windows Phone 8.1 because Microsoft had provided enough of the Windows platform so that WinRT APIs were in Windows and on the Windows Phone. This was meant to start toward the “run anywhere” goal—even if anywhere was limited to Microsoft’s corner of anywhere. Today, a Universal Windows App has evolved to mean it is written to take advantage of the Universal Windows Platform (UWP). The newest edition to the family has the ability to target Xbox One (more on that later). The hope is that the Microsoft Store will benefit from more entries thanks to the broader reach.
Once you get past the marketing of this plan, you start to see some complications with this strategy that require some new abstractions. The biggest is that once you get the consistent APIs across devices, how do you target specific versions? Surely the APIs will change, which in .NET is handled easily with new versions of the .NET Framework. To handle this wrinkle, Microsoft defines a device family with a name and version number.
Open revolt from some game developers
The Universal Windows Platform brings lots of advantages, as we have already seen, but all change results in winners and losers. UWP brings to Windows a model much more like that used by Apple, and therefore it should be quite popular since Apple has done well with its tightly controlled store-driven model.
The downside of this model is that the PC has represented a level of freedom for software developers that can only be described as the Wild West. Trying to get UWP to rein that in has caused some high-profile game developers to cry foul because they fear that Microsoft will disintermediate them from their clients via the Windows Store if they embrace UWP, and they will fall behind on being able to leverage the cutting-edge features if they decline to use UWP. Games are an important space for any platform these days, so expect there to be some compromises made on both sides on this issue.
BUILD brought out a great deal to digest, and if you sit back and think about what is missing, it would be cross-device connectivity. A single UWP application can run in the desktop on regular Windows 10, and there can be an appropriately rendered Windows Phone interface of the same application. Add in the Action Center, and no matter where the app is run (including Xbox), it can share a memory, so your choices in the living room via the Xbox are in place when you switch to your tablet. Layer in Cortana functionality for voice control, and you can start to imagine pretty exciting yet attainable user experiences.
There are not many examples that come to mind of apps in the iOS space that transcend Apple PC, iPad and iPhone, but this could be what people come to expect if Microsoft-based solutions start to deliver it. The examples that are out there are sharing data via the cloud, such as the to-do list app WunderList. In this case we are talking about deeper cross-device experiences because the core APIs are consistent even on the smallest form factor.
March of progress
All of these things taken together show that progress marches on for developers who work with Microsoft’s stack or the development tools only. BUILD is a valuable way to gauge where Microsoft is heading for the next year in the developer space, even though there are other important events between now and next spring. All signs point to Microsoft continuing to unify its own ecosystem to make it easy to address its entire line from PCs to Surface Hub to phones, but there is also no mistaking the role of Azure as the core of everything Microsoft in the future.
It has been said before and it must be emphasized repeatedly that Microsoft is betting its future on Azure, and it is hard to find a feature that does not have a toe somewhere in Azure. The more jaded among us might say that Azure is the reason for Microsoft’s embrace of open source and cross-platform. I wholeheartedly agree, but see this fact as a reassurance that this new mode is here to stay rather than a fad.
Scott Guthrie said during his keynote, “We’re going to invest billions of dollars to build our infrastructure like this all over the world. And our cloud platform now manages more than a million servers.” He also pointed out that Microsoft now has 30 Azure regions, which is more than Google and Amazon combined. Revelations like these about the rate of spending on Azure show that Windows is no longer the place to watch if you want to chart how Microsoft is doing.