Herding Code 246 – David Ortinau on .NET MAUI

Jon talks to David Ortinau about .NET MAUI.

Download / Listen: Herding Code 246: David Ortinau on .NET MAI

Link: Introducing .NET MAUI – One Codebase, Many Platforms (.NET blog)

Transcript:

Jon: Hello, and welcome to Herding Code. This episode is being recorded May 16th, 2022. Today I’m talking to David Ortinau now about .NET MAUI. Welcome David. 

David: Hey, good to see you. 

Jon: Okay, so let’s start with the basics. What the heck is .NET MAUI? I, I mean, I know there’s kind of Xamarin thing out there forms and now there’s .NET MAUI.

David: So .NET MAUI, it stands for multi-platform app UI. And it is really the evolution of Xamarin. So Xamarin is it started, you know, like 10, 12 years ago, Mono framework, Mono Touch, Mono Droid it was essentially saying, Hey, let’s take what Apple and Google are doing these mobile platforms that are super cool, and let’s bring it to .NET developers.

And it was an open source thing, you know, at least as far as the runtime and things like that go but it was kind of out there in the community. And then what, six years ago, Microsoft acquired it. and then five years ago, I joined Microsoft to be the program manager for Xamarin forms, specifically, the that, you know, we favor XAML, but you can totally just use C# or F# actually to write your mobile applications, but it was a very mobile focus thing. Right? So, we have been doing in the .NET space over years is, unifying, taking all these things that were disparate, they all had different routes in terms of where they started, but .NET You know, we anything with .NET and be able to reuse not only the technology, but our skills. So. you know, dot .NET framework turned core .NET five shipped five unified, some of the model pieces and some of the BCL pieces BCL standing for base class library.

And then, grandiose that was when Xamarin would also become really a core part of .NET, 

however pandemic things you know, best laid plans of mice and then things didn’t quite go the way we want. 

Jon: Well also, plus it’s, it’s a big job, right? I mean, like uniting everything and you’ve had like .NET and C#, or like there’s similar specifications, but like the whole way that, that mano and Xamarin worked always seemed like it was amazing to me that it actually worked right. 

David: Yeah. It was the ingenuity of some very smart people that made it at work. But you know, outside of Microsoft’s doors, really, even before everything was mostly open-sourced there was a lot of duct taping to make things work. Make it a good developer experience. So we’re now able to in the open source era and as part of Microsoft kind of rectify some of those things. So, you know, we’re adopting SDK style projects, the same project system that the rest of .NET uses. And, and we’ve also added platforms. So now. Give a first place support to Windows and Mac desktops. So that’s a big really have. I mean, we kind of had UWP but that really started because we had this. Windows phone thing. You know, and I don’t want to like trigger anybody, but it was pretty cool. 

yeah, so, I mean, yeah, you’re absolutely right. Tons of stuff that, that have ne has needed to happen under the hood from the runtime, the base class library, unifying all the API APIs and. In terms of Xamarin, there’s some things that we did with types for end, float and end and things like that, to, to make things work with apple that are non-standard dot .NET things.

So in .NET 6 we unified our types, which, you know in the short term, there’s definitely some pain, not gonna, not going to sugarcoat that but in the longterm, you know, we’re going to see some nice gains, and consistency across the whole thing. So very excited that we finally, after years of transition we’re bringing.

To full GA fruition here in .NET 6 Well, as part of the, as Scott, hunter would like to say the .NET 6. 

wave, I think wave works really good with the name .NET 

Jon: Oh, nice. Nice. Okay. So, so the. 

Top level I’m totally not even a .NET developer. I haven’t been keeping up the high level is I can write C# or .NET code and I can build applications. That’ll run on Android, iOS, Mac, and Windows. 

David: Exactly and their native applications. That’s a key differentiator. So that means that when your app runs on iOS or Android or Windows or Mac, it’s using the same premiere 

UI toolkit that the manufacturers say, this is the way you should build apps.

Jon: Okay. So it’s not like a, cause I think that’s been as a workaround for a long time, people are building, for instance, like. Electron apps or stuff like that. Right. Where, so you, it technically will run cross platform, but it’s really running a browser and it’s running like, it’s, it’s not that like native or even going way back, like Java or stuff like that.

Right. But you didn’t have this like native app. 

