The Future in .NET MAUI | DevReach 2023

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
cool so uh we're going to be talking about the future in net Maui oh there's a bot got to have the awesome bot uh so I Am David ort now I am a principal product manager at Microsoft and I work on the net team specifically for Maui what you can't laugh at that settled oh you're laughing at the pictures all right that's that's fine you can laugh at the pictures um yes so we had a little fun at net conf last year uh I've been with Microsoft now for going almost 7 years um before that starting in about 1995 96 who was born before 95 all right you're my people who was born after 95 all right and then some people are just not raising their hands when were you born 85 yeah you looked old yeah so I have been doing software since like 95 96 uh I started out doing actually ASP VB script uh with a little bit of access database because that was the PowerHouse that's that ran all the early internet websites right um and then I started doing these internet startups and one of the first things that I did with an internet startup was I flew from Tulsa Oklahoma where is she she left the room there was there's somebody here from Tulsa flew from Tulsa Oklahoma to Moscow Russia with a Toshiba laptop about that thick and a a phone line and I broadcast a live event with 20,000 people from a big red army facility it was a non Red Army event um and uh we had to work our phone line into the Russian phone system because it was not the same connector so this is the kind of Madness that I have been involved in since my early days of Technology always trying to do something new and Innovative um and I love working on things that are creative but also love working on developer needs and working on building things for you that can make your lives better make your careers better hopefully because I for 15 plus years had my own business I was working as a consultant sometimes with other people but most times working for other startups or other companies like I built websites for Nike and for um new balance and things like that um so I know what it means to be uh at the Forefront of your industry making sure that your skills are what the market needs uh making sure that you're getting paid right you got to get paid because I don't know about your spouses or Partners but my wife doesn't like it when we don't have money right anybody in here like to be without money nobody nobody so all right that's enough about me I was I was kind of giving time for more people to filtering um let's talk about net has anybody I'm sorry I'm a handraiser I ask a lot of questions because I want to know who I'm talking to and I don't want to tell you things that you're not interested in how many here do not use net all right just a couple all right so you will be happy to know that net goes everywhere and anywhere uh it certainly is a key part of why we build the product we want to make it so that you can reuse your Tech Investments as a company but also as developers your skills across a wide range of the targets that you need to reach net Maui specifically is targeted at the mobile and the desktop part and especially crossplatform applications so see these are the applications that uh you try to build once you do as much of the UI in one place as possible and you can run it on Android iOS Mac and windows yes Mr Ed who I think is now out of the room uh we do not currently Target Linux but you can use Linux as your application uh developer machine uh and you can Target Android with it so that is possible how is net going is this a good place for you to be with your career are you are you in the right spot well 6.1 million active developers right now 53,000 community members contributing to our open- source GitHub repositories we are completely open source uh I think once you get into the tooling some of the tools related things maybe the build systems certainly Visual Studio sure that's not open but all of the sdks totally open so we love contributors we we work hard to make contributing to our repos as easy and pleasant of an experience as possible and it also means that when you have a need we are here to listen and to figure out if we can collaborate with you on making that happen so you don't have to wait for Microsoft to announce anything you can come to to myself to Maddie to to Gerald who is on the engineering team and say we really need this here's the reasons we need this here's how much money we spend on Azure you'll get that done for me right right uh and and that's what we're there for that's part of being open source it doesn't mean everything's going to happen but certainly is a lot uh it's one of the most admired Frameworks highest velocity open source project in the top five the whole net or is and then a top five language on GitHub C has become more and more popular as years go on I've seen some recent Market Trend reports C continues to go uh up and increase and some other languages like um it rhymes with Java is slightly going down so you know hey we're doing all right uh so you may ask who's using this net Maui thing so net Maui was announced May of 2020 we shipped it November of 2021 no no May of 2021 uh and then we shipped again doet 7 in November so we ship every year in November uh We've now had two major relases relases and we are working on the net 8 release which will be our third major release uh this takes over for zamon does anybody not know what zamon is please raise your hand no I don't I'm not I'm not begging you to lie to me all right so everybody knows what zamon is I'm I'm going to take that as a we know what it is so of course this is the upgrade from zamon uh of course it is effort for many projects to make the transition to Maui uh or to net and that's another thing that I should probably clar verify for you who mostly here know what net is know what Damron and Maui are um now I forgot what I was going to say that it's not oh it's on net yes yes yes yes I just totally blanked I'll move on um so what I wanted to get to with this slide is you know we often get asked now with this oh so you have zamon support for now there's an overlap but you need to get on Mai and get onnet that was the main thing that I was going to say about the transition so Earth Solutions is a company that does uh like field service applications tablet desktop and mobile they had a WPF application and they had two Zam apps and they wanted to combine all their technology with net Maui so they were an early adopter of net Maui when we announced it and they rewrote their WPF application for net Maui UI they were a able to share all their view models and kind of their middle tier stuff all their services Etc um but then they rewrote their UI and they were able to run that on Android iOS and windows so I've got a little video here that'll show you a little bit of the mobile experience um so this is a rather long video I won't necessarily make you watch all of it but you can see it's beautiful modern application they looked for implementing uh very much of the fluent design style that Microsoft uses on our own products with office and things like that Outlook you know this probably starts to look like your outlook right it's uh very similar um so they're using uh let's see ezri I believe for all their mapping um they do a lot of mapping a lot of plotting on maps and things like that uh they're online offline because they're in the field they might be looking at a pipeline or some other um some other electrical thing or whatever and they need to be able to take pictures of it Mark Market on location turn in service requests service reports and things like that which we're seeing a lot of that let me skip forward to AES so then this is the tablet desktop experience I might to skip P past the picture part there's a picture part yeah so they've got their own camera control in here so it's a very rich very well-featured app um they shipped it right around build time this past year and so that's a really good case study this is a good example just to show you here are the kinds of things that you can do with net Maui um when people ask like they did in madd's session is Maui production ready I would absolutely say Yes um now I also know from talking to a lot of developers some developers have a higher tolerance for using open-source quickly moving software and other developers expect something to be rock hard I'll never find a bug ever and it'll always do what I want it to do so some customers have very demanding uis and uh applications others uh it's a very simple thing so um that answer on is it production ready uh there's a range there of of how it's going to meet your needs so understanding what your needs are and then looking at what the what the framework current state is I think is in your best interest all right so here are some other customers using net Maui uh you can see there are a couple of Microsoft logos go on there UPS uh Fidelity Investments so we've got a lot of customers in government and financial um in Airlines um many of the airlines you may be flying might use our technology on their applications usually not the consumer applications usually it's the business critical stuff and I was actually saying this to somebody at lunch earlier I don't know in one of the conversations in the hallway uh that you know we didn't necessarily know just how important zamon was to customers until we decided to do net Maui and have an end date for zamon because suddenly companies that we'd never spoken to came out of the woodwork and said hey we do $9 million of business annually and all of our Tech is zamon we have to move to Maui help help help we can't not have this application and that was one of just represents many many stories so when you're thinking about is anybody using this thing is it really going to be around for a while etc etc uh I can I can give you that answer tons of people their whole business very you know heavily depend upon this technology and we're super glad about that and these are just some of them on the screen here and then as I mentioned at Microsoft we also have applications using net Maui so uh Microsoft 365 admin is for SharePoint Microsoft Azure is for the Azure portal and store Commerce is a new application that supports something that Dynamics does it involves a store it involves Commerce I don't know it's in a different area of the company but some of these we only find out about because we go through the Google store and we look for who's using net Maui and there's so many so Microsoft absolutely is using net Maui um some information about Maui and how it's going uh we are among the top two and active GitHub users within theet org so we're top two um we're top two and the most active repos in theet foundation so of all the repositories in the net Foundation we're number two in terms of users pull requests issues discussions Etc and then we are top five in the most active C repos on GitHub last month we showed you I showed you thatn net itself was the most active language but uh we are in the top five of most active repos last month on GitHub so a lot of community activity a lot of interest a lot of usage which I think is awesome and then I wanted to show this graph here which is the star history uh the red isnet core which I think you would agree is a very popular piece ofet and then net Maui our trajectory is awesome aome compared to that but I noticed something when I looked this up when I refreshed this based on current information net Maui has passed net core so this speaks a lot to the overall interest and activity on the on the project um and we're really excited about that because in the long run that's going to benefit all of us and so if you haven't starred the repo apparently you need to go do that I don't know why you're not starring our reposit it's amazing all right so uh as I mentioned net 8 is coming up so um I'll pause here does anybody want to see a demo of of just like file new here's what a Maui app is and here's what it looks like and how the project is set up because it sounds like everybody kind of knows zamon and Maui so I'll skip that does that sound okay if you want to see that later come find me I've got it on my machine and everything uh I'll do that all right so here's some of the cool stuff coming for you in net 8 so first up I want to tell you how you can preview net Maui releases before they actually ship in visual studio so one of the main feedback we got from net 6 and net7 is hey uh you're not shipping fast enough or you've got a fix but I can't access access that fix until you ship it the other thing we realized was we were not really able to proper ly validate our releases with all the coverage that you would get from a preview right so with Zam forms we would ship preview preview preview then the stable release and so we would have all that feedback from the previews from developers like yourselves and we would be able to catch a regression or catch a bug that wasn't really fixed before it was a ga release we have not had that with Maui and we've really missed that in terms of our quality um so we've brought that back now the Maui controls piece and the compatibility layer which you probably don't need anymore but it's there for some of the zamon forms upgrade scenarios um that is now a nougat package which you can access from noug get.org and we will begin publishing preview packages for upcoming releases so at buildwi ship. net8 that's pretty much done although we just did rc21 this week Tuesday RC 2.2 will go out next week pretty much between now and build we have the opportun or not build between now and netc in November we have the ability to ship weekly um because the previews of Visual Studio 17.8 are going out weekly so we can do that so once we get to November 14th and we ship GA we are on the same day going to make available to you the very first service release because we don't want to slow down our pace of shipping fixes and quality improvements to you and so the way in which you're going to be able to do this is you're going to be able to upgrade to these things through Visual Studio so this is both for service releases and for previews um so just like managing any other uh nougat package you use the nougat package manager inside a visual studio uh there is also one inside the going away visual studio for Mac um visual studio for code doesn't really seem to have a decent nougat package manager but you can do these things through uh command line too um you want to make sure you check the include pre-release button and then what's going to happen is you'll see this in your CS project this is a net 8 thing that was added and you may be asking well what does that Maui version thing mean right are you asking that yeah and and so that's actually a variable being read from the workload so you've got net Maui on your machine it's part ofn net it's on your machine what version is it well it's going to be red from that Maui version but what if you want this Nate package what needs to happen it needs to be updated to a specific version so Maui version will be whatever the latest version of net is on your machine and then the explicit version is the package that you updated to from nougat so if ever you try to package from nougat and you're like ah that was worse I got got to go back then you just change that back to Maui version and you're back on the latest stable release does that make sense cool Maui version is read from the install workload you can override this actually in your CS project at the very top by saying Maui version uh in the very first block and then installing the N get package we'll update the reference but not the Maui version so be careful we're going to work on our Visual Studio package manager scenario to try to get you uh so that you're not in a bad space if you use Maui version but you also use the package reference all right what else is new well part of net8 and you hopefully are probably already using this is the new Visual Studio code extension um so this is uh both to help with the visual studio for Mac going away but also it's something we've all wanted for a very long time one editor that looks and behaves the same on all the platforms that we work on and that does include Linux so it's wonderful to now have Visual Studio code support it is in preview right now things like uh hot reload for zaml and for c will be coming um I heard rumors I might be able to hack my way into it uh and so I'll be super excited if I can do that but that will be uh awesome you can already debug deploy you can pick your target you know if you want a certain Android emulator or device you can also use tunneling if your device is on some other machine and that sort of thing so um there are scenarios where you could use that across Dev box and some of the cloud-based Solutions if that's interesting so we're really excited about this and we're we're actively working on it and it will continue to improve every week I have noticed even just this morning that I got an update in my extension uh Maddie showed off the net Upgrade Assistant this morning so this is something we continue to improve upon we just recently added this multi-project support um we are adding uwp to Wi UI support um we are also trying to make it really good at going from Net 7 to net 8 and in the future net 9 Etc so this is a tool that you'll want to be familiar with um it's super convenient um however I will say that the transition for Maui from 7 to net 8 is so easy that I almost didn't have enough words to write a Wiki about it you just change the seven to an eight and you laugh that's all you got to do should I have made it harder was that too easy all right um yeah that's all you got to do so the tool will also help with some things if we find that there are other things we need to do we will there are no breaking changes going from s to 8 in terms of Maui uh we try to keep things as calm as as possible uh during this phase but that doesn't mean that you will not be getting great things in net 8 net 8 we only backported 20% of the bug fixes to Net 7 why only 20% well every time you have to validate a release and validate a build that's time that's effort it slows everything down slows all the engineering team down and so we had to narrow our focus on a release and that was net 8 so that meant that yes critical things made it back to service releases for Net 7 but if you have been kid considering should I be trying net 8 how quickly should I adopt net 8 for Maui do it immediately there are so many more bug fixes there uh you will be banging your head on Net 7 by comparison so I highly recommend that but more than bug fixes we actually have some other stuff in here uh I mention the multi-headed applications so just like your Zam forms projects were set up you can do this the same thing with net Maui um there are perhaps a few benefits uh narrowing or focusing your build times to a particular platform in some scenarios where a multi-targeted will build everything but we've tried to really solve that so that shouldn't be much of a problem I prefer single project single project puts everything where you want it to be you don't have to worry about the multiple projects you manage your nougats in one place oh I hate managing versions of nougats across multiple projects anybody else hate that all right thank you very much it's not just me um so single project has a lot of value in that but multi-head you can use that if you want to there's a GitHub Link at the bottom of the screen here where Matthew hosts that and we will be getting that up onto nougat soon migration compatibility I mentioned that we've been doing a lot of bug fixing well for a long time we actually did not have all the zamon forms unit test or or UI tests in particular running against Maui because we couldn't um if you were a zamon UI test user you kind of understand that pain because for a long time it did not support net so with the with the latest releases and the work we've done we've been able to get those tests now up onto net 8 and we've been able to validate our releases against them so that's a huge relief because it's hundreds and hundreds and hundreds of UI tests right and we were able to see okay is are we getting the same positive results on Maui that we are in forms we know there are differences some of those differences are intentional but those that aren't we want to make sure that we've got that so that's a huge difference between what you've seen in the net 7 and the net 8 release the net 8 release has got a lot more coverage um they're all passing on net 8 that's very cool um all that red stuff is all good now in the uh screenshot memory leaks who loves a good memory leak yeah yeah oh that'll take a couple days off your life so Mr Jonathan peppers from our Android team has gone in and done a lot of work on memory leaks he has written a whole Wiki very detailed on how to troubleshoot memory leaks in your application how to identify if it is a real leak why is that happening he has written Roslin analyzers that we now use to find things like circular references that cause memory leaks and we've been able to plug dozens of them in our code so that's super wonderful what you're actually seeing on the screen if you can catch the numbers quickly enough on one side you've got a win UI app on the other side you've got a Mac app the win UI app wasn't leaking too badly but the Mac Catalyst app was leaking pretty hard um and so the nice thing about Mac catalyst is for the most part anything you can do in catalyst is going to benefit your iOS because it's all the same UI stack all the same rendering um because it's the same that's what catalyst is all about so a lot better on the uh uh memory management memory leaks hopefully are uh fewer and farther between we have also added keyboard accelerators so if you are who who's doing desktop development at all at all okay and of you who would raise your hand and say we want to use Maui for it or we are using Maui for it all right okay you're kind of eh yeah uh so desktop in general is relatively new as far as you know zamon had uwp but it really was more focused on mobile scenarios um really didn't take seriously the desktop scenarios like you know we need to be able to have performant data grids or certain drag and drop scenarios certainly not keyboard accelerators so um now you can have a keyboard accelerator what is a keyboard accelerator I I hate I honestly hate the name but it's the name that was chosen by some desktop platforms so we use it um this essentially is your shortcut right so crlf on that you hit your keyboard and you're going to trigger the same thing as if you had clicked that menu item now keyboard accelerators of course uh are pretty much all tied to menu items so if you want to do keyboard capture without menu items you can go find my plugin where I give you a way for you to listen to all the keyboard events so that you can just have a you know a password logger or whatever no I'm just kidding you can't do that it's not allowed um so lots of good work here to enable more keyboard scenarios with regards to shortcuts other keyboard improvements and I love this one so have you ever had a form on your phone and you clicked into a box and the keyboard covered the Box you were supposed to be typing in yeah all the time happens on Android all the time no I'm just kidding but uh so this is something that we've done a lot of great work on um what you're seeing here is a zamon forums app a Maui app and the new Maui improved app uh it's using editors it's using all kinds of input Fields And if you kind of follow What's Happening Here it stays in view when the keyboard pops up we've also added new keyboard apis or we have keyboard apis for uh explicitly showing and hiding keyboard so you have more control over all of that stuff so very cool drag and drop so this tends to be pretty important for a lot of applications and is that video going to play do I have to click it again clicked it again so there you go so you can drag and drop you can add custom glyphs so what that means is when you're dragging you can have a special icon um that icon might indicate the kind of thing that it is or it might indicate when you can drop it or can't drop it that's a very common scenario you know a big red X if you're over the wrong thing but a green check mark when you're over the right thing um or wacky stuff like uh a copy icon for no particular reason um so lots of drag and drop stuff that you can do there and it also works on IOS and Android if the video play there the video is playing so you can see dragging and dropping there as well so very cool anybody interested in these demos is this cool stuff is this all right I love it uh so yeah new drag and drop this particular enhancement here was for the iOS to support those specific apis all right pointer gestures so sometimes you need to know am I hovering it am I pressing it am I pressing down have I released it all those sorts of things are important when you're doing uh pointer related things well we had the ability to do a lot of that stuff with your finger but not the pointer and it was different so with uh this release we have improved the pointer press pointer release gestures so now you can take advantage of those in your application it's almost like it's a real desktop app it's lovely um iOS large images fixed this one was one that drove me nuts uh when I was moving applications from zamaron forms to Maui and I would have an image that suddenly was not the right size it's like what happened how did that happen why why did it happen um and it's very hard for me as a developer to really be able to overcome that unless I know what's happening um so it turns out what you could have done is guessed at the size that image should have been and said that but if you've got an iPhone and iPhone Pro and iPhone Pro Max and then you've got an iPad and then you've got an Android Note pixel Itachi uh Huawei uh what other phones are there out there Sony you know all these different screen sizes that's not going to fly so turns out there was a limitation on the way native iOS was downsizing images to fit the space and how it was handling scaling so that is now fixed it will be in the next service release of net Maui and I'm very excited about it because I hacked my way around that one for way too long uh iOS safe area fixes are coming so I don't know about your applications but I have several applications where I don't want the navigation bar to cover my content I want it to be transparent and I want to be able to scroll all the way to the top of the screen uh there's a lot of applications out there like this but I still want to have my uh fly out so in uhet G 8ga hopefully this will all be fixed and we can all celebrate this um there's actually a way for you to implement this yourself so there that's one of the great things about Maui is that the architecture actually makes it easier for you to override the behavior of Maui whereas zamon fors it was way harder in zamon forms you had to basically Take Over Control of a whole bunch of stuff and Maui you can hack in just to a certain property or to an event or in this case uh a transparent appearance class and you can just override that thing and do what you want to do so very cool um also several improvements in general to the used safe area uh so in my case I want to use safe area false and I want to ignore safe area true on any layout and I don't know if you've seen this property it was actually something I didn't notice when we first shipped Maui it may have been there in the first release but on any layout inside of your page if you wanted to ignore the safe area layout but have other stuff behave properly then you can do that by setting this property um and if you're unaware what is the safe area on iOS it's that space at the very top and if you turn it to the side it protects things like that dynamic Island and the the former Notch and things like that so that content doesn't accidentally overlap or underlap that stuff wsa Windows subsystem for Android is anybody using Windows subsystem for Android is it available in Bulgaria do we even know this okay well maybe not everybody's here from bulgar um so what this is is there's actually a whole Android subsystem that you can install and run on Windows and you can Target it with your Visual Studio to use uh that as your emulator essentially and so it's faster than booting up emulators it's easier than configuring emulators um and you can treat it like a desktop app because essentially it's unbounded in terms of size so if you're dealing with hey I need to make sure I handle multiple screen sizes with my Android app you don't have to manage multiple emulators you can just resize that window to represent the different screen sizes that you care about um so in order to get started with Windows subsystem for Android you can Google it in our learn documentation um and then once you have it enabled and you've got the latest build of Visual Studio you'll be able to see it as a device Target on your machine all right what else is happening there is quite a bit more happening iOS 17 and xcode 15 work um so I believe iOS 17 was part of the Monday or the Tuesday release this week um yeah the so and by that I mean the actual SDK apis that are new to iOS 17 for several releases we've had the ability for you to use xcode 15 which is the latest release from Apple in net 8 we've also enabled and will be completing apis for Android 34 API 34 um and winap SDK I just heard 142 1.4.2 is going to be our release version um so that's brand that's hot bits coming from the windows team um I don't think we've even used it yet but it resolves something that was wrong with the previous version so that's awesome um I don't know what other features Windows has uh put into it but it's all good news um we have remove the Rosetta dependency so Rosetta is an emulation software on arm chips from Apple that allows you to run Intel architecture uh code right and so that's great but it also means that your apps are slower it takes up a bunch of hard hard drive space um now that's gone so not only are your Maui apps able to run un virtualized which is smoking fast um One customer one customer that I was talking to showed me their extremely large complicated desktop application running on Windows and then running on the Mac M1 the M1 started in like under a second it was crazy fast um and then the windows one not so much but that was really really cool in part because they also have a aot ahead of time compilation for the Mac applications so that combined with no Rosetta dependency super fast and then this is something that I heard about recently which I would have been not excited about until I saw the numbers but this Android resources designer you've probably seen this file it gets autogenerated in your projects and you're like what is this thing do I really need it why is it barking at me blah blah blah um and so what this is is it's basically a large file that indexes all the resources needed for your Android application your layout IDs your uh images uh your strings all your Styles Etc um and it uses that for your application but it doesn't actually need it in every single assembly and it doesn't actually need it uh in in the runtime build that we generate and so we went and we re we just fixed all that right we optimized the heck out of it and that was able to get us an 8% assembly size reduction uh and 2% app package size reduction packaging being the actual resulting application and then 8% faster startup that's probably a best case scenario you may not see immediately an 8% just because you upgrade to net 8 but you ought to see some benefit from this um and in general all of our benchmarks show that net 8 Maui Android iOS all the flavors of applications you can build um are at least as fast if not slightly faster than Net 7 which is awesome considering that wasn't really a priority of work for us during that time period um so we made sure that we didn't regress in that space and I'm really thankful for that um hopefully in the next release we can put a little more Focus there because we certainly have some some areas to improve all right I have 22 two minutes let's talk a little bit about what's coming in net 9 so all that stuff you can access today uh it's release candidate 2.1 right now you'll be able to get GA on November 14th and we are already talking about what we can do in net 9 what is it that is going to help customers the most what's the most valuable thing that we can do so by far the top thing that we are actively working on right now in planning stages is Swift interop so if you aren't aware there's about 213 iOS Frameworks 122 of those are Objective C pure Objective C nothing else to it there are 58 that are both Objective C and Swift so they're covered by both in some of those scenarios new features to those Frameworks only happen in the Swift one not the objective C1 so if you're on Swift you start to get an advantage right and then more and more 33 now of those Frameworks are Swift only and this is just a sampling on the side of the screen as to what those are that's obviously not 33 but those are the ones that I think are among the most recognizable and so Swift only things we have really no answer for in C at this point that we're shipping to you so you effectively from a c standpoint can't make a widget because it's Swift only right so how would you do that today well today you could write it in Swift and then you can bundle it together with build steps and ship it with your net application so you can build the application and.net and build the widget and Swift and ship it together that's that's doable it's a pain it's a little wonky you kind of have to go deep into the plumbing to make it happen but you can do that with this the hope is is that we're going to be able to cover enough scenarios that we're going to be able to start enabling some of these Frameworks and some of the Swift only experiences so if you want to see how that work is going what we think we're going to be able to accomplish during this period of time that's the GitHub open repository of design documents you'll be able to see a whole discussion there as the plan evolves um the one thing I would say is it's still early days I'm not promising that we're going to solve everything Swift certainly Swift UI is a whole other thing for us to consider once we get this Foundation laid um but it's super great news that we're doing work in this space and it's going to be a nice Improvement for your applications and it's going to mean that you're going to be able to keepnet relevant on Apple platforms for much longer because the trend certainly is to phase out The Objective C and to turn more things over to Swift so we want to make sure that we can help you use the latest things that they're shipping and all the new stuff is Swift Cool all right other goals that we have and we'll figure out how many of these things that we will be able to plan for and accomplish inet 9 we want to continue to look at how we can increase the velocity of our bug fixing we've been having conversations about it you know should we put more process in less process do we need to dedicate Gerald 247 tell him he can't sleep at night he can only solve you can't go to bed until you get your 10th bug Gerald close um so we're we're certainly talking about and looking at all of those things and it's encouraging to me as I look at other open source projects and some of their road maps and they're all talking very similarly it's like oh let's see what we can do about increasing the velocity of our work you know um and some of that might be uh making it easier for contributors to come in and help out but that honestly does require a lot of effort on the core team's part uh because you have to review things you have to bring it up to standards uh there's a lot of back and forth so uh reducing build times I don't know how you feel about it but uh build times could be better so there are times when my Android app builds in 15 seconds and there are times when my Android app builds in uh what it takes to to make a cup of Americano after grinding beans making the hot water boil getting it into my cup and then drinking it and then coming back to my seat so that's not cool I want the 15 seconds or even f faster so um we again this was another area that we really didn't focus on in this past period of time and so it would be good for us to spend some more time investing in it some of these areas are just those areas that they're always going to be things that are on the list when do you spend time investing in it when is it at the height that you need to work on it right improving runtime performance always would be wonderful I would love to see much more fluid and responsive applications um support for Native desktop experiences and and I will back up in terms of like runtime performance and things like that um it's not that nothing happened in net 8 as relates to that it just wasn't a major Focus so they were more opportunistic fixes like we introduced something called Setter specific Setter specificity what that generally what that effort was all about was to help hot reload be accurate when it was applying properties through Setters to controls um and so we wanted to improve hot reload experience but that also meant that things got much stricter and that actually means that your app gets slower when you have more if statements and you're doing more validations and more null reference checks your app gets slower did you know that everybody knew that right no no you disagree no it's true it's totally true um so anyway we were able to then go back identify why it had gotten slower changed the way something had been implemented and we gained back all that time so um support for Native desktop experiences there's still more that we can do in terms of desktop uh especially around cursors keyboard um I think accessibility is in a really good place we actually just went through our net8 accessibility review passed it with flying colors [Music] everybody's like accessibility that's so boring yes but it's important um improving hot reload is going to continue to be something we hear back in our feedback we definitely hear hot reload is not good enough it's not reliable it fails on me it only works sometimes blah blah blah and so we definitely want to continue to push on that and do everything we can to uh to make it reliable um I'm as I mentioned super excited that we're going to get that going in vs code um and then adding documentation and samples is probably the other thing that we get in our survey feedback and from talking to developers I want more documentation well what documentation do you want and then they go silent so if you have documentation you want if you want if you have a sample you're like I want to see code do this because I don't understand it or because I'm missing it and it's taking me too long to figure it out by hacking around it let us know please let us know um send us an email anytime uh because that would be super helpful can't promise you that I'll I'll have it written for you but it will be considered um a quick note about releases so net7 of course shipped in November of last year it is supported through essentially May of next year we ship on theet schedule so major releases every November um and always 18-month releases for net Maui so long-term service release means nothing to net Maui that's been something that's caused some confusion why is that and Maddie showed this slide earlier but it's because we have these dependencies on Apple and Google and they give us new bits every year and you know Windows really is no different they're giving us new bits all the time too and so we need the flexibility to react to that and in some cases make big breaking changes hopefully not but when Apple breaks something and they often do we need to be able to react to it um and so in order to do that 18 months is really the the right timing that's probably more generous if you are doing any kind of mobile thing or anything that depends on Apple or Google as the platform then you want to be upgrading annually you want to be on the latest stuff and if you're in the play store or the Apple App Store they're going to require it within an 18mon time period generally anyway so so that's why we're on that schedule so net9 will ship next year in November uh yes I said that oh one thing I will also mention for those who have zamon apps who has a zamon app in the room one shy person two shy people so your applications will receive Microsoft support uh through May of 2024 but we also did Maddie I didn't correct you when you were speaking but we did we did actually ship xcode 15 support and Android API 34 support for zamer applications and so that means that you can build with those and remain compliant with those stores we may not give you every API that is new but you can use the tooling stay compliant while you are moving those things to net Maui which of course is the best destination in the world because it's Maui and it's a beach and it's in Hawaii and Hawaii is amazing yep there's the end date for zamon and with that go build amazing things with Net 7 apparently uh we have time for questions we have 12 and a half minutes all right got one here and if you need to leave you can leave go ahead hang on she's bringing a microphone for the audience or for not for the audience audience question the video audience for later what is the performance of the application compared uh to the same application built with the native tools Swift uh and apple SDK yeah so so the performance uh the runtime or the build performance sorry the runtime runtime performance uh yeah so runtime performance you are never going to get faster than using the native Native stuff so building something with Swift Objective C those apps are always going to run fastest um I think that the startup time on a native iOS application is under 100 milliseconds um that's before you put junk on the first screen so whatever you do there is going to impact that but uh a final new application in swifter Objective C is going to be that fast Android um I don't remember exactly I want to say it was under 200 milliseconds um so that's always going to be faster so when you come and use something like net and net Maui you know you're using it for different reasons like our goal is to have acceptable startup times and when possible make it awesome but the question that I would always ask when it comes to Startup time concerns is what's your goal and why is it your goal like I've had customers tell me developers tell me I don't care if it takes 20 seconds to load up because we only load it once a day and it runs forever now does that mean that 20 seconds is my goal absolutely absolutely not um so right now our Android apps launch uh bar android.net launches at around 4 500 milliseconds and check it out John Peppers has a blog post that documents all this stuff that will be coming out with our GA release or sometime shortly before so it will have numbers in it if his numbers are slightly different than what I'm saying you can trust his numbers um a net Maui application is currently under 700 milliseconds for a um for like a a real app our podcast app is one that we profile which has web views in it has tons of controls has media elements and things like that so you know an Android application launching in 700 milliseconds I I think that's satisfactory but if you disagree but would it be faster with uh with Java or cotlin yeah absolutely because it doesn't have to start the net runtime so yeah but then you don't get to use theet runtime and you don't get to use all of our awesome apis to do crossplatform things other questions will you will you say it in the mic so that we can how about during uh usage of the application after startup is there is a performance difference then right right well assuming that you haven't introduced a bunch of circular references with memory leaks um yeah so there's definitely a benefit to using Native Native for for runtime performance screen to screen transitions animations and things like that um you're going to pay some penalty for the crossplatform domnet layout stuff that we do um I don't know numbers wise what the difference is right now but that is one of the reasons that it's on our list to look at in net 9 because now that we've got a bunch of controls actually doing what the control is supposed to do let's see what we can't do to improve the whole experience overall so um it's not it's not as fast as we want it to be um but it you know hey we have room for improvement anybody else any questions raise it high ask questions I'm very blind ask about my granddaughter I'll answer questions about my granddaughter how old is your granddaughter how old she is 1 plus 3 months a yeah 15 months she's adorable she runs she's now playing with the dogs yeah go ahead is there a risk of glitch is and uh is that bad the performance actually is it much worse than the native tools actually when I for example scroll can I see glitches yeah I mean just about any application you'll be able to make some glitches if you want um in terms of scrolling so uh we have done quite a bit of work on our collection View and our scrolling um in general in net 8 so that it is smoother to address some of those glitches most of that's you know that's measure and layout performance related stuff some of that was memory leak stuff that we had to address um so yeah Again by default if you're doing everything properly okay you're going to be faster on Native for almost every scenario um and in both cases you can do things improperly that will make it glitchy um I will say that one of the things that we did with net Maui and with our uh the shell that we kind of host most of our stuff in is we looked very closely at the Android overdraw to make sure that we were getting the best performance we could from that um and we were able to reduce that to basically nothing so um you shouldn't be getting glitch if you're if you're doing well um if you're getting a lot of glitch that's not acceptable and we should fix it oh we've got two thank you um I don't have a question but uh more like I would like to share something with you that most probably would be interesting it is related to Leist view probably collection view uh when you select a given item for instance uh there is always uh let's call it something like selected item color which on Android by default is orange and uh I was trying to figure out a way how to change exactly this color but I had some problem with it however I found uh a workaround of this problem for instance I was not using the item tapped event of uh the least view collection but uh I was relying on my mvvm pattern and I used a special dedicated command for this purpose and uh used the gesture recognizers uh which are available for these types of collections so this actually solve the problem with uh the selected item color if any of you has ever encountered it probably this approach would be suitable for you thank you yeah so that orange color is the accent color that comes from the Android resources and it's annoyingly not something you can customize from the crossplatform layer um you might also look at visual State manager for that scenario to be able to set what you want the background color to be yeah next was it you thank you okay so you told us about compared to the native platforms like Swift and cotlin but how about these real competitors like floter or um uh Native Jazz yeah is it better and if yes why uh except we could use your awesome net apis yes uh so flutter is faster and react native is faster um the two main reasons being is they don't give you all the native apis and so they just poke holes into the native sdks and you end up doing message passing and things like that to be able to use the platform specific things um flutter of course is basically a game engine and so it's doing uh competitive frames and it's drawing everything and so it's highly optimized for that so it's more like Unity 3D and it's going to be faster um and it can start up very quickly because it's not starting up very much um react native is more similar to net Maui in the way it's architected for Native things however it's also passing all the instructions for Native commands through a JavaScript Bridge right um and so you are not directly exercising native things you are passing it off to the native uh platform so in part really the the slowness that we see um is comparable or the speed that we see is comparable so a flutter real world application will start in about 400 450 milliseconds uh maybe 200 if you get a really good Android device and I'm speaking mostly Android terms on these numbers because that's where all the problems are people very rarely say this app doesn't load up quickly on iOS like it's almost never happens um and if it does it's almost never our fault because our we're almost at parody with iOS um and then again so you know four four 450 milliseconds versus 700 milliseconds like is at the end of the world um you know is your customer going to come to you and complain that the app loaded in just under a second as opposed to just under half a second um so and the reason why it's slower to load is because it has to load up mono and it has to load up the net runtime at the beginning um and those things take time takes takes a whole 500 milliseconds or something so which which isn't to say that that's not something we want to improve that is absolutely something we want to improve I would love to people to be saying why isn't flutter as fast ASN net Maui like that's that would be amazing does that matter to most of our customers absolutely not they don't care it's a vanity metric in many cases unfortunately everybody put your hand together give them a whoop amazing thank you so much oh my goodness it's been an amazing conference and I appreciate each and every one of you thank you so much thank you for our to our sponsors and thank you to se for hosting us we appreciate you all and I just hope you all have a wonderful and safe evening so thank you bye everybody
Info
Channel: Progress Telerik
Views: 1,268
Rating: undefined out of 5
Keywords: Telerik, devreach, devreach 2023, dotnet, dotnet maui, dotnet 8, dotnet maui android, dotnet maui ios, dotnet maui macos, dotnet maui windows, dotnetconf, dotnetconf 2023, dotnet maui microsoft, dotnet microsoft
Id: w80d3TkIBWM
Channel Id: undefined
Length: 57min 50sec (3470 seconds)
Published: Wed Nov 22 2023
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.