.NET MAUI Devs Hold 'Ask Me Anything' Community Standup
GitHub Copilot AI might write .NET MAUI UI code one day, but there are no plans for web targeting.
Shaking off the back-to-work blues and glitches like the rest of us, developers of Microsoft's .NET MAUI framework held an "ask me almost anything" (AMAA) session during last week's community standup livestream event.
Microsoft calls the cross-platform .NET MAUI framework an evolution of its predecessor, Xamarin.Forms, because it adds the ability to use C# and XAML to create desktop apps along with traditional Xamarin iOS and Android mobile targets, so users can develop apps that can run on Android, iOS, macOS and Windows from a single shared code-base.
Microsoft's Maddy Montaquila and David Ortinau last Thursday held the year's first livestreamed .NET MAUI Community Standup, recapping the year and detailing how to get started with the framework. The session featured a kind of "ask me anything" (AMA) session modeled after events popularized on social coding sites like Reddit but with a caveat from Montaquila: "Don't ask me things that I'm not allowed to tell you because then I can't tell you them and then I look like a jerk."
One thing the presenters could talk about was the lateness of .NET MAUI's May 2022 debut, some six months behind schedule [see the Visual Studio Magazine article, ".NET MAUI Reaches General Availability, Replacing Xamarin.Forms"]. The rollout actually happened in multiple stages. Montaquila said, "We shipped it in .NET 6, we shipped [Visual Studio on Windows -- see the article, "Visual Studio 2022 17.3, .NET MAUI Now Generally Available"], we shipped .NET 7 [see the article, ".NET MAUI in .NET 7 Fills In Xamarin Gaps"] and then we shipped VS Mac [see the article, "Visual Studio for Mac 17.4 Ships with .NET MAUI Support"]. That's pretty cool; that's a lot of work."
However, despite all that work, some developers complained of half-baked functionality in a premature release (see the article, "Did .NET MAUI Ship Too Soon? Devs Sound Off on 'Massive Mistake'").
Polishing up and fixing things is progressing, however, and Ortinau foreshadowed a first preview of .NET MAUI in .NET 8, coming soon. Stay tuned for details on that.
The 'Ask Me Almost Anything' Part
After recapping the framework's 2022 dev cycle and new features and community projects using it, Montaquila and Ortinau got to community questions.
Will MAUI be updated with an AI to just code the app for me? That'd help my career immensely. "Great question," Montaquila said. "Off the top ... I have seen ChatGPT does write some .NET so that's cool. I think it does write MAUI's XAML. GitHub Copilot, however, does work for MAUI. I've been using it -- not yet for XAML -- it's on my January fun projects list. So you might actually -- like I know this was a joke of a question -- but you might actually have Copilot write a lot of your UI at some point, which is cool. It's all based on open source stuff, so if you write a lot of C# UI markup, that will then contribute to Copilot, which is pretty cool."
Would you recommend the current version, which is .NET 7, of MAUI for big organizations? "Yes," Montaquila said. "David, I know you would say 'yes.' Do you have any reasoning behind that?"
Ortinau: "I think that very big organizations have kind of some unique criteria in many cases. They want to know ... can I get an important person from Microsoft on the phone if something happens, right. Or can we actually have dedicated support people, you know, real people to actually talk to, to help us when we have a need. Then there's also, is this thing going to be around for a good number of years? You know, .NET is how many years old [21ish?]. I mean, we're not going anywhere, it's solid. Microsoft is deeply invested, and so those sorts of things matter -- perhaps more to large organizations where an application tends to live longer, whereas maybe a smaller organization, a small business, something like that, you have a mobile app and you may not even hesitate to rewrite it every couple of years."
Is MAUI truly ready for enterprise applications? I believe there are many major issues open on GitHub. Montaquila: "We've gotten this a lot, like, 'there are issues open on GitHub.' This is gonna sound like a cop-out ... but if you go to any major technology stack, they do have many major issues open on GitHub, just FYI. And it's totally opinion based if you think MAUI is worse than others, but MAUI is ready and is shipping with enterprise applications. They have sane workarounds for issues that they have faced. If not, we have fixed them.
"But yeah, issues on GitHub is not a really good indicator of any type of product's stability because some of them have really active communities that know to file issues on GitHub. Some of them have internal tools for issue filing, so even if there are GitHub issues they might get closed and move to an internal tool that you can't actually track and monitor. It's a nice, like one of many different pieces of information you can use to evaluate a technology, but it's not the end-all be-all, just FYI. And we we do continuously monitor our GitHub issues. We have a whole new triage process that we've been implementing and rolling out that I know a lot of you folks -- there was a topic in the chat about something getting locked and like what the procedure is for unlocking it -- so in fact the more issues there are on MAUI the better that probably is for you because that means that people have already discovered issues you're hitting, and then we can be aware of them and fix them without you having to be the one to make the repro."
Ortinau: "But do make sure that when you find issues that are impacting you that you add a reaction and/or add any information because that factors into our issue scoring as we work to prioritize our issues. So we recognize that we've got issues ... we'd all love to have zero issues, yeah, but we do feel like there are sane workarounds for things, which is not to say that that means we don't fix them. We're fixing them in the order of prioritization that we find, so help us prioritize, and you know we'll get better and better, release over release. But we're super glad to see that customers are being successful. Some folks have a higher tolerance for writing and maintaining code themselves and then removing it later, than others. We know that -- we talk to a lot of different companies and developers."
Any plans to add web as another supported platform? Ortinau: "There is no plan for that. And we'd love to have it, but you know, you've got great option like Uno [Platform]. I saw somebody else asked previously about what about Linux, and you know Uno supports Linux, Avalonia supports Linux, so you have great options in the .NET ecosystem for those, and I would refer you to them. In our conversations with customers, the need to take a client application -- a .NET MAUI Xamarin application into a browser context, like in part or even wholesale -- is not a very common scenario.
"So I totally get the desire for it and that there are those scenarios that exist; it's just not a big enough target for us to to make that part of our plans. I think the more sane option ... is to build those pieces that need to go to the web in Blazor and then share that to the web but keep the MAUI hybrid and/or MAUI application native. So yeah, I mean if you want to build web support for MAUI, that'd be great. I mean it is open source as a matter of fact. Well you know Frank Krueger's experiment from back in the day, but also our WPF platform for Xamarin.Forms and the macOS and the Linux ... the GTK -- those were all contributions. Like we didn't write that stuff. I think we did actually do the macOS stuff ... but that's because we did it during dinner."
Any advanced topic/streams/documentation expected for MAUI instead of all of the 'getting started in hello world,' which is what we usually talk about? Montaquila: "So yes, basically we had to choose what to do, and when you have to choose between advanced stuff and easy stuff, you do the easy stuff first, especially because we're obviously trying to get new people to come into MAUI. But that being said, we've kind of reached like the logarithmic peak of getting-started content. There's always more we can do, and there's always more we will do, and obviously we have to keep those things updated. But just in general, you'll start to see more blogs come out from team members, and that are a little bit more in depth."
She noted a recent community presentation on a niche hot reload scenario as an example.
"So we are sprinkling a little bit more advanced in while we keep it beginner-friendly. I would love to see at some point ... like MAUI Learn 2.0, like what's next, like, 'oh yeah let's do some cool stuff.'"
She also referenced a recent Ortinau presentation on authentication. "Those are all the kinds of scenarios we're working on, starting to flush out a little bit more now." Ortinau chimed in say "let us know what you want to see, give us some ideas."
How to publish a MAUI WinUI app as a single-file executable? Both presenters avoided this question like the plague, professing a lack of deep understanding of Windows app packaging and related documentation. Montaquila said it's the one topic she avoids at Microsoft. Ortinau didn't want any part of it.
Finally, Ortinau said: "Because it is a Windows app and this same publishing guidance applies to a MAUI app because it is a WinUI app -- that's really your best bet there, and I would recommend filing your feedback on that doc to say, 'hey this is a mess, this doesn't make sense, I'm running into this issue,' and then the people who do actually know how that stuff works -- not me -- can can answer that question for you."
Are there any plans to render say a React.js web app (or any other SPA) in our MAUI apps similar to how Blazor Hybrid works? Ortinau: "Yeah so I think that this is actually a very interesting scenario, and from talking to many customers I think that there is real opportunity and use and value in looking to do something here. So is there a plan today? No. You certainly can roll your own. I happen to know of a team in Microsoft that has a React.js web app hosted inside of a .NET component that is essentially doing what BlazorWebView to a degree does, so we are going to be talking more about that in our planning for the upcoming period. No plan just yet.
"I will also point you perhaps to look at some of the Progress team and what they have shown about doing hybrid MAUI with Angular. And I don't know if they've also done React, but the same concepts would apply. So check that out. But very interesting question, and Ryan, if you have specific needs in that area I would love to get an email from you let's talk more about it so I can build that base of evidence that this is useful."
How will you create more of a community with MAUI than Xamarin such as more community libraries, etc.? Montaquila: "I will start by saying the Xamarin community was pretty awesome. I was very surprised when I started my Xamarin journey, and there's a lot. And a lot of those people [who] are continuing or have been in contact with us or ... have been big proponents and testers of MAUI from the start, so we can only go up and continue to do things like this.
Ortinau: "Well I would say that 'why is it my responsibility?' [laughter and crosstalk]. All right, I mean obviously I want to create a ... see I don't create the community, right. Like we build the product. We certainly are the talking heads here talking and trying to shape the culture of the product and the community. But creating opportunities for you, I guess, is one thing that we try to do often, encourage you and guide you where we can ... sharing the blog, sharing all the NuGets and stuff that you have here, giving you a platform to make it, to give you incentive to create things for the community. But by and large I think the best thing that we can be doing is creating an awesome product creating an awesome developer experiences so that people come to the community and want to engage and want to share."
There were plenty more audience questions during the one-hour-plus livestream, which you can watch yourself to see the duo's answers to questions like:
- Any news on the MAUI/Avalonia UI integrations?
- Any ETA on the transition to NuGet packages for MAUI? .NET workloads are terrible.
- How to improve the startup time in Android with MAUI?
- Can we execute tests on Docker Linux? Easier to maintain than Windows build servers.
- Maybe not the right place to ask, but do you know what happened to the Xamarin Weekly newsletter?
- Will we see some of the stuff in the deprecated XamarinComponents repo ported to .NET 6?
- Is InApp Payment in your ToDo to include within .NET MAUI?
- Do we have MQTT connection library?
- Are there any work about advanced camera controls like CameraX binding?
Apparently no one asked a question deemed off limits, so neither presenter came off looking like a jerk.
David Ramel is an editor and writer for Converge360.