David: Yeah. Yeah. You run into, what’s known as the uncanny valley in some situations, depending on how well that technology is able to mimic the platform.  you know, there are certainly other you know, platforms out there are frameworks out there that do a really good job at it. However yeah, the hybrid thing, which we typically call those as hybrid frameworks  you end up needing to make some compromises in terms of what you can access on the native platform or what kind of UI experiences you can create.

But you know, with straight MAUI, you don’t have those compromises plus you get to use .NET. So it’s one language, right? You don’t have to drop into objective C swift Java or Kotlin your code. You know we’re very open, you know, opened to using whatever technologies that you really want to be able to use.

 But in addition, all of that, we actually do have a really cool hybrid story. So you are a web developer. You’ve heard of this thing. 

Jon: Yep. 

David: Yeah, yeah. A little familiar with that. So what’s really interesting to me about this and it seems to be resonating with some of the early adopters of MAUI a Blazor or just a Blazor component and you can drop it into a native MAUI and it does run in kind of that hybrid context. However, because that code gets compiled as. C code. There’s really not that same browser interrupt barrier that you would normally and again, because you know, some UI frameworks such as Blazor do a really good job with helping You style your UI.

You don’t end up so much in these uncanny. And you can use it for what it’s appropriate for, but then if you really need that native UI experience, MAUI controls are right there in the same application. So you can quickly stand up an application, share your code with web and you know, sky’s the limit.

So really cool to see. We’ve even seen some, just some apps shipping to the app stores already using that Blazor hybrid with MAUI scenario. And

Jon: So it, so some of that seems like W you mentioned the word hybrid and you know, some of it seems like it makes me think of, am I paying like a big performance penalty or is it, you know, like how does it compare to what I guess part of my question here is what apps are not a good fit for that hybrid scenario. The Blazor hybrid scenario.

David: Right. Yeah. So, The browsers have gotten really good at, you know, execute. Quickly. So I, I think that that, that window of what’s not a good application is getting narrower and narrower. whereas, you know, a few years back we would have said, well, you know, if you adopt phone gapper or Cordova over one of those, early hybrid frameworks it would be much better known.

What’s not a really good application for it. I would think that Anything that’s heavily graphic intensive may not be good. anything with heavy animation may not be good. But again, there’s, there’s gonna be  exceptions to these rules. So the good news is, is that if you stand up a MAUI app and you start building in one direction, let’s say that you like, Hey, I really think I’m going to be able to get away with Blazor and it’s going to accomplish all of my needs.

And you get, you get a couple miles down the road and that’s not working out. You don’t have to trash your application. your .NET code will work just, just swell without that browser context. And you can stand up native UI in its place. Without starting your application over again without, you know, starting from scratch. So I think that’s a, that’s a pretty cool way to think about it is, you know, don’t overthink the approach that you take. But also you know, within within a Blazor Hybrid scenario, you still have access to all the non UI stuff that a Maui application provides such as sensors file System access notifications, local notification.

 System tray, you know, all, all the things that you would want to have access to in a native application is all there at your fingertips, even though you might be standing up UI that’s HTML and CSS. So yeah, I don’t, you know, I don’t have specific examples for you. We’ll see what people do. 

Jon: Yeah. Well, and a lot of it, right? It goes into like, you test it and you see what works. And I, like you’re saying browsers have gotten, we’re recording this, this podcast over video in a browser now. Right? 

David: Yeah. 

Jon: The thinking of doing that years ago, it would be like, that’s just ridiculous. And it’s like, and now I guess most platforms don’t have to spin up a whole browser. This there’s this like web view to are these native built-in browser controls. 

David: Yeah. Yeah. So WebView2 is, is something that we actually use on the desktop. We use it on, on Windows right now. So when you are building a a hybrid application Blazor hybrid application with Maui, you’re going to end up with web V2 on, on Windows on, Mac you’re going to use w was it WK with. And I think that’s the same thing on, on iPhone. So, I know that a WebView2 is coming to more platforms. we see. don’t have any announcements, I’m not announcing anything. But I’m pretty sure that that that’s out there. So, you know yeah, they’re, they’re super performance. You can bundle it with your application.It can be acquired separate from your application depending on what the OS allows for. So there’s a lot of things you can do with the browser these days. And, and even on mobile context, they can run super, super.

