Xamarin Community Standup - .NET MAUI Update!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] do [Music] [Music] do [Music] [Applause] [Music] hello everybody hi thursday of the month i almost have a good morning it's not even morning here it's 1pm it's always morning it's always morning somewhere i mean look at all these locations in the chat i know that was a good uh tip james montemagno had that tip on our last uh dot net streaming town hall now all of the streamers get together and talk every month um and he was like you should show where people are from during the during the walk up and i was like ooh we have people all over the place i have seen uh albany new york just came in we've got india algeria georgia not the country the state we might have we might have the country uh brazil lots of places so good morning good evening good early morning good midnight good tomorrow we've probably got some people in tomorrow yeah happy friday for some of you folks uh i'm maddie legere i'm a pm on the xamarin team uh welcome to xamarin community stand up i have here with me the two coolest people in the world david you want to introduce yourself yeah uh david ortnow principal program manager for net working on xamarin and of course.net maui um and brought along my partner in uh all crimes that we commit against net i guess i don't know that was horrible we don't commit crimes john hey yeah so i'm john um i've been around the consumer community for a bit but now i'm getting to work a lot more with david and maddie which is fantastic as the forms maui whatever uh engineering leads so hopefully uh i'll get to disrupt things a lot more going forward there you go disrupt oh that was the word that i should have used it's a good startup buzzword disrupts it's not morning but it's morning but it's really cold there right like are you guys already out in the igloos and whatnot yeah i mean we just got our first snow finally which was fun tobogganing yay oh fancy my goodness it has been a busy the end of 2020 is going by much faster than the beginning middle so that's good uh busy month last month dot net con we've got a lot of links hold on there you go they're posting voting everywhere all over the place for streaming right now to to youtube's facebook live periscope and twitch all at once because technology is great um but i have a periscope account because i'm sure that i opened one when it was a first round i don't know how to get to it i don't even know does something own periscope does twitter like own them yeah i know i should probably check my uh have you been hacked what is the uh oh have i been pwned great website yeah and see if my password is so i i remember periscoping from a uh google uh i o event in san francisco with mr montemagno years ago as we were waiting in line that was fun that's scary yeah a little bit a little bit not too much oh my goodness okay so today's community standup is all about net maui updates after we go through some blogs of course though because there were some actual some really great blogs this month uh and want to make sure we highlight those as always uh but dave has some slides yep like a presentation or something i don't know he like really prepared for this we've got john yeah people are super eager to know what we're doing for netsix and dot net maui um is it even happening so we're here to answer questions if you have questions uh only got 20 slides so it shouldn't take very long but there's a lot of content it's very content dense i want you to know what we've been doing for the past 10 months since build but but there's so much happening in the xamarin ecosystem in the dot net ecosystem today that i was like we gotta do the blogs i mean there's been like what 10 different virtual conferences just in the past four weeks oh yeah for sure i mean if you want to if you missed.netconf good segway thanks dave and you're welcome it's like we do this sometimes before maybe uh we've got the all the videos in here uh learn about xaml heart reload 2.0 which is not the official name but it is what we call it now but that's the hot reload that has uwp support and it's faster it has the live visual tree which is sick learn as always about hot restart if you're not using high restart yet now's the time it should be stable soon i don't know when but soon i use it now all the time i have not updated my mac from big sur and i think or too big sir and i think i said that's still in the keynote so you can tell i haven't opened it um and of course xamarin forms which we talked a bunch about last time there's a xamarin show you're going to continue to see us blab on about xamarin forms 5 pretty much for the rest of time because it's amazing but um you know it's not not what we're going to talk about today so go watch dotnetcon because it was great um and we had a really good slate of community members in that netcod some some names you might see that are familiar here um and i i got to host between some of them so i gotta like ask questions it's cool that's cool it was fun had a good time so um check those out uh the usual you know the usual xamarin stuff happens in the uh in the beginning of dave in my talk but we get really deep into xamarin forms five too which is great of course we have a whole month ahead of us i thought it was gonna be a slow month because like the holidays it's not it's a crazy month there's a bunch going on a lot of mobile mobile groups mobile developer like groups kind of uh getting things together throughout december which is awesome so plenty of xamarin content um this is about all i have the bandwidth for this month emotionally it's just like watching people talk about things so this is a good month for that very good all right close these i'm gonna post the links again copy paste and i'll put it up as a banner so now you can go go follow along with me if you'd like to um i only have a couple and by a couple i mean i think like seven because i want to be uh pretty breezy for maui but oh my gosh okay the first one brandon minnick who the um the second c sharp nine came out uh was you know dming me on teams like so xamarin c sharp nine blah blah blah and i was like i don't know you might know brandon he's on our uh customer cloud developer advocacy team i don't know he does a lot of xamarin stuff he's also a big fan of c sharp ui so anytime you want to hear about c sharp ui go to brandon he's great um but he has been diving a lot into uh uh um sorry i just totally lost my train of thought i saw it could you not scream please yeah let me turn down my game i know um diving into c sharp nine as soon as it came out and looking at the immutable objects feature uh you can hook them into sql light every app has a database basically so some good some easy peasy uh code samples and all that super cool to look at this was a demo i think in maybe the netconf keynote as well but uh if you want to start modernizing your apps using some of the c sharp nine features go for it it's gonna be gonna be a good time so oh steven we haven't had a blog from steven in a little bit i think i don't think we had one last month which was weird this one's interesting too improving the touch targets in your apps using xamarin forms so you know i have thumbs my thumbs are a certain size and they can't get as small as i want them to sometimes um but stephen well known on his blog for uh good design and this is uh very user focused examples of how to make your app a little bit easier to use for people basically um this is something i always say about why it's hard to do desktop apps with you know desktop and mobile cross-platform apps is because your desktop screen has a mouse that you can click on things with and that can you know let you click on much smaller buttons and then mobile apps you have to use a thumb so uh he's got some good links here too to the apple human interface guidelines the google material design guidelines all that stuff um and i guess there are going to be some helpers in the xamarin community toolkit which is the best so check that out yeah that's that's already there the helpers are there now i think that happened november 20th wow that was that was fast yeah um yeah if you're unfamiliar with the uh xamarin community toolkit dave you're getting a lot of comments on the lighting it is totally mesmerizing i love it is it do i do i need to stop it from cycling no it's so good keep it going i love it um now i have to up my game well i feel like i'm late to the game on the lights thing uh but i just needed something different my my whole space was so cluttered i felt like i needed a fresh set less talking more lights i didn't know um all right i'll see you guys later all right tiny mvvm love it love a good daniel tiny mvvm blog this one i clicked on because it said cake and it's not about cake that desserts about cake and plugin um but it's a cross-service plug-in that lets you i don't know do a bunch of stuff something about azure devops check out the website cakebuild.net um c sharp make and we use a ton of cake in our in our own repos cases really interesting yeah we do yeah i'm very much on the tooling side of the house so i don't know what we do in sdk or lan a lot but this is it's super cool and um you know daniel tiny mvvm kind of maintains a lot of that so definitely check this blog out to learn a little bit more about cake and how he has integrated it with some of his like azure devops stuff and and i guess github pipelines whichever one this is for a tiny mvvm cool oh maui blog johan sent me this uh it's very cool just touch bar ui so let me see where the screenshot is where's the screenshot oh it's up on top see right up here mac os apps love mac apps in xamarin um i think david has some mac pull requests in the links i don't know what you're going to talk about with that kind of scared but in the touch bar which is pretty cool some uh custom code for xamarin forms make your touch bar show stuff so this is kind of showing what song is playing if you're unfamiliar with the touch bar it's the thing that replaced the function keys that everyone was really mad about and then i started to use it and i was like oh this is kind of cool and now i don't really mind it anymore yeah you still have the option to choose normal keys and i think they even brought back physical function keys on certain models oh hmm i really missed the escape key i'll never forget joseph doing the demo with miguel and he reached for the escape key and had a visceral reaction to it not being real i can relate to that experience i would like the escape key and then the rest of them to be virtual that would be cool yeah having the virtual there is definitely convenient and you can interact with it which is super cool yeah like this using xamarin forms whoa all right uh charlene so charlotte and randy zam girl and zamboy celebrated a marriage anniversary this past month so congratulations you two if you're in the chat um the pictures were beautiful uh she had a blog this month about simplifying bindable properties with type converters so i'm all about simplifying i am not all about type converters but i actually found this pretty easy to follow along with um and and she uses font sizes as an example which is pretty good a lot of people have issues with like you know making fonts kind of responsive and all that so definitely check this one out the the usual uh lots of code lots of walkthroughs and screenshots so super helpful especially if you're someone who is kind of more on the starting out part of xamarin forms and you're just like what is a binaural property what is a type converter that's a good place to look good place to look because it's very practical um oh my goodness the first prototype can your ios app be installed on a mac m1 very cool so the new max came out you might have gotten uh the development kits i know we got some on the xamarin team which is exciting um and we're trying to get everything to work on it you know all the things um but one of the cool features on uh the the apple silicon max is that you can run ios apps on your actual computer like not screen sharing like you just run it so you can see like this ebay app in here surpri supports max with mac os 11 and an m1 so uh this is a walkthrough to just see how to uh if it actually works um and then i don't know where the walkthrough is to make your app work but it's pretty easy to find out if it's going to um it's surprisingly simple you just google it i think this happens for a lot of people right am i wrong well to get your to get your your already compiled ios app running on an m1 it just works yeah that's that's the whole gist of that to get your ios app to run elsewhere and to start taking advantage of desktop things then that's when you get into the catalyst space and we will be talking about that here in a little bit and that does require some additional work um and frank krueger has kind of been tip of the spear in the community leading on that stuff so it's pretty uh cool google it and find out i like that all right last one mfractor blog uh matthew robbins hi matt it's been a while uh another c sharp nine blog but does a good summary of what's going on with maui which we'll talk about and uh dot net five and all that stuff um and c sharp nine and kind of how you can start using all this stuff that's out today so very exciting if you are interested in uh being on the cutting edge of all the things so with that what is the cutting edge dave what's going on well let's switch to my screen and let's start talking about it and let me tell you i think this is why everybody's probably here um but hopefully you enjoyed the blog posts as well and uh you'll join us more frequently because every month we'll we'll dedicate some time to telling you what is happening in our progress towards.net 6 and the development of net maui so we have other touch points that you'll be able to track as well let's go ahead and oh by the way so i had to choose a bot for this i didn't get to check my twitter recently i was asking for help choosing and nope and everybody seemed to say don't choose use them all so so there you go we've got a bunch of bots um but hey you know we're gonna have to put in a request to update the maui bot over here to make sure we get the the new colors and everything um so let's start going here um so the first place i want to direct you to to check progress or at least know how we're thinking about things is the themesof.net website so you can go here and you can see all the epics the the high level visionary things uh the goals the work that is ongoing for 6. probably the biggest piece of it for us certainly but i think even overall is the work that didn't make it into.net 5 which is bringing xamarin and mono fully in to the net you know shared experiences using the same project systems all the work that we've outlined here at a very high level now the again these are high level user stories and uh john and i and maddie are working on getting more specific tasks identified within them i mean we kind of already know the work we're doing and we're already acting on it but putting it into this format so that it's open and available to you to see of course you can see other specs and things like that on the.net maui repo but this is the first touch point for you a place to go see the uh probably my favorite part is when emo first tweeted out the availability of this website which i think he was instrumental in putting together um he said hey come check out we're doing dot net six completely in the open and you can come see us changing our minds so i wanna wanna make sure that it's uh it's clear to everybody that just like you and all of your projects and things that you work on on a regular basis there is some level of adjustment and change in pivoting that happens over the course of time especially on something that's going to uh you know drive through november of 2021. so what is dot net maui uh it is the evolution of xamarin forms for sure and so there's there's typically two reactions that i hear to that there's the reaction from those who didn't feel xamarin forms met their requirements and that's a disappointment to them and then there's those who love using xamarin forms and it does everything that they needed to do and they're being very successful with it and there's well what does that mean for me what am i going to get from this the the good news is we're taking all of our all the things we've learned uh you know we call them learnings right all the things we've learned from six plus years of xamarin forms being in the marketplace talking to customers talking to developers seeing what you're doing um you know really empathizing with the challenges you have and then also looking at the competitive landscape and saying what's going on around us and how do we move things into the future to make sure that you as dot-net developers continue to be productive but also competitive in your space you know i mean we want to make sure that you that you feel like you uh have a job tomorrow you know so those are all things that are on our mind about this and are informing the choices that we're making as we make this transition to net maui so we're extending from mobile to embracing more desktop and we'll talk about how we're doing that and what that's going to look like and then you know really what are those scenarios that uh will help us uh to drive performance and extensibility so extensibility really comes into talking about uh platform renderers how do we more easily customize our ui how do we more easily get to uh platform-specific apis i mean the core value promise of xamarin has always been it's native it's native ui native apis and you have access to them but traditionally in xamarin forms we've heard custom renders are a pain effects are a pain how can we do this more easily so we've got some great work in here that's going to drive towards that and performance is always a concern uh pretty much anywhere you do software development at all you're always wanting to eke out more performance but we have some very specific things that we're trying to achieve during.net 6 and we're super excited to see how quick the performance looks like and the benchmarks have been on.net 5 because we having the shared common bcl base class libraries we inherit all that so we're really excited about that so just another recap before i get into uh the actual stand up of what we've been working on maui does stand for multi-platform app ui we like our acronyms or our isn't that what it's called acronym yeah so you know it's one of those things you get your mouth starts moving and then your brain's like wait was that the right thing um but this is all about integrating xamarin into.net and it's both from a technical standpoint but it's also bringing it into the repository showing that it's unified sharing as much as we possibly can across all of.net and making sure that we have common experiences for the developer for the tooling that is supported and all that sort of thing um in in some of the common experiences that you're going to start to be able to use more of uh the cli command line um to do.net new.netrun.net build which may be something you use a lot may be something you never need to use because visual studio takes care of all those things for you but it's going to become available by virtue of the fact that we now share uh all the builds stuff and all the bc all the things that the rest of.net has been using and then visual studio code again kind of comes along for the ride because you have the command line um you'll be able to do more things in visual studio code today or tomorrow than you can today but i want to make clear the caveat that visual studio full ide is the place where all the functionality resides so things like intellisense are not promised to come to visual studio code for xaml right so i want to set that clear expectation that while you can use it is it going to be the best experience for you uh during the previews of dot net six or even when we launched net six probably not because we have to budget you know where do we put things and being able to run your net apps with net six uh on android ios mac os and windows that's that's a p0 right that's can't can't not do that um so that's going to be a much higher priority than some of these these things that are currently experimental they're available to you by virtue of the way the technology works um but it's not an experience that we're going to be polishing up and delivering and supporting so i want to be very clear about that where that applies and then support for modern app models like blazer like comment comment being a c-sharp ui model view update inspired way of building mobile applications and desktop applications by virtue of maui um but i do want to make clear oh it bounces in look at that that those those are also experimental blazer itself is not experimental but the blazer mobile bindings is experimental um but i will tell you that we are working very closely with the engineers working on both of those experiments and they are informing a lot of the core decisions that we're making in dot net maui so that we're very future forward looking right so that as you know things like swift ui flutter uh jetpack compose and all these other things in the competitive ecosystem start to gain some traction and you're interested in them we we're in a position where we have a framework that can adapt to those things well i'm in full presenter mode here aren't i let me uh let me just skip past not skip but let me cover a few more things um so what are our goals these are the things that we're striving for are we going to hit every single one of them 100 percent more than likely not um but that doesn't mean we're not aggressively trying to do all of these things so 12 months of quality xamarin releases uh if you're on the xamarin forums train and you're using xamarin forms five you're using xamarin ios and xamarin.android we continue to service those all the way through the release of dot net uh six and then there's also going to be an additional 12 months of support through net 7 for sure so in terms of quality we've reorganized the project uh which i'll touch on in a second standardized class and naming structure which is um some of that benefits more uh contributors but also when you're looking to figure out what the heck is happening under the hood um it should be easier for you to find things performance again is always something we're striving for um in particular you know i know that cold starts an easy one to point at today you can achieve a 100 millisecond startup and even faster if you really architect your application extremely aggressively but that may not deliver the best user experience for your application we talk to plenty of customers who say i don't really care what the app startup is because my customer starts the app and as long as it's up and going within a few seconds they're going to use it throughout the rest of the day i'm more interested in the performance of screen to screen transitions server and back when we're making updates you know field service apps those sorts of things so we want to make sure that we're cognizant of the whole spectrum of where performance is most important to you the customers design we're going to be delivering themes in the box so that you can more easily see good design but also uh you know you can just use those base themes without customizing everything and what you get out of the box today is the bare bones stuff you get from the native platforms and they're not consistent with each other and they're often not very uh pleasing so we're going to add strong theme support uh using our existing themes and styling that's already uh part of the product we'll improve it visual state manager will be improved um and that'll help create a much better design out of the box and then of course the platforms so this is up on the dotnet maui github everybody should go check that out for sure and so this kind of gives you a side-by-side comparison of what you get out of the box with xamarin forms five and where we're going with net maui so these are the things that we're striving for i saw a comment earlier in the chat you know really excited about the past possibility of linux support that's absolutely on our radar but i want to be very clear that in our our plans what we are going to be supporting at launch linux is not part of that so uh it is something that could be evolved from the gdk sharp back end that xamarin forums has today but somebody's going to need to step up and and kind of help contribute and bring that over the line so that it will run with net six um of course mac os and we're going to talk about mac catalyst and how that fits into the picture here in just a bit uh samsung is on board and working towards uh support for tizen so that's really exciting and i i don't have details but i've i've heard they they are continuing to invest and i'm excited that they have some uh they'll have some cool announcements coming up i believe i don't have details don't ask me um windows of course so win ui three i'll show you a little bit of that in just a bit um and then wpf in terms of where that support is because it ran on.net core before and i believe it even runs on.net five today uh john i'm looking at you are you going to nod at me you don't know and sorry i'm trying to answer a question in the chat about multi-window and stuff so yeah we're going to look at multi-window stuff in the application life cycle um yeah so so wpf is is still considered to be community supported um of course within microsoft we are we're continuing to bring it forward and make it useful in.net 6 all up but in terms of the net maui windows implementations what is there for wpf today continues to be community supported that that could change but right now that's where things stand uh we'll talk about renders in a bit the app models i kind of already touched on with the blazer and the comet stuff single project is coming for net maui and i'll talk a bit more about what those experiences look like to help you be more productive john just mentioned multi-window multi-targeting is super cool and so we're excited to see that be better supported in uh in the ids we're already using it uh thanks to claire novotny's um uh oh sdk extras right um which is awesome thank you claire yeah um pixel drawing controls so making it easier for you to use native graphics drawing apis to render your ui as opposed to only relying on third party things like skia sharp although third party kind of feels like us at this moment because we support ski sharp we do the bindings but we're going to be doing more there to to build really performant uis as well as help you achieve that consistency you need across platforms sdk style is a big thing for us for the project system because it really gives us a much stronger stable consistent experience within the ides certainly helps the ide teams only have to worry about one project system instead of the multitude of them that they have to today because of the way our project system works slightly different um so that i mentioned this makes their project so much nicer to look at that source file well that's funny because when i asked jonathan peppers hey how would you like me to kind of describe sdk style with dotnet6 he says show them the cs brodge it's so small i was like maybe maybe that would be sexy i don't know but it's true i guess it's really kind of what you see when you look at your xamarin.forms.net standard library project right it's pretty bare yeah yeah similar um all right so what have we been doing for the last 10 months so probably the biggest thing we have been doing is the xamarin forms 5 stabilization we are looking at a late december target so we're weeks away we're in december we're in the zone red zone and we're in red zone offense for sure so we want to get that across the line why is that in a net maui uh stand up because first of all it's the team same team um and secondly because all that stabilization and work that we're doing there benefits maui and sets a much more stable starting point for us when we start releasing previews of maui we're cleaning up the repository making it more organized you can see this if you compare the 5.0 branch on github to the main handler branch which is actually where the day-to-day maui work is happening within xamarin forms to start moving things over building out the renderer or the the handlers and i love it because if you it doesn't this slide doesn't do it justice you got to go click around through the folders and get a sense of just how much better organized it was because you know xamarin forms grew organically over six years it started out closed source and you know when things don't start open source you're kind of like that doesn't matter i don't really care who else sees this but now that now that we are fully open source it's nice to take a fresh look at this and give it give it a nice new haircut if you will so we have been uh doing quite a bit of work on porting renderers to the mapper handler architecture we have actually done several uh live streams um virtual events over the past you know like two months where several of our engineers have done presentations showing this work off james clancy showed this work off so you can find some presentations up on the youtube that show you some of this but let me give you kind of the high level of what this is achieving right now in xamarin forums you have a button renderer for example and that might be your your ios platform your android platform whatever you want to imagine it actually knows about and holds a reference to xamarin forms things the xamarin forms button is in there and so there's a real tight coupling that happens you can't just take that platform powerful button renderer and start using it apart from xamarin forms and when we started doing the experiments with comet with blazer mobile bindings it became more clear that there was real benefit in extracting these things apart so that now that button renderer is really a button handler implements an interface i button almost sounds like good programming and then from there the the forms-ness of it the mbvm or mvu or blazer or however those platform controls are going to be used is really where the maui button the comment button i made up names for these buttons these aren't things that exist but they could and they probably will so now for example fabulous if you if you've ever used fabulous f sharp to do xamarin forms things you know you always have to type view dot you know maybe they'll continue to use that kind of that pattern but i think that this opens up new opportunities maybe that's a horrible example and tim will yell at me about that later but it opens up more possibilities and kind of removes the impediment that the xamarin forms framework provides now the other important thing to know about this is i originally called this the slim renderer architecture because in my mind one of the biggest benefits is is that we're removing all the wrapping views so there's there's an immediate performance benefit to doing that your ui tree is going to be much flatter now we kind of started that prototyped it on the most important controls on android when we introduced fast renderers back in like was it xamarin forms three or something um and on that note i will mention that uh over the weekend i upgraded the netflix clone on javier's repo from xamarin forms 3.1 with packages.config to xamarin forms 5 with package ref updated all my nougats and there were a lot of nougats in there no problems i had no problems and i did it both on mac and on windows i was really happy about that so hey things are getting better so that's a bit about the architecture john is there anything you would add about uh how i'm describing the handlers i'm not getting into like extension methods and things like that yeah i know i think this is a good overview i mean i think that the focus on you know why we're doing it um is really important so good job yeah again this is very future forward-looking it benefits us today for all the reasons that i've already mentioned but uh you know again comet can can move much faster now uh fabulous could move faster i didn't even list a blazer on there did i that's a huge mess yeah blabber plays their mobile bindings i think there was a question even about it liz dameron as it uh once upon a time was mangled um so what can you track on this like what is in the repo today what's in progress what can you use so if you go up to the dot net maui wiki you'll see a status page we've just revamped it to kind of thin it down and make it a bit more clear where the work is happening the previous status page was property by property and that still exists and we may bring that back but it seemed much more useful to show it this way so you can see the views the layouts i think i have the layouts over here yeah um so you know some things are in progress the red or not red the yellow exclamation triangle uh indicates things that have not yet been been worked on but stack layout is in is in progress uh usable for the most part today doesn't do everything the stack layout does in xamarin forms um but then you know back here on the on the controls a lot of these things have existing pr's and we just need to get past xamarin forms five so we can start merging merging a lot of these things something that i didn't include in the slides here but i should mention is as we're making these changes you know you think about this architecture back here if you have custom renderers you may be freaking out you may be wondering well wait a second are my custom renderers going to work is this like a huge breaking change to bringing my xamarin forms code to net maui no we are very cognizant of making sure that we can as easily as possible bring xamarin forms apps forward to net maui the choice so your renderers will work by virtue of an adapter that we are we've prototyped and we've got working and i say we i mean shane give credit where credit's due right so um so so your renderers will continue to work now however you're still using a render with the old architecture and so there's going to be no performance gain for you until you adopt the new handler for that need i would suggest and this is one thing i actually did when i was working on zappy yesterday as i was able to ditch two renderers going from xamarin forms like 4.2 to um to 5.0 pre-four or whatever it is that we have out there right now or maybe it's a nightly i tend to ride the nightly train i like to like to get my hands dirty but um yeah you may be able to do out do without the renderers that are in your code base which would be even better right because that's less code you have to maintain so i wanted to point that out so there will be a path forward for those that have custom renderers third-party libraries we've got a whole uh sync that we're working with third-party maintainers which i'll talk about the at the very end here that you can get involved with to make sure that the whole ecosystem really makes this transition as smoothly as possible control registrar john you want to explain what the control registrar is yeah so by default we've we've always historically done like this a scanning of every assembly that we load that might have custom handlers in it or renders and handlers are coming so that that's a really rather inefficient way to do it and so we are moving to a different system where you will have the opportunity to register the controls that you want to or the handlers that you want to for each particular type um another thing that we're sort of looking at is like how can we use um some new things like source code generation and things like that to maybe make this a little bit easier to do still so this one's a really big kind of easy one for a performance win and it's uh you know not too much of a pain to actually switch your your code to be using either right right and i think with a lot of these performance related things in some cases we're winning just a few milliseconds but in other cases it may be more substantial so i just want to kind of set that expectation that uh that's the game that we're kind of in right now in terms of uh performance as we're winning milliseconds everywhere that we can um so this is kind of what the code looks like to register your handlers you've got a little method there and you can say hey when we're calling for a xamarin forms label go ahead and give me a label handler that could be your system.maui.label which uh i'll make the caveat that that may or may not be the actual namespace we're deferring the namespace decision for a while so that it's not impeding our ability to do the handler work um and then of course if you want to have different handlers for android versus everything else you can do that here as well and so you could imagine also mixing and matching new interface based handlers with old style adapted renderers and so all that stuff really uh becomes under your full control and it becomes extremely explicit what you are using um however you don't have to be explicit and you can just take the defaults that come with you as well so not not trying to show this as this is work you're going to have to do it's work you can do if you want that tight level of control so this kind of plays into uh the next topic which is what's happening with single project single project is our effort to really simplify where your focus is so right now in xamarin uh all up you know you've got an ios project an android project a uwp project and then you've got maybe a mac os project if you're using the community stuff and then you've got your your shared library um and you want to be spending the majority of your work in that.net standard library first of all it's faster for hot reload reasons it's super fast you just need to recompile the shared stuff and ship it over anytime you touch those platform head projects you're paying a bigger compile price um the other reason is that uh the way in which ios android etc implement similar things images fonts um version configurations and things like that localization can be different and then you have to learn multiple ways to do those things so with single project what we're saying is we're going to bring as many of those common things as we possibly can to the single project to that one single place where you're focused and where you're most productive and we're going to take care of those things for you so we have i call this a build task spike is that really accurate for the font and betting stuff that happens in the build tasks it's a it's a little bit of a mix so you know while everyone uh down south of the border was off eating turkey and mashed potatoes and stuffing and all that good stuff and i was up here you know but we were especially isolated i want to point that out yeah well you know so i was trying to uh uh wallow in my sorrows um because our thanksgiving in canada happened in october you know when when you're supposed to have thanksgiving um i did spend some time with some source generators and some ms build tasks and came up with just a little bit of a prototype of what this would look like and so it mixes a little bit of everything to achieve this but basically you can stick your font in a folder uh and then it just magically gets embedded in your app kind of using what we have in forms already today uh for the embedded fonts that work across the platforms it adds that assembly tag for you right yeah yeah so so it's building on the work that we have in there today that was brought brought to us by james clancy which is awesome um but uh we also you also have done some work on the the image side of things because you have the resizetizer package out there which i use in all of my projects i actually built my own templates uh and it's just baked into it yeah so resizetizer i think has been you know reasonably helpful to a number of people um one of the things that you can go there today and see a branch that's called app icons which i've been working on here and there um which which hopefully will be ready soon but that'll this will probably be sort of the foundation of how we bring image uh resizing and shared image handling to the single project world including icons i love it yeah please including app icons i mean mfractor helps but you know let's just let's just pick that in it's almost done i just have a little bit left on ios that's not working yet that's almost like i was actually i was just in the themes.net website making sure that all of our themes are in the right place because some of our themes got moved into the inner dev loop one but i did make sure that the which is exciting because uh c sharp hot reload is a proposed theme on there everybody more than proposed it's happening it's happening it's happening uh but i did just make sure we recreated one specifically for shared resources not code not resources and then in that comment app icon it totally makes um and i've been doing it for since what was it ios 2 was the first one we could build apps for that wasn't a web browser yeah and then now we have like adaptive icons on android and everything so like you don't have to deal with that just let the tools do it right you know what i saw recently um i was using the github app on my ipad and it offered me the option to change my app icon yeah totally cool you can and you can absolutely do that in xamarin today i didn't go mess around with it but someone needs to write a blog on that i'm looking at you chat somebody needs to go write a blog um so microsoft extensions so this is uh both a host builder thing if you are an asp.net developer then this is a pattern that is probably familiar to you it creates kind of that that guard rail to say hey here's where you set up your services here's where you register your handlers and things like that so a startup class is typical in when you're using this and your host builder calls on that to say what am i doing and then you set up your handlers you can also do things like this say hey i am using forms here's my app this kind of bootstraps everything for you nice and easy what is my life cycle if you want to for example this is probably so i did a survey during monkey fest usa and then the subsequent days and we got about 166 responses real quick actually i think most of the responses came within that day and probably the top not probably er the second most exciting thing that people were looking forward to in.net maui was consistent common life cycle events like where do i put my stuff now what this is doing here is this is saying okay you've got your your life cycle handler all up but you can also have specific life cycle handlers for android and ios and i think correct if i'm wrong john but kind of the the reason to do this on a platform by platform uh is like when you're integrating something like say i don't know app center or ray gun or something like that or shiny like well you've got but you've got you shiny down there and i think shiny china takes care of that for you well shiny would use this right yeah yeah and this is really an opportunity for um i mean we're still really prototyping and spiking on exactly how this will work will work and will look so let's kind of you know make sure that we're clear about that but um i think the intent here is yeah to give you a a way that isn't um basically overriding all of the different things like your app delegate and main activity and hopefully those things can kind of just be a little bit more in the background and not something that you're going into um so if you want to register your own lifecycle handlers for a platform because you need maybe the on uh resume lifecycle method in in your android app in particular right um you can get access to that and then yeah these other uh plugins can take the opportunity to expose their own extension methods uh like a use shiny extension method that would then be able to register itself for those um so no more like readme that pops up when you install a plug-in and oh go add this code to this place and that code to this place and let's just get rid of that and make everything a lot more intelligent yeah and again you know bringing bringing it back to what single project is all about give me a single place to focus where i'm most productive don't make me go to four different places um so what is happening for the underlying bits of dot net that allow you to run on android and ios formerly referred to as xamarin android and xamarin.ios it's all.net at this point and so if you want to go see the latest bits there's a bit of install instructions you can stitch things together yourself uh and and from all from that repository rolf on the ios team pepper's on the android team i think tim has been in there um others have been in there john's been in there uh lots of people lots of people the mono team has been involved we just had a sync this morning across all of our dot net six partners and uh yeah so you can actually go there today and see this um there's some notable things you can't do john do you wanna list notable things you can't do um yeah so in in this repo you would need to go install some very early preview bits first of all and then mostly right now things are going to work for you from the command line um there is uh i i have to go look at the page admittedly i think we might have instructions on um how to do some of the visual studio things that you i'm not sure when the build of bs windows is available that will let you do those uh but definitely look for that as we approach you know an early preview of net six support to be able to do some of these scenarios you know things like hot restart for ios and xaml hot reload and stuff like that will be a little bit later on in the preview process so so who would you encourage what kind of developer would you encourage to go look at this stuff um i think this is really interesting for plug-in and library authors for one um to i think go like test out the multi-targeting support and things like that if you're comfortable with command line you know you can do a net run and give us the the device that you want to launch on and you should be able to get your app running there too so um i think you know if you're looking for for iterative development with like xaml hot reload and stuff like that this isn't quite there yet for you but if you want to just do some initial uh testing to see how things run i mean i think there's a value in there for a lot of people to check it out okay cool uh whoo you recognize this don't you so it looks familiar this is your app uh so this is a xamarin well i'll let you i'll let you tell what this is i'm sure i mean it's a it's a little app i make to help do swimming pool chemical calculations but the fun thing on this is that it's actually running on catalyst this is a xamarin forms app everything you see here is xamarin forms um i don't really even have i think any custom renderers anymore i've gotten rid of them like you suggested david i did that while you were we were talking right um so this is all forms it's running on catalyst and you can see that you know there's first of all the video is recorded over like a vnc connection so it looks a little slow but it's not actually um it's just the recording and most of this just works and i think the interesting thing here is this is our plan to bring forms to mac os uh which is through catalyst and and you can see that we haven't i haven't touched forms in this example this is forms like 4.8 stable uh and definitely there's some stuff we have to work on here to to polish things up but we're we're pretty close just for free so um i think that's the exciting part yeah very cool i do mention frank down here at the bottom because this uh this was really brought brought to you made possible by what he did and pr to mono and shared bits so if you're not supporting following frank you need to go do that not just because he's the one that i go see when i go to seattle every time but uh because we're gonna we gotta make sure our community is well supported um so also a quick update on win ui three as they continue to work through their pre-releases to get to a ga on the timeline that i don't have so you need to check check with the win ui team um but essentially uh you can see the branch here i know that this demo is uh very bare bones but this is our this is our sample running on win ui 3 desktop of course you have the option of win ui 3 uwp when ui 3 desktop etc and yeah it works so not a whole lot of effort for us thankfully there are certainly some things that shane has needed to work through as he's gotten this up and going um but it hosts all the things that you need to be able to do on uwp uh and and desktop i think you can really tell this is a win ui 3 desktop because of the app bar at the top right it's that old style yeah as opposed to the uwp um yeah so that's cool we're excited to see that coming together and we'll continue to be checking in on releases and iterating on that as we have time it's not really on our schedule for like the front loaded part of engineering work that we're doing but we have some some partner responsibilities to make sure that we get we get that going um a couple of time timeline related things there's probably been plenty of timeline when can i get this what can i use those sorts of questions so uh from q4 which is now through q1 2021 in that time frame these are the the main things that we're working on um i but i do mention here that the name space change to system.maui has been deferred so you're going to continue to see the xamarin forms namespace and we will make a decision on that and execute any of whatever that decision is later in time we don't need to make that decision today but we do need to make it obviously eventually because library maintainers and and other partners will need to know what what are we doing with the name space but really the majority of the work is going to be on the handlers making sure that the containers layouts and views are all ported over and working most of the other stuff like animations and interaction things behaviors effects all those sorts of things for the most part all that stuff just continues to work there's no engineering work to be done on those um you know but but things like image source uh has been done so you'll see that that work is mostly done needs to be merged i guess but removing obsolete if you haven't been tracking the work in xamarin forms 5 and haven't looked at our release notes please do that because there are some obsoletes in there as well master detail page is now referred to as flyout page um that's perhaps and related types so that's perhaps one that might impact you but it's a super easy change um and if you are using any obsolete apis you're going to want to not be using them host builder as i mentioned is in progress removing data pages and removing themes i'm referring to the nougat packages that were previewed i want to say at xamarin of all three like it was a it was a stage a while ago yeah um and they have they've just literally never changed since that moment um and nobody uh ought to be using them everything that you need to be able to do in there you can do in xamarin forms otherwise so you don't need these extra packages you can do all your theming all your styling um you you probably aren't using data pages so if you are using it of course my email will be up at the end and you can talk to me about that um no more reflection on the startup registry we mentioned that uh what are we looking towards after that and i think this is a good time to reiterate what i said earlier um you know there are it's a long timeline and so there will be pivots there will be adjustments um these things will change um in terms of priority they're not going we're not changing necessarily in terms of what we're delivering we believe we're all still going to deliver these things but um the cross-platform life cycle as i mentioned is very exciting for folks if you have used xamarin forms and you've been frustrated that a life cycle event is called before another life cycle event on one platform versus another platform that's the kind of consistency you're asking for here and we're going to work to provide an option for you moving and expand which is a layout option that really only applies to stack layout and it doesn't belong on horizontal and vertical layout options so that's a refactoring there width and height interestingly in the survey responses that i mentioned people aren't terribly excited about us changing names of things inside of xamarin forms api the width request height request was pretty low on the list similarly that's the kind of feedback we hear when people ask us if we're going to unify the name of our controls on say win ui three are we going to change from label to text block or something like that um we we continue to not hear that that's a valuable thing for us to do and i think that just as an aside typically when i hear someone asking for it um yes it's for consistency but also there there tends to be this uh assumption that you automatically get a visual designer like blend automatically works and that is not the case so um if anybody can help me dispel that myth that would be awesome um housekeeping mac os catalyst you saw that that work is in progress and i had i think i shared a link uh in the uh url list that maddie shared out so matty maybe if you can share that again it is a pr from rolf on the ios team that shows you the work towards uh catalyst super early i thought his comment towards the end of the morning this morning was really good somebody asked what's there left to do and he said everything i'm like probably easier to say that than to list off the things that's kind of where we really are at with it i mean you saw that john's got something working there that was a pre-built app that he was able to adapt and get to run as a catalyst app using what frank did but i am working on a holiday hacks list of things that you could goof around with when you go on holiday break and i am hoping that i will be able to share with you a catalyst holiday hack so i'm hoping um john's like first i've heard of it i've got a document from rolf that shows me how to do it i'm trying to build mine with that holiday hack already as we're talking so we'll we'll see all right gotcha um so for those of you who are super eager and excited about that um that is kind of where things stand now in terms of catalyst and support and can you use it uh without.net600.net maui etc we are not looking to support catalyst as a scenario before.net 6. previewsfor.net 6 i don't believe the timelines have been made public yet but you can expect to start seeing installable things that you'll have to stitch together yourself in early 2021 and that is when you'll have the first installable things of net maui as well we'll provide guides that tell you how to do it what you can do today for a preview of net maui you would need to clone the repo start building and running it on top of the.net 6 things that you saw from from that samples repo that would get you closer to what the expectation is my recommendation kind of like how i asked john what's the recommendation for the kind of developer that would be most interested in doing that my recommendation is wait until early 2021. you're just going to super frustrate yourself if you try to do anything meaningful with the bits that you're going to pull down today so i hope that i'm being as completely clear transparent and saving you from grief during your holiday hackathons so i will give you some cool stuff uh that you can work on i wish i could read is it it looks like korean in the chat somebody translate that um could be a bot it could be a person so when ui three i mentioned okay i mentioned the timelines uh we are on track for a november 2021 ga we are absolutely going to be there we are going to ship we are going to hit as many of the goals and targets as we absolutely can right now i wouldn't say that any of the things that we are committing to are at risk i'm looking at john he's not flinching cool yeah none too i'm not crying yet so you're not crying yeah yeah uh so you know um you can imagine when you'll start to be seeing things from us based on what i've shared so far uh and i want to kind of end with this as far as my last slide maddie so i don't know if there are questions that you've been tracking but we're getting ready to answer some of the questions um but uh in terms of library maintainers whether it's uh frameworks like prism and mbvm cross uh fresh nvvm i did not list tiny mdvm here but i probably maybe i should have um shiny uh but you know if you have a library that you're maintaining for your company um or for the community at large and you want to be involved in these sinks just shoot me an email we do these we host these over teams these are not live stream type meetings um so that we can have you know i don't know not not that i don't have open and honest conversations everywhere but um you know not everybody is super comfortable with the live streaming things so we want to make sure that we give you a space where you can come meet with us and ask questions our engineers do join these calls um and so we can go deep dive on any of the architectural bits the build stuff dotnet six stuff all that sort of thing i will mention for those who have asked you know what about sync fusion what about telerik what about infogistics what about you know insert vendor crepe city component one etc um we have spoken to several of them um what i understand is they're all on board uh so far with uh making sure that their stuff works so i i'm confident about that i'm certainly looking forward to that and making sure that we enable the whole ecosystem to make this transition to.net sex with with the xamarin um okay i'm done with slides i'm gonna stop sharing my my screen my goodness thank goodness no my my goodness we had a ton of questions come in by the way um as the sun by the way you can see it's now 2 p.m we started at 1 and the sun is fully in my face so if i turn um big question we had a lot of what is the migration story dave what's going on what's what happens to me when maui comes out right so so you have choices obviously you cannot migrate i mean that's that's let's just be honest that's a choice you can you can leave your code where it is i think the good news is what we saw from the survey responses is that i think it was 90 plus percent said they're gonna migrate within the first six months um if not before ga i thought that was pretty sweet um and you know i checked big company names not just uh random independent developers like everybody so uh that's really cool um so what the migration is going to look like for you is first of all you need to migrate your cs proj to use cs to use sdk style right your solution is going to need to change so there is a tool try convert which you probably hear us talk about frequently we're going to look at that as the starting point to enable you to have an automated way to make that first step so once you've done that you need to of course update your projects to be using the the.net 6 stuff and maybe that's something that our tri-convert can can do for you maybe it's something you would need to do yourself um and then at that point uh you are updating your dependencies you are building and seeing what breaks if the namespaces are different and what we ship from what you have then you'll need to make the namespace change we will also look at what we can do to make that as easy and convenient for you as possible if that's a change we can just do for you then we'll do it it's not those who have been in the xamarin ecosystem a long time might remember when we had xamarin was it unified or universal john do you remember unified ios um where we went from i guess it was the monotouch uh namespace and the monodroid namespace to uh what what basically apple and google ship yeah ios only but it was still a shift yeah okay so uh so you may remember that we provided tooling for that at the time uh we know the pain involved uh for the most part many of us remember that so we'll make sure that we can do that as smoothly as possible um of course again you know making sure that the ecosystem moves forward is important at this point because um you know moving your code forward you own that code you can do that but if you have a strong dependency on a third-party library and they aren't making the shift or they haven't provided a net six version of that library then you're you're in you're just waiting or you're looking to replace it right so so we'll be working over the next uh we're less than a year now to make sure that we have as many of those things available as possible and where possible uh providing adapters or shims for those things but that's a hard we're not committing that we're actually going to be able to like shim everything in um so my hope and expectation depending on the complexity of your projects is you can be up and going within days it's not it's not rewrites it's not a rewrite that's probably the biggest message that i should probably say over and over and over again you're not rewriting your application your xamarin forms app you're not rewriting it in particular xamarin.android and xamarin.ios if you're not using the forms apis and you're not moving to net maui your android and ios projects will need to make that same jump to sdk style and net 6 and dependencies but you'll have less api changes to make you'll have to adjust to whatever apple ships because they they define those those apis so we will provide guides we will provide tooling the combination of the two will help you be successful and we will be working throughout 2021 as soon as we start shipping things you know the first the first thing you're going to want to do is start greenfield right go test out net maui install the new bits see what a new app looks like see if the performance is what you are looking for you know etc etc before you start try to migrate migrate should not be the first thing that anybody tries to do but it will be one of the first things that we start trying to do once we have something shipping and we will be working with key customers or any really to to work through those things and to learn and to make it as easy as possible all right sweet next uh we just had a question come in as someone who's never worked with xamarin but interested now would it be better to wait for maui to come out before jumping into the tutorials uh that's a great question i typically say don't wait use xamarin forms today because your developer experience you'll get used to hot reload you'll get used to the api the control tool set that is around you get used to the ecosystem and that your migration should be again pretty straightforward if not instructive it will not be hopefully painful for you so you can be useful and beneficial with it today and then you'll just gain all the benefits of net six and dot net maui as we ship um you know it's probably gonna be preview two maybe preview three of dot net six before you really feel like you have a solid.net maui that you can be super productive with so you know you could be looking at q2 2021 q3 2021 to be like okay now i'm all in it also depends on when you're launching your app but i would say xamarin forms today it's pretty awesome interestingly and it's encouraging to me a lot of the comments we've received uh during this.net maui transition has been hey i've been using xamarin forms all along xamarin form 5 is really good like i almost wonder why you're doing this but there are reasons all the reasons all right last question lots of questions about um uh will the xamarin community toolkit be supported will visual material be supported will the tooling i have today in xamarin forms be supported hopefully this is an easy answer yes yes the answer is yes the the one caveat there is when it comes to the visual material components um we are rethinking how we deliver those so right now it is a a binding library to what google ships for ios and of course you use the native bits on android um but we do some additional work inside of our renderers to unify that experience because that's it's kind of the whole promise of the material design right is it's consistent between android and ios and unfortunately that's not actually what google ships and so we have to do additional work on top of that and at some point you start wondering to yourself um why are we doing all this work if xamarin forms api or net maui api we're capable of the styling that is necessary to achieve material design then doesn't everybody win you know every customer that has to implement their own design system everybody wins as opposed to relying upon another dependency like the material library that requires bindings and john knows better than most that bindings can be a real hassle to maintain and then somebody's always going to be a little upset when you're a version behind on alpha number three from google mm-hmm because everything stays in alpha until forever it does and and and you know what we're finding is on the ios side is the the releases are fast and the changes are frequent and the breaks are even more frequent so it's not a super sustainable model for anyone right so i think what we are looking at for this is to really improve the entire styling vsm animation shadows corners borders all that within net maui so that you can use visual material but not have to depend on those native platform libraries so you'll get you'll get the power and then some but yeah everything else and tooling you know matty you know better than most tooling is all on board it's all it's getting better and better the c-sharp hot reload come in the sdk styles can be a nice uh improvement quality of life improvement using the same build system we hear all the time you know man i really wish that we had a more stable performant pipeline tooling tooling tooling tooling which i never even used the word tooling until i joined microsoft and like everybody talks about tooling oh yeah yep uh yeah how reload and how restart support i think john mentioned this it'll come along we have to get the bits and then we can make sure our stuff works with the bits just like all of you will be doing uh and then uh what was the other thing i was thinking of oh single project we had a question about in the chat um we talked about single project a lot because it's very exciting so there's a lot of uh pieces to single project the first part of it is the sdk style projects in the modern project system and then on top of that we have to make sure that you can share all your stuff and when its resources share the code so when it comes to like the manifests and all that and then there's also the actual mechanics of making one single project that can multi-target and all the tooling doesn't break with that so we're looking at it piece by piece and those are in the themesof.net website um you can kind of see how we split it out which is really into first priority is resourcing and then code and then actually having a single project um because we talked to people and it turns out multi-targeting isn't as important as having to put your app icon in one place so we're gonna make sure we get that stuff first um it's very exciting so that's it we're like 15 minutes over pretty good stand up this recording will be on uh the net youtube and the xamarin developers youtube and the twitch for a little bit um and feel free to tweet us all of our handles are up here john thank you so much for joining us i know we have taken you now 15 minutes into the bi-weekly xamarin forms team catch-up so they're they're a good group they'll they'll have it all managed i'm just there for you know the jokes yeah uh stay good thank you as always everyone enjoy your holidays enjoy the end of 2020 and we will see you in 2021 cool thanks everybody bye [Music] [Music] [Music] you
Info
Channel: Xamarin Developers
Views: 29,840
Rating: undefined out of 5
Keywords:
Id: 5bK2ICHtMxo
Channel Id: undefined
Length: 75min 55sec (4555 seconds)
Published: Thu Dec 03 2020
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.