Microsoft to Windows devs: You’re all Microsoft 365 developers now

At Build 2019 Microsoft unveils new tooling for Microsoft Graph and a whole new set of tools for running an application stack on your development PC

Microsoft to Windows devs: You’re all Microsoft 365 developers now

Microsoft’s Build 2019 is focusing on development on three different clouds—on Microsoft Azure, on Microsoft’s new gaming cloud, and on Microsoft 365. It’s the third—Microsoft 365—that will be of most interest to Windows developers, as the fusion of Windows and Office 365 through the Microsoft Graph is at the heart of much of Microsoft’s desktop and mobile application development strategy.

What does this future look like for developers? Prior to Build 2019 I talked to Rob Howard, senior director of Microsoft 365 Apps Marketing, and Kevin Gallo, CVP of Windows Developer Platform, about some of the Microsoft 365 and Windows development features being announced in Seattle.

Building on Microsoft 365

With Build 2019, Microsoft is positioning the Microsoft 365 “productivity cloud” as the default platform for Windows enterprise application development. You may be building Win32 or UWP or web apps, but as far as Microsoft is concerned, you’re a Microsoft 365 developer. It’s an important shift, as it moves the focus away from the PC and your other devices to the underlying data, encapsulated in the Microsoft graph. Howard is quick to point out that “the critical piece of this is that the data is owned by the customers; they control the data.”

If Microsoft 365 is to be the new foundation for enterprise applications, then it needs to offer authentication services. As part of the service you’ll get access to Microsoft Identity, with a set of authentication libraries for .Net and a quick way of registering your apps with the Microsoft Identity service. With the Microsoft Authentication Libraries, you can add authentication for Microsoft personal and work accounts to any application, with full access to the wider range of Windows authentication technologies, including Windows’ newest password-less authentication, as well as common multifactor authentication technologies.

You’re not limited to using the SDK. The Microsoft Identity service will work with any OpenID Connect endpoints, so you can use open source authentication tools as well. If you want to use Microsoft authentication tools outside the Microsoft 365 ecosystem, you can take advantage of Windows Hello’s FIDO2 certification, with the latest Windows 10 release, to use biometric authentication in FIDO2-compliant apps and on the web.

Microsoft Graph and your data: Together at last

The heart of the Microsoft 365 platform is the Microsoft Graph, which Howard describes as being built on “the anchor of identity and providing context.” But up to now working with the Microsoft Graph has been frustrating, with only REST access to a very complex data set. That has made it hard to mix and match Microsoft Graph queries with other data sources in your organization, reducing the scope of the possible queries. Build 2019 ushers in the launch of Microsoft Graph Data Connect, a way of bringing your business objects and graph data together for more complex queries, using a secured Azure Data Factory tenant to keep your data under your control.

Microsoft Graph Data Connect will allow you to, for example, mix CRM information with your internal graph, so you can start to see more details of communications between your organization and a customer, finding possible contact points by understanding who’s been talking to whom, and seeing where those conversations fit into your sales pipeline. Microsoft has been running trials with select partners, including Talentsoft, which has been using its HR data with the Microsoft Graph to improve performance analytics and gain a better picture of how individuals actually work.

XAML Islands and UWP: No app left behind

With the Microsoft Graph providing much of the backbone for enterprise application development, Kevin Gallo talks about “two large canvases for developers, Windows, and the web”. It’s a model that is deeply cross-platform, with a focus on using the right device for the right task. But it’s also a model that is hard to modernize, with billions of lines of legacy code.

At Build 2018 Microsoft unveiled XAML Islands, a way of embedding modern UWP controls in older applications, allowing newer versions of Windows to take advantage of concepts like the Fluent Design language, while still using older business logic. That model is being extended. At Build 2019, Microsoft is announcing an extension of XAML Islands beyond the initial controls to all of the available UWP controls. It’s a big change, significantly increasing the reach of older code, and allowing developers to quickly update and repackage apps for newer operating systems. You’ll have more modern ways of installing and running Win32 code using the new MSIX installer and the Windows Desktop Bridge isolation layers.