Jon: So a lot of what I think of mentally. I still am in this, you know, MAUI and I’m feeling, I initially think of mobile apps. but, but I have to like reset my brain because going way back when that .NET first chipped, and it was like, cool, I can build, you know what wind form applications. And, and then people are like, can I run it on Mac?

Well, you know, and it’s like, yeah, with mano sort of, you know, but not really, you know? And so like Can I really build like a full featured, like desktop application and it runs on Windows and then I can ship it and it runs on a Mac too. 

David: Believe it or not. Yeah. Yeah. And you know, so we, we have done several things that are different than Xamarin to enable those, you know, desktop scenarios that differ from mobile. So one of those is multi window. So you can have multi window applications when you want to. We are working with several customers that I cannot name, but really cool customers to build out new desktop application experiences. And, you know, their requirements are pretty demanding in terms of performance, in terms of multi window custom MDI. Implementations MDI is multi document interface, something I didn’t learn until we started doing Maui and realized that we needed to do desktop things. So I needed to learn what, what is a desktop thing, you know?

 And so, you know, that’s essentially MDI is the kind of thing you would experience in Visual Studio where you can dock and undock panels, and you can have things all floating around inside of Europe. Your primary window. So, you know, then mouse, gestures and pointers and not pointers, like, You know, sciency pointers, but, you know, your cursor, You know, I want that to be a finger, I want that to be a hand or whatever. So all of these things are new in MAUI. And that’s not to say that we’ve got everything immediately at GA that you could ever imagine for a desktop application, but that’s where, you know, our vendor partners that build awesome components step up and because, you know, sync fusion to lyric dev express, I, you know, I could go on and on.

Have desktop components and widgets and they can adapt them for MAUI and they are, they’re doing just that or they’re building new controls. So so far we have not hit a limit or a blocker in terms of What we can Do for desktop. What I think is really cool is, I mean, I don’t know, years ago, and you’re given that you’ve got, you know, web developer experience. Do you remember the whole mobile first design? Kind of wave that happened there and it kind of swept the world. It’s like, okay, when you’re going to build an application, that’s going to run multiple places. Start with your smallest screen. We build out from there… 

Jon: That was actually, my next question is like, how that runs well on a phone and a, you know, huge desktop, right. 

David: Well, I mean, the good news is because  the Xamarin has always been and and now MAUI of course, inherits is it adapts to different screen sizes and resolutions? So all from one project, you can have one set of images and SVGs and raw assets and And then you, you stand up your layout with the appropriate constraints and it will adapt to whatever screen you put in.

And then we’ve got a whole host of solutions for, you know, markup extensions so that you can do on platform for, you know, Hey, if it’s running on Android, do this one thing, or adaptive triggers, you know, if I, it, which is a akin to a media queries right.

Jon: Okay. 

David: So essentially, you know, if, if the screen gets to be larger than 1200 pixels, Add another column to the layout, or if it gets below that remove that right-hand column, because I don’t have room for it anymore.

 That kind of stuff, super easy to do with, with .NET MAUI, or idioms, you know, like, Hey, if I’m running in a desktop context to use a menu bar, if I’m not running in a desktop context, do a fly out menu or, or however you decide to design your application. So. Tons of options. pretty Much you can do anything you need to. And if and if those things, you know, start to make your, your UI super muddy, you can always say, Hey if I’m running on desktop, use this desktop specific layout it’s a separate XAML file or whatever. And then, you know, if I’m running on mobile, I’ve got a separate iPhone or, or mobile layout. So tons of ways you can do it.Plus we support multi-target. I could go on and on. 

Jon: tell me about multi target in there. 

David: so-so with and this has kind of been supported, Claire Novotny RO a library. I don’t even remember what exactly was called. Was it SDK mobile tools or rescue? I don’t know. but it was a way in which you could use this underlying multitask editing functionality and .NET, where with some conventions.

 You could say, Hey, I want this file to work on this platform. And I want this file to work on this platform. And they’re basically sharing an interface or they’re sharing the same class at their partials.

Jon: Yeah. 

David: And, so it allows you to do these multi-platform. From a single project typically. Prior to that, you would end up writing all your Android code, for example, in an Android specific project.

