This article is more than 1 year old
Project Reunion: Microsoft's attempt to tear down all those barriers it's built for Windows developers over the years
Plus: Bye-bye Xamarin Forms, hello Multi-Platform App UI, for when Universal is not universal enough
Build As its virtual Build conference gets underway, Microsoft has unveiled Project Reunion, described as "our vision for unifying and evolving the Windows developer platform to make it easier to build great apps that work across all the Windows 10 versions."
The history behind corporate veep for Developer Platform Kevin Gallo's statement goes back to the introduction of Windows 8 in 2012 and its new tablet-friendly application platform, sometimes called "Metro" – though Microsoft liked to say "Modern".
Metro was not just about a new user interface, but also security sandboxing, store delivery, and an API called WinRT (Windows Runtime) that was intended to take over from the old Win32 API. Despite the failure of the Windows 8 concept, Microsoft did not abandon WinRT but instead evolved it into the Universal Windows Platform (UWP) for Windows 10 – "Universal" because it ran on multiple Windows platforms including the late and lamented (by some) Windows Phone, Xbox, and HoloLens.
The division of Windows into two platforms has been troublesome for developers, who have had the choice of sticking with Win32 for broad compatibility or adopting UWP to get the benefit of Microsoft's latest for security, deployment, and UI design. Some Windows 10 APIs are UWP-only. The company has been trying for years to make the split more tolerable, adding broad access to the Win32 API for UWP and, on the Win32 side, coming up with things like XAML islands, which let you embed a bit of UWP into a Win32 application.
So what is Project Reunion?
Gallo said it "will unify access to existing Win32 and UWP APIs and make them available decoupled from the OS, via tools like NuGet". The idea seems to be to create packages that enable access to a set of APIs from both Win32 and UWP. "This will provide a common platform for new apps. Plus, it will help you update and modernize your existing apps with the latest functionality," he said.
Gallo added that Microsoft will do the work "to polyfill, as needed, so the APIs work down-level across supported versions of Windows". The key word here is "supported". The latest documentation shows that WinUI 3, which Microsoft now considers the "native UI layer in Windows", requires Windows 10 1803, which is only a couple of years old. Polyfills could perhaps extend that back a bit, but we await further details.
In the meantime, there's a GitHub repo here regarding Project Reunion, and an announcement here.
WinUI 3 is significant because it is both the latest UI layer for UWP, and also a UI layer for Win32 applications. At Build, Microsoft is launching WinUI 3 Preview 1. Gallo called this "one of the first components in the Project Reunion journey", suggesting the project is not about introducing yet another kind of Windows application (thank goodness), but more about reducing the friction between UWP and Win32 – friction which Microsoft created back in 2012.
Part of the WinUI pitch is that it enabled developers to use the Fluent Design System, which represents Microsoft's current thinking about how to design Windows applications and ties in with newer Windows controls.
.NET Multi-Platform App UI
Xamarin was perhaps too easy to pronounce so Microsoft has now announced .NET Multi-Platform APP UI or MAUI. ".NET MAUI is the evolution of Xamarin.Forms," a Microsoft spokesperson told The Reg. "It will allow you to build apps for any device from a single codebase and project system, including desktop and mobile for any operating system. It will be part of the unified .NET in the .NET 6 timeframe." Xamarin.Forms is not the entirety of Xamarin, but specifically the framework that lets you use XAML to define a cross-platform user interface. A MAUI preview is promised by the end of 2020.
.NET MAUI will support Windows and macOS desktop apps, in addition to iOS, Android, and Samsung's Tizen. It will use a single codebase and project system, rather than the multiple projects you get today if targeting multiple platforms. The framework will be supported by VS Code and command-line compilation, in addition to Visual Studio on Windows and Mac.
While this is intended to replace Xamarin.Forms, Microsoft has promised to keep supporting the older framework with new features and bug fixes from now until a year after .NET MAUI is released. "Migration tooling and guidance will be available to provide a smooth transition from Xamarin.Forms to .NET MAUI," Microsoft told us. NET MAUI is open source and can be found here.
Note that .NET MAUI is for .NET 6, but currently even .NET 5.0 is still in preview. At Build, Microsoft said it is releasing .NET 5.0 Preview 4.0, with general availability scheduled for November. This version of .NET is essentially the next big update to the cross-platform .NET Core, but with support (on Windows only) for frameworks such as Windows Forms and Windows Presentation Framework. Thanks to this capability, Microsoft said, it is a unified implementation that supports all workloads across everywhere .NET Core runs. Windows desktop support is the obvious new feature, but the more important aspect of .NET 5.0 is its suitability for microservices and containerized applications running on Azure or elsewhere. ®