At Build 2020 today, Microsoft unveiled Project Reunion, its latest attempt to unify the Windows developer platform by reducing fragmentation between Win32 APIs and Universal Windows Platform (UWP) APIs. Microsoft also promises Project Reunion can modernize existing apps with the latest functionality, whether they’re built using C++, .NET (including WPF, Windows Forms, and UWP), or React Native. Additionally, it can decouple the APIs from Windows via tools like NuGet, and it brings new WinUI 3 and WebView2 releases.
Microsoft started pushing UWP — its platform for developing apps that run on Windows 10,
Windows 10 Mobile, Xbox One, and HoloLens — with the release of Windows 10 in July 2015. (Microsoft buffs will remember, however, that it has its roots in Windows 8.) When it became clear that developers were not embracing UWP apps in droves, the company shifted focus back to its tried-and-true Win32 platform. Ever since, Microsoft has been attempting to bridge the divide between Win32 (also called the Windows API) and UWP APIs. In short, Project Reunion is Microsoft’s latest attempt to “make it easier to build a great Windows app.”
As of March, Windows 10 runs on 1 billion monthly active devices (PCs, Xbox One consoles, and HoloLens devices). It’s a massive platform for developers to target. And Microsoft said earlier this month that the coronavirus pandemic has exploded engagement. Users are spending more than 4 trillion minutes on Windows 10 a month, a 75% increase year-over-year. Developers thus have more reason than ever to improve existing apps — and build new apps — for Windows 10.
Also earlier this month, in response to the pandemic Microsoft delayed Windows 10X and its dual-screen PC vision (originally set for holiday 2020) to 2021. Instead, the variant will come to laptops first. Microsoft executives confirmed to VentureBeat that any apps developers build today with Project Reunion will work on Windows 10X devices.
What’s different this time?
Microsoft has been on a years-long journey to unify the APIs in Win32 and UWP, adding more common APIs and interoperable code between the two. Still, every time Microsoft tries to improve the situation, developers have to wait for the latest version of Windows.
This time, Microsoft is borrowing an idea from the web — polyfill — with the introduction of packages. A polyfill is a piece of code that provides modern functionality on older browsers that do not natively support it. As Microsoft introduces new APIs, developers link against a package, and if you’re on an older version, Microsoft will polyfill the functionality as best it can to use in the new version. The best part is that these packages will work from a Win32 or UWP app. The collection of packages thus becomes a common API service between Win32 and UWP. Best of all, Microsoft can do this across its 1 billion devices, immediately. Microsoft EVP Rajesh Jha explained the result in a briefing ahead of Build 2020.
“We’re bringing together the combined power of Win32 and UWP,” Jha said. “So developers no longer have to choose, because we’re unifying these existing APIs — in some way decoupling them from the OS. And so the developers are confident that as they use these APIs, they will work across all of Windows. And Project Reunion allows developers to not only modernize their app so it runs efficiently, locally, on a physical Windows machine, but it can also deliver a great experience when streamed from the cloud — such as remote apps or Windows Virtual Desktop. And so you’re now running Windows, not only on Windows, but iOS and Android and Mac and Linux from the cloud.”
WinUI 3 and WebView2
Microsoft today also released WinUI 3 Preview 1, which lets developers use UWP support in Win32 apps. Windows UI XAML Library (WinUI) is one of the popular Windows frameworks that Microsoft tried to deemphasize after debuting UWP. Now, Microsoft describes it as “the high-performant, Fluent-optimized framework for Windows.”
For times when you want to integrate web content in your native app to share code across platforms, there’s WebView. Microsoft today expanded WebView2 with a .NET preview that lets developers embed a Chromium-based WebView in their Windows Forms, WPF, or UWP app. Because WebView2 is decoupled from the OS, it offers full web functionality without being locked into a specific version of Windows.
Microsoft expects both previews to hit general availability by the end of the year.
NuGet, MSIX, and .NET
Speaking of decoupling, Microsoft today released the preview of a Windows SDK Build Tools NuGet package that helps developers adopt MSIX. By factoring out Windows SDK tools into their own NuGet package, developers can reduce dependencies and integrate Windows SDK build tools into CI/CD pipelines.
Additionally, MSIX is getting some love as organizations shift to enable remote work via Windows Virtual Desktop for Android, iOS, macOS, and Windows. A new feature called MSIX App Attach separates the OS image that organizations deploy in the cloud from the apps that people need to access remotely. As a result, Microsoft promises the feature makes roaming between VMs faster and cheaper when running apps in Windows Virtual Desktop on Azure. IT admins can also load balance their workforce more effectively and get more density out of their VMs. In short, it translates to lower storage, performance, and startup costs.
Microsoft today also released a new Windows SDK .NET package in preview and launched C#/WinRT. The former provides a .NET interop assembly for all Windows WinRT APIs. The latter is a tool to create WinRT projections for .NET that will let managed .NET 5 applications call Windows WinRT APIs and third-party WinRT components.