And then you’d have a separate project for all your other platform stuff. And you know, this is just a nice way to bring it all into one project. As developers we’re focused on our app. We really don’t want to be thinking about as cross-platform developers. We don’t want to be thinking about each individual platform.I have to worry about four things, four different platforms. The less I can focus on the value of my one app. So that’s what we’re able to do now. We’ve kind of taken everything that, that Claire, and in that, that library supported and we’ve worked closely with the project system teams and all the other stakeholders within Microsoft to say, Hey, let’s bring this up to snuff for what we want to do in MAUI.

So now in MAUI, you can do all those things. You can have all your code all in one. No matter which platforms it needs to compile for, you can use conditional compiler arguments. You can use file name conventions, you can use folder conventions, and the build system will pick up the right things and do all the right things.

So your Android code runs on Android, only your iOS runs on iOS only, and it works in Visual Studio and they’re adding support for it in Visual Studio for Mac too. So that when you’re looking at a file, for example, you can go up to the top of that file and say, okay, Show me what this looks like for Android.

Show me what this looks like for iOS, and it changes your code to show you this is what’s going to run when you’re on that platform. And this is what’s not going to run, et cetera, et cetera. So it’s very powerful. Very cool.

Jon: So let’s say I’m developing, like right now, I’m, I’m doing this podcast on Windows. I have my laptops, a Mac. Do I need to, if I’m developing across all these different platforms, do I need to be jumping around and testing and you know, running on each or what’s the, like, obviously it’s important to test on the actual platform you’re shipping for, but I don’t want to be doing that all day long.

So how, you know, what does that experience feel like? Is there anything we do to make it easier so that I’m not having to run around in 19 different devices and test everything all the time? 

David: Right.

So on Windows the story is really cool because you of course can be building for Windows. And actually when you start up a new MAUI application, Windows is the default target these days. This is a change we just made previously, it had been Android. And so that makes for a really there’s, there’s two reasons we. One it’s the faster build cycle, so you can be more productive and, to, it has the least requirements in terms of setting up a bunch of other junk. So, so you immediately get

Jon: I D I just have to say when I’ve like, been like, okay, today’s the day I’m going to be a Xamarin developer and I would get started. It’s like, I would get sucked down into Android developer to all hell a little bit. Like, it’s fine. I know I got to get there eventually, but I don’t want my two or three hours to be spent, like messing with Android builds. Right. So that actually sounds. 

David: Yeah. So there’s still more work coming to kind of smooth out the whole Android side of the setup process, because it is quite a few steps. But yeah, so… 

Jon: I’m sorry to interrupt you here too, but there is, there’s this Android sub system for Windows sort of thing too. Is that part of that story or like, I know you can do it manually, but is that going to be like part of the actual main flow in the.

David: So it is not part of the main flow right now. It is something that we think would be really cool to add to the main flow in the near future. and we’re talking and we have had conversations with the team that kind of owns that to say, Hey, what can we do to make this a better developer experience? Related to it.

I happen to have seen a, a, an extension for Visual Studio that hopefully will be available in the next couple of weeks. Not on an official one, it’s a community one. But essentially it will help you to very quickly get your Windows subsystem for Android started. Added to Visual Studio as a device target.

 Because you have to go through a bunch of steps right now to get it to work, right? You have to go figure, you have to go, first of all, install it. Then you have to era how to get it started. And then you have to go figure out what your IP address is. And then you need the magical incantation from ADB, a specialized Android command line, only tool to connect. 

Then it’ll show up in Visual Studio. So this, this extension for Visual Studio, we’ll do all of that for you. 

So, You know, you combine that with Android, mobile and tablets, and then you also have the Windows, which is your default, but then you add onto that we have this iOS hot restart feature enables you to take your iPhone.

With the little cable that you probably bought it with and you plug that puppy into your computer, your Windows machine. And it becomes a target directly from Windows. Just all you need is the the iOS device and your Windows machine. And we guide you through the process of making the connection and you can start debugging right from there.

So really from Windows, the only target you cannot Actually interact with you can build, but you can’t interact with would be a Mac desktop application because we can’t emulate. At this time. And then then the additional scenario, which is also super useful from Windows is the iOS remote build host or the Mac remote build host.

So this is, if you do have a Mac, you can do. After the side, lid closed, if you prefer. And you can connect to it from Windows and it will actually show you your simulator directly on your Windows UI. And we actually in the upcoming Visual Studio release have. Represented in the Visual Studio UI as part of our XAML live preview.

 And what’s super cool about that is we’re adding the ability for you to actually inspect the UI of your running application and that will navigate to code for you. And just really this is, this is what a lot of us have been waiting 