Similarly, for web-based applications and for cross-platform mobile apps, Microsoft is extending its support for React Native, with support for form-based applications using native controls. Gallo told me this is an alternative to Microsoft’s existing React Native Windows; “it’s a new implementation of React Native, reusing mobile controls directly.” The result is a JavaScript interface to native controls across all supported platforms, something that Microsoft hasn’t had before.

Full stack development with WSL2

Tools like React Native require Windows to be as much a part of the development environment as Visual Studio and Visual Studio Code, with support for the entire end-to-end workflow for building modern web applications. One aspect of that is the shift from EdgeHTML to Chromium in the Edge browser, and the move away from the Windows refresh cycle for Edge updates. But the full web development cycle needs more than browsers, and more than what’s available in the current Windows.

The Windows Subsystem for Linux, WSL, went some way toward providing part of that end-to-end experience, but doesn’t have quite the critical mass of features needed to support the entire web application development lifecycle. A new version of WSL promises more scope for full-stack development with native support for Docker containers, which should provide a significant boost in performance and simplify connecting tooling to the container.

The big change here is that Windows will now ship with a Linux kernel alongside the Windows kernel. Whereas the original WSL uses a driver to translate syscalls from Linux to Windows, WSL2 removes the translation layer and makes a direct call to Linux. Drawing on techniques pioneered in LCOW (Linux Containers on Windows), the WSL2 runs a dedicated hypervisor and a lightweight VM hosting a Linux 4.19 kernel container with a connection to the Windows file system, allowing Linux code to run with near-native performance. The Windows file system is connected via the P9 protocol, with the Linux side using the Ext4 Linux file system on a virtual pmem device.

Putting a Linux kernel in Windows will make it easier to bring various Linux distributions to Windows and to support a wider range of Linux applications and functions. Providing the operating system foundation for native Docker containers will also simplify cross-platform development, and ease the requirements for building local test Kubernetes systems. In addition, WSL can now update in sync with Linux, rather than having to wait for Windows updates to add new syscall translations. If you’re running more than one Linux distribution at the same time, each will have its own VM.

You’ll use the WSL terminal to build applications in, say, Visual Studio Code, debugging directly via its new Remote Connect tools into code running in a container from the same command line. Microsoft has been taking lessons from the Azure command line and is bringing them into Windows, with the goal of giving you access to the entire production stack for a cloud application on a PC – from Microsoft Identity to data in the Microsoft Graph to your code in a Docker container and a front-end running in the new Edge or a React Native PWA.

A new Windows Terminal

At the same time Microsoft is updating WSL, the company is bringing out a radical update of the Windows Terminal. The host for WSL’s command line, for PowerShell, and for Windows’ venerable CMD, the Windows Terminal is getting what Gallo calls “a radical update,” adding support for tabs and for Unicode, as well as extensions with an extension marketplace (much like that for Visual Studio). The new Terminal will be a UWP application, using Fluent Design. Microsoft will be making the Terminal tab controls available for other UWP apps as part of its Fluent control library, so you can use them in your own code.

Both WSL2 and the new Windows Terminal will be available in June. WSL2 is coming as part of the Windows Insider program, while Windows Terminal is being developed as an open source project hosted on GitHub.

By building its Windows enterprise development future on top of Microsoft 365, Microsoft clearly understands that the value of its platform rests on more than its own applications, with the data in the Microsoft Graph the foundation of new, cross-device applications. Giving developers the tools they need to build the stack to support those applications (and the modern design users expect) is essential too. It will be interesting to see where both developers and Microsoft take these new features, when building new systems of record and systems of action for modern businesses on a modern, cloud-centric, platform.

Copyright © 2019 IDG Communications, Inc.