MAUI in .NET 6: Xamarin.Forms Does Desktop, but Not Linux or VS Code

Microsoft's Xamarin team detailed what's coming up for .NET MAUI, the evolution of Xamarin.Forms that will see the company take the open source, cross-platform framework for building native UIs for iOS and Android into the desktop arena -- but not to Linux.

For those new to .NET MAUI (standing for .NET Multi-platform App UI), Microsoft says it's "the evolution of Xamarin.Forms extended from mobile to desktop scenarios with UI controls rebuilt from the ground up for performance and extensibility."

As explained in the team's community standup online presentation last month, for now "desktop" in MAUI primarily means Windows for the Microsoft team, as Linux support is relegated to community developers.

"I saw a comment earlier in the chat, you know, really excited about the possibility of Linux support," said David Ortinau, principal program manager, mobile dev tools, during the three-person online presentation. "That's absolutely on our radar but I want to be very clear that in our our plans what we are going to be supporting at launch. Linux is not part of that, so it is something that could be evolved from the GdkSharp back-end that Xamarin.Forms has today, but somebody's going to need to step up and and kind of help contribute and bring that over the line so that it will run with .NET 6."

MAUI (.NET Multi-platform App UI)
[Click on image for larger view.] MAUI (.NET Multi-platform App UI)(source: Microsoft).

As far as macOS support, fellow presenter Jonathan Dick pointed to Project Catalyst, running a demo. "I think the interesting thing here is this is our plan to bring Forms to macOs, which is through Catalyst," Dick said. In Xamarin.Forms 5, however, macOS support was also considered a community responsibility, as it is in its successor, MAUI, as this graphic shows:

Xamarin.Forms 5 vs. MAUI
[Click on image for larger view.] Xamarin.Forms 5 vs. MAUI (source: Microsoft).

To keep track of the progress and the above and other features, the team pointed to the Themes of .NET site where Microsoft tracks .NET development progress using GitHub issues, project boards and milestones.

"So you can go here and you can see all the epics the high-level visionary things, the goals, the work that is ongoing for .NET 6," Ortinau said. "Probably the biggest piece of it for us certainly, but I think even overall, is the work that didn't make it into .NET 5, which is bringing Xamarin and Mono fully in to the .NET, you know, shared experiences using the same project systems -- all the work that we've outlined here at a very high level."

MAUI Goals
[Click on image for larger view.] MAUI Goals (source: Microsoft).

As we have noted previously, many features that were originally planned for .NET 5 were delayed until the November 2021 debut of .NET 6 because of the pandemic and tricky development problems. Apparently some Xamarin work is included in that category, though Ortinau didn't specify why Xamarin features didn't make it into .NET 5, which debuted last November.

Ortinau also cautioned Visual Studio Code aficionados that little of the functionality being discussed pertained to them. As shown in the feature comparison graphic above, VS Code doesn't enter into the official support mix, just the full-fledged Visual Studio IDE.

Not that VS Coders can't use MAUI at all. In discussing command-line functionality, Ortinau said, "And then Visual Studio Code again kind of comes along for the ride because you have the command line. You'll be able to do more things in Visual Studio Code ... tomorrow than you can today, but I want to make clear the caveat that Visual Studio full IDE is the place where all the functionality resides. So things like IntelliSense are not promised to come to Visual Studio Code for XAML, right?

"So I want to set that clear expectation that while you can use it, is it going to be the best experience for you during the previews of .NET 6 or even when we launch .NET 6? Probably not because we have to budget, you know, where do we put things, and being able to run your .NET apps with .NET 6.0 on Android iOS, macOs and Windows -- that's that's a p0 [top priority], right ... can't not do that. So that's going to be a much higher priority than some of these things that are currently experimental. They're available to you by virtue of the way the technology works, but it's not an experience that we're going to be polishing up and delivering and supporting, so I want to be very clear about that, where that applies."

Speaking of experimental projects, Ortinau mentioned Blazor Mobile Bindings in that camp, along with Comet, another new offering related to Blazor, which allows for web development on both the client and server sides with C# code instead of JavaScript.

Comet, according to its GitHub site, is "a prototype for a new UI Framework/Pattern to write app UI. It follows the Model View Update (MVU) pattern. It magically databinds for you!"

The 75-minute community standup also featured questions from audience members, curated by fellow presenter Maddy Leger, who noted several coders had asked about migrating from Xamarin.Forms to MAUI.

Ortinau stressed that the transition is not a rewrite of the platform and developers won't have to rewrite their code, rather just use new functionality like a an SDK-style project system to migrate it to MAUI. "So my hope and expectation, depending on the complexity of your projects, is you can be up and going within days," he said. "It's not, it's not rewrites -- it's not a rewrite -- that's probably the biggest message that I should probably say over and over and over again. You're not rewriting your application -- your Xamarin.Forms app -- you're not rewriting it."

Furthermore, he said the team will provide tooling and guides to help developers migrate successfully.

Other questions were also answered, and for more on those and other parts of the puzzle including WinUI 3, see the video presentation here.

About the Author

David Ramel is an editor and writer for Converge360.

comments powered by Disqus


Subscribe on YouTube