for 

Jon: Yeah. 

David: All that ruling right back to the running applicant. Cause like XAML hot reloads. Great. But then if you want to go to the UI and be like, Okay. I see it on my screen. Where is that code Where’s that coming from? Right. and with this functionality, you can poke at it with your cursor in visual studio and that will navigate to your code And then you can go make your changes. And so yeah, to have a go to  devices. 

Jon: okay. So that is really good. And that’s the development experience? What about the like testing, like CGI kind of thing? What do you recommend for. 

David: Yeah. So in terms of what we recommend really doing on-device, unit tests is, is the biggest bang for the buck. there’s also the ability to do on device UI testing. However, that tends to be quite costly. and sometimes flaky. So the return on investment there is not awesome. so the more unit tests that you can be writing and then getting them to run on devices, you’ll see, good results there.

 With With some of the app center and Xamarin UI test things, which some of that though, some of those libraries still need to be brought up to .NET six. but then you also have other open source frameworks, like Appium. You can utilize some of those even on your local machine. but You know, with, with that coolness comes complexity.

So really, you know, unit tests are the way to go. and if you need to run across a breadth of devices, then the app center test cloud is available.  If you’re willing to pay the pretty penny, because, but then, but they, you know, they have tons of different devices and we utilize that. to run tests against MAUI, and our control gallery and all the tests that we have. But we’ve kind of shied away from doing UI tests these days more towards doing on device unit tests.

Jon: Okay. So what’s the let’s say I’m solid now. I want to get into this. I’m assuming this comes out right after, you know, after the announcement at bill, you know, so what, what, what do I actually need to do in order to get started building now? Yeah.

David: Yeah. So the best way to get started is to download the Visual Studio preview that will be available at build the preview channel, a Visual Studio will carry the GA bits of .NET MAUI and it will give you everything you need for Android, iOS, Mac, and Windows right there. And so with that simple install, Check the .NET MAUI box at the install. You can start developing right there. It’s file new MAUI application and you’re off to the races.

Jon: Okay. So, you know, going way back, we talked about like open source background and open, you know, Xamarin being open source and stuff like that. If I’m not using. Visual Studio what’s. Am I still able to get the bits, you know, open-source and do a little more work to get things done. 

David: So with Xamarin, that would have been a hard, no but the cool thing is, is that because we’re now part of .NET, you can install MAUI directly from the command line using .NET itself. So we are, what’s called an optional workload, in .NET. So we are part of that .NET. but we’re also Because we are gigabytes of things. You know, we don’t want to force that upon everybody that just wants to install that .NET. So you can install .NET with the installer, from the .NET website, and then you can go .NET workload installed. MAUI and .NET workload installed MAUI. We’ll go ahead and grab all the things that you need to be able to build and run from the command line. And then you could use, you could use Visual Studio code, you could use another editor of your preference. they will all have differing support for C for XAML, you know, so you’ll have to decide are those things worth it? you’re definitely going to get the best experience in terms of hot reload .NET, hot reload, which also works with MAUI Blazor hot reload. And if, I don’t know if that’s actually the term we use for it, but you know, the hot reload that works with the Blazor and the CSS things, 

Jon: Yeah, prettysure that’s hot reload to there. 

David: Yeah. Yeah. I think that that will work, in some scenarios, outside of Visual Studio with like the .NET, what does it a watch or whatever that works for those scenarios, but that does not work at this point for MAUI scenarios. 

Jon: Okay. And the, like, I always have to remind myself and think through this. So there’s hot restart, which is detects code has changed and restarts the application. And that’s okay. But I lose my state. I have to wait while the app kind of restarts. I have to get back to where I was. And what’s crazy about hot reload.

Is it actually updates just the code and injects it in. Right. And I don’t have to restart my application. I don’t have to click through the app to get where I was. It’s just updates. 

David: Yeah. Yeah. So it reapplies that code. And then reapplies the state that it replaced. So yeah, you don’t, you don’t lose your, your navigation, you don’t lose your view state. it’s super powerful. And I think that a .NET Hart reload which does a method, body replacement, essentially. So,  and I’ve had really a lot of fun with that over the past week, building out samples and changing code and, very rarely do I have to restart my application.

Hopefully in the future, I’ll never have to restart my application. I can just keep coding. But yeah, there’s a lot of different things you can do with it. And the hot restart the way you described it as definitely accurate the the additional nuance to it is when we talk about iOS hot restart, we’re essentially taking that same concept, but applying it to the ability to, to plug your ILS device into your. A Windows machine. So we can, we can take that same hot restart concept further. We actually use it under the hood on Android development for fast deploy. And we could use it on other platforms as well to 

tighten up the developer loop so that you have to do less restarting of your application, less rebuilding of your application. 

Jon: Yeah. Yeah. W and that, like you said, that cycle of like building and re, like, it’s got to be compiled for that platform and it’s gotta be shipped over, they, you know, install 

David: We’ve developed applications like that for decades, you know? Like, but now, like if, if, if I get up in the morning and start to build an application and my hot reload doesn’t work, it’s like, ah, scrap it. I’m not working. We’ve become spoiled.

Jon: Okay, so I’ve just got a few more questions. One is, so the obvious kind of like selling point for me is I’m a .NET developer. I can use my C skills. I can use my familiar tools. I can use my libraries. I can use code I’ve written and all that. And you get packages. That’s the main selling point for me.

Is that really, like, if I’m, if I’m talking to other developers about like, Hey, Maori’s awesome. Is that kind of the main thing? Or are there other, you know, like things that, cause there are, like you mentioned, there are other things that we talked about electron there’s like flutter there’s, there’s some other options.

So like how is there anything else I should think of beyond that. 

David: So it is .NET. I think one of the other major selling points is You can stay within one language. You don’t have to go out into objective C and swift. You know, I know that one of the reasons that a lot of developers love Blazor is the hatred of JavaScript. Or, or you just don’t feel comfortable with it, or you just

Jon: you know, I got, yeah, I got to say that because. I think people get allergic to like, oh, hey, you know, like your web developer, you should know JavaScript. I can do Java script. I can write Java script. It’s not going to be the best JavaScript. It’s not going to take advantage of all the, you know, it’s like, so like in cases where I’m writing business logic, I think I’d do better in C sharp with that. You know what I mean? 

David: Yeah, I know for sure. and you know, I, on a personal level, I’ve, I started out as a web developer. So ASP and access databases, and then graduated to SQL servers. And you know, I started way back, man. So. I have a I have a lot of appreciation for, all kinds of different languages, whether it was VB VB script, vb .NET.

 C I certainly love and I advocate for, but yeah, so, you know, being able to maximize the languages that, you know, and have mastered I think is, is awesome. One of the other great things that you get from MAUI is accessibility. So accessibility is something that is a. It’s a pretty hard to understand and get up to speed on topic.

 We, we realized the importance of it has developers many times, but we don’t know what to do about it. So the great thing about MAUI is because first of all, it uses native UI controls. You get the native platform, accessibility features by. But also on top of that, we’ve added semantic services that enable you to more directly control your accessibility experiences,  whether it’s auditory, visual, et cetera. That’s something that’s a pretty cool advantage. And then because we are also using a native UI if there are other native libraries out there, you can bring them to .NET. So we have a couple of different patterns for doing that. So let’s say that you had a cocoa pod, or you have a Java library out there and it’s super popular in the ecosystem and we don’t have a comparable offering for it in .NET.

You can totally. You can use it either just by invoking it from .NET, or you can write a binding around it, whether it’s a small API that you 

surface or it’s a full API that you service. Like for example, I was looking on Twitter and there’s a library called… Are you familiar with Lottie?

Jon: Oh, yeah, yeah, yeah. 

David: Cool animations, right? And so so this library is, has been out there for a long time with a, with a, binding for Xamarin, but nobody has done any updates to it for .NET 6 And so this one developer says, Hey, well, I just did a, what’s known as a slim binding which essentially is I just need to be able to call this one method and use this library.

And so you create the wrapper around that with .NET, you invoke into the native code and you’re up and running with a a Java library. essentially. or if it’s on the apple side, it’s, you know probably a swift or an objective C library. So you have that capability as well. And you can stay in .NET, but use not just what you get on NuGet, but you get all the other stuff too.

Jon: Oh, very cool Okay. One last.

David: you think of more, if you gave me more time.

Jon: Yeah. Yeah, I know. I D partly why I set this up is relatively short. Cause I’m like, this could go forever, right? There’s so much cool stuff to talk about. One last question is, can you kind of summarize where we’re at today? Like May 2022, what shipping today? What’s in the future?

