Microsoft's relentless pursuit of innovation has led to a significant shift in its cross-platform development tools, particularly with the emergence of .NET MAUI. As we look back at the evolution of .NET and Xamarin, it's clear that the company is committed to delivering a unified platform for developers.
The road to .NET MAUI began over two decades ago, when Microsoft introduced .NET at its Professional Developers Conference in 2000. Twenty years on, the company has made significant strides in transforming the platform into a modular, legacy-free framework. This transformation paved the way for the creation of .NET Core, which aimed to expand .NET's reach beyond Windows to macOS and Linux.
The future is all about one .NET
At Build 2020, Microsoft outlined its roadmap for the next twenty years, emphasizing the importance of having a single, unified .NET platform. This vision involves integrating Mono, Xamarin's mobile client, into the .NET Core framework. While this may seem daunting, it's essential to recognize that Microsoft is not abandoning its investments in Xamarin. Instead, the company will continue to evolve Mono to support new releases of Android and iOS.
Bringing Mono and .NET together
As we move towards a unified .NET platform, developers can expect to see significant changes in mobile and cross-platform development tools. The shift from Xamarin's Mono to .NET 5 marks the beginning of this transformation. While some may worry about the implications of this change, it's crucial to remember that Microsoft is committed to delivering a seamless experience for developers.
The intent behind unifying .NET platforms is not to replace Mono entirely but to create a single set of class libraries and toolchains for both .NET Core and Mono. This convergence will enable developers to build cross-platform applications with ease, leveraging the power of .NET 5 and the ongoing yearly release schedule.
Evolving a cross-platform UI framework
Xamarin offers an alternative to WinUI for cross-platform development, providing a mix of XAML support for native controls on iOS and Android. Its own cross-platform Xamarin Forms is an MVVM (model-view-viewmodel) development platform with its own control look and feel based on Android's Material Design language.
As we move towards .NET 6, Xamarin Forms will be the foundation for a new set of mobile UI tooling and a new cross-platform UI framework for .NET – .NET MAUI. This new approach allows developers to build an app once in a single Visual Studio project with a single codebase, targeting any supported device.
The road to .NET MAUI
While we're still months away from seeing usable .NET MAUI code, the GitHub repository is already open with some initial implementations. When a preview does ship toward the end of 2020, what we'll get should be fairly similar to the existing Xamarin Forms, which will continue being developed in parallel with .NET MAUI.
Key changes will be around how you structure projects, with a new namespace moving from Xamarin's own namespace to .NET's System. The published roadmap for .NET MAUI suggests that initially, we'll get a preview build based on renaming the current Xamarin Forms release, with some simplifications and new features coming from .NET 6's new features.
More changes will come during 2021 as .NET MAUI and .NET 6 evolve, with macOS and Windows controls joining Android and iOS by summer 2021. You should be able to deliver unified applications by the intended November 2021 release, with a release candidate due in September 2021.
Microsoft is planning other changes to Xamarin in the .NET 6 timeframe, moving other Xamarin libraries to System, and renaming Xamarin.iOS and Xamarin.Android