David: So, you know, as we kind of started off at the top, you know, this is a huge transition in the .NET ecosystem. It’s a unification of this Xamarin technology and, and all the things, the build systems and everything with .NET itself. so we recognize this is also a major transition for the ecosystem.

So we’re shipping a GA SDK here. And that’s going to give you the ability to build Android iOS, macOS, and Windows applications. We have seen, since we did our C just a few weeks ago, a lot of libraries updating and starting to ship. So the ecosystem is starting to make that transition. And we anticipate that we’re going to see several. If not a long tail of that, as libraries are like, oh, I really need this. I really need that. And they start bringing their stuff and recompiling with .NET 6 targets in mind. and so, You know, we’re encouraging developers right now. Bring your libraries to .NET MAUI and .NET 6 Now is the time. We’re ready for it. You’ve got a GA product, you know, you can depend upon it. Microsoft supports it. We have a, we have a very public support policy, you know, so, you know, you can depend upon it, you know who to call if you’ve got problem. And it’s going to be around for a really long time.

And then as we get later in the year as tooling become stable, because we’re going to ship previews of tooling. With the GA SDK when tooling becomes stable. And we know that we can depend on being more productive, little bit later in the year, then we’ll encourage more Xamarin applications to migrate.

 And we’ll, we’ll go broader right? With the call for. You know, come be productive, building your awesome apps with .NET. But the first phase really is let’s energize the ecosystem to start making 

this transition. Some people were just waiting to know, is this a real product that we can take a bet on? You know, which is a realistic thing. 

Jon: And when Microsoft ships something as GA, like you said, that comes with a support policy and Microsoft’s kind of famous slash infinite, infamous for supporting things for a very long time. Right. So it’s like, once it’s shipped, like that’s a commitment for Microsoft and to something as a customer, you’re like, okay, it’s actually a real thing now.

David: Yeah. and you know, a .NET, we just celebrated 20 years, out, out in the world. We’ve got, we’ve got ourselves, a, a young adult and,  and you know, Xamarin, like I mentioned has pedigree that goes back, like at least 12 years to some early models. So, you know, while MAUI is a brand new first GA it’s also an evolution of a product that has been around for quite a while.

 And so the commitment is there, there is definitely proof in the pudding that this ha this word. Like we Xamarin forms. It survived seven releases of Android, seven releases of iOS. It went from round beveled, edges and gradients and  Whatever that design pattern was called, where things were like leathery and stuff.

Jon: Oh, 

David: And then it went many more design and simple and flat. 

Jon: Yeah. 

David: And then there’s like, new amorphic skewism, blobbity blob, you know? And so, as you know, the great thing is, is if you had built your application at the very beginning, you wouldn’t have have, to have, you know, been forced to rewrite it. That whole time, because Xamarin forms prove that as a pattern, as, a technology it can do that for both, you know, line of business, enterprise applications, as well as, you know, we’ve got customers doing commercial, uh e-commerce, you know, straight to consumer stuff and games, you know, people build games with it, you know, so tons of stuff you can do with it. So. It’s a GA product. you can take a bet on it.

 There’s a support person you can call and you can, and they can help you with your stuff. It’s pretty awesome. 

Jon: All right. I think you just committed to helping me with all my problems. Awesome.

David: along commitments from people with more power than me. 

Jon: Where, where do we, so where do you go to get started then with MAUI? You said download the preview. 

David: Yeah. Yeah. So, so Visual Studio.com preview we’ll have the, have the bits you can install. We actually have our own websites, so probably direct everybody to our website. So dot.net/maui. That that’ll get you to our MAUI landing page. I think we might be taking over the .NET web page com GA. I don’t know, I saw a beautiful design, Maira showed me a cool design. I was like, oh, that looks really nice. So yeah, from there you can get all the activation tutorial and it’ll walk you through installing everything. Of course, I’m, I’ve got, I’ll have a blog post out. That’ll give you all the dirty details.

Jon: Cool. I’ll get that all linked in the show notes. So, all right. I’m out of questions. I’m ready to wrap up. You got anything else you want to say?

David: Hey, man. Thanks for having me on it’s the first time I’ve done a podcast with you. I hope it won’t necessarily be the last, but I appreciate you having me.

Jon: Cool. All right. Thanks a bunch, David. Okay.