[Music] hello and welcome to our session on developing apps for windows i'm thomas fennell and i'm a pm on the windows developer platform team working on project reunion among other things and i'm here today with andrew clinic who's also also from the windows developer platform team and most importantly is actually my boss how are you andrew i'm just peachy thomas thank you are you sure nope now folks before we jump into everything we've got to talk about today i wanted to tease you a bit to stick around till the end if you can put up with us we've got something i think you're really going to want to see something you haven't seen before it's great for developers now andrew today there are numerous different app models for creating desktop windows apps and not all of them work on all versions of windows and additionally folks who build to the lowest common denominator usually thought of as win32 they often miss out on the latest and greatest ui technologies you know that's a great question thomas uh in in terms of when we think about project reunion why we're doing it we're doing it to help with those with exactly those problems and the reason why we're helping those problems is we got a lot of feedback from developers because we're developing project reunion out in the open and project reunion's sole goal is to help unify all those technologies so that developers don't have to make a choice in what technologies to use in order to build great windows apps and that's really what it's all about building great windows apps you know that's that's exciting for sure um i notice you're wearing a shirt today i know pretty cool huh are you sure what about okay what about yours i mean i think mine just has a certain something that's exciting for sure andrew so we have a number of other topics to talk about today and a number of cool demos i thought we'd start with the key themes that we're going to work on today reach simplicity speed and future proofing can you talk a bit more about those i can thomas thank you um reach and simplicity is actually really what reunion is focusing on and from a reach perspective we really want to ensure that when you build your applications you're not leaving any customers behind because after all you're building app for your customers so reunion is actually decoupled from the operating system so that you can ship a windows application built on reunion on any version of windows 10 and that's you know really key and the other key part of that is to ensure that you can ship it as fast as possible you don't have to wait for your users to get to the latest version of windows just take the latest project reunion framework package and off you go okay and so for desktop technologies like win32 wpf win forms etc like i think what you're saying is we're sort of doubling down on those but then what about for when you want to modernize your app with something new what do you do there what's our north star yeah so reunion is all about ensuring that you can utilize all the tech you're using so if you're a wpf developer now i know you're a wim forms lover so even you thomas can use project reunion and that and that was the key part of it is that you can do that but we want to learn from our developer feedback and build these northstar technologies to ensure that you can we can really drive the next generation of windows applications so when you buy from a um a ui perspective when ui 3 currently reunion and msax which is which we believe is the is the ultimate way to deploy your application there are two north star techs now of course you don't have to use them we think you should you know that i'm a big msx fan so um we would like you to use those but project reunion is available to you no matter what tech you use so you're telling me that you're listening to your customers that's right and as you know as you know as an employee in my team how much i listen do you though occasionally so project reunion does sound promising and i understand we have a couple demos that we could show about that so let's take a look okay let's take a look at how project reunion is going to allow me to build some really great applications that will run on all versions of windows 10 so i don't leave any customers behind now in this demo i'm gonna take a look i'm actually running on 1809 which is the oldest version of windows 10 that is currently in support so we support from 1809 onwards for a project reunion so let's take a look at the application so we have a standard solution and i'm going to look at my ebook reader project so let's take a look actually at the project file first of all and you notice it's a you know it's a dotnet app i'm producing a win xe and targeting.net 5 in this case um but i'm also targeting x86 xt4 no big surprise but on 64. project reunion allows it makes it a lot easier for you to target arm64 which is going to be key for future windows devices and if you look at this um i have a reference to the project reunion nougat package is 0.5 and i also have the p invoke one there to make it easier for me to actually get access to my win32 um apis because project reunion allows me to call all apis that are available on windows so let's take a look at the code behind the app so standard start of the app i'd call initialize component set the title but i'm going to call load icon now the astute if you're probably thinking well hold on i could just set the icon anyway well in reunion 0.5 we don't actually enable you to set the icon for the application but no worries because now i can call all of the win32 apis so i have my load icon so let's take a look you notice now i'm getting an 8 win so i get full h win for my application i don't have to use cool window if you're familiar with that um and then i'm just going to use the standard user 32 load image and i'm going to get the icon and here's my icon of some books and these are standard windows icons and just going to set that icon um and then i'm just going to load the image the 48 by 48 and then to set them set the icon i'm going to use good old send message with a wm set icon and with a handle to that to that file so the great thing here is you can utilize all the code that you use today and all the the plethora of um code that's out there from middleware and third parties that run on win32 are going to run just great in your reunion application so let's take a look at the app so reading an ebook reader with my nice icon there now when it loads up i am actually making this a little bit artificial i'm going to click on the settings page now obviously you wouldn't do this for a normal user but the reason i do this is when i click select folder what i actually want to show is i'm getting a standard common file dialog here is that this isn't file picker you're getting full access to all the apis so i'm going to select the ebooks collection select folder and then do apply changes and when i apply those changes it's going to load those ebooks from that folder and show them using some of the great controls that are in win ui so i get a nice animation and when i click on the wizard of oz then what i'm actually using here is webview2 webview2 is a standard control that's part of windui that is based that uses the same engine the edge uses the new chromium-based edge and the great thing about this is you don't have to ship chromium with your application in order to use it because you just take a reference to the system webview2 and if it's not there we'll install it for you but if it is then you'll just take advantage of it it's great for disk space great for your download size too and the really cool thing is because it's a shared instance the memory usage of uh chromium which is frankly not the most memory efficient out there is dramatically reduced and as i go through here you notice i can scroll in scroll out i get full control over this and because ebooks are an html based thing i don't have to do that i can take advantage of it easily um so the great thing about this is that of course then i can use all the standard controls in win ui that makes things like this with acrylic with you know this menu system really easy to do actually quite difficult to use it in wpf so you can build really engaging applications really quickly and ship whenever you want to because you can target this as soon as reunion ships because you don't have to worry about what version of windows a user is using so you can target all your users with project reunion cool really no that's all you've got cool i think the team's working well to ensure though that customers can make the most of their existing investments while going beyond and truly modernizing their apps yeah you know in that in that demo which was pretty cool i thought um you really saw a lot of the interaction between win32 dot net 5 win ui 3 webview 2 and even the bit of p invoke and h-wind and you know that really shows how you can really mix all the technologies that you have today and the technology you want to move to tomorrow so you can build this great app so did you write that code um i wrote some of it you noticed that my uh colleague miguel actually wrote most of it in fact most of the cool stuff was from miguel but you noticed the older code the p invoke h wind i'm pretty proud of that so yeah i wrote some cool so there was something in there i noticed that you probably don't want to talk about and i need to bring it up the packaging project why thank you for that excellent question thomas that really makes me feel at ease the packaging project you know we get a lot of feedback about the packaging project um strangely not from the packaging project fan group because there isn't one no um the feedback we got as packaging project is great if you really want to do complex msax applications but oftentimes you don't want to do that um you just want to be able to build your application and not have to worry about that so the new project reunion project system which we'll be going into preview pretty soon um you'll just be able to hear f5 which is how you expect to build your applications you don't have to worry about doing any of that because we build the msax in the background for you so you know we wanted to make it seamless for you to be able to do that and quick and now of course i'm a big fan of msax as thomas knows i bore him quite often yes you are an msix salesman right um but the key thing here is that we want you to use msx but you don't have to use msx all this available if you set up the xc msi you can even deploy from floppy disk if you want and use project reunion okay i mean i'm going to miss the packaging project i can tell that's very sincere yeah so then you know going beyond that and building awesome windows apps with project reunion and win ui three tell us about how we've been partnering with our friends in the dot-net team yeah you know working together is has become so important and that's actually one of the most exciting things about microsoft right now is really you know working together to solve customer problems we're working with the.net team and
specifically the maui team um to work really closely together with win ui 3. you saw when ui3 there does some really cool stuff but we know that people want to be able to use those skills and utilize those skills in other places so we're working really closely with the.net maui team and what they've done is they've integrated.net maui and they're using
windui 3 and project reunion to deliver amazing windows apps as well as those apps on the other operating systems now the best way to see this is really just to show a demo and luckily they've built a demo for us so you know it won't be quite as exciting as mine but it's pretty good this time we don't have to listen to you that's right so there's always a bonus excellent right let's take a look this year dotnet 6 introduces net maui for building beautiful native multi-platform apps for mobile and desktop using a single project and hot reload here we have a beautiful weather app builtwith.net maui it's backed by a minimal.net api showing us the current weather hourly and daily forecast catalog of widgets and this ui is completely shared across android ios mac os and of course windows now when running on windows we get full advantage of wind ui 3 and project reunion and native platform features just light up for us like app actions off of the app icon in the taskbar system tray integration where we can place the dot net bot and if i click on the bot i get native local notifications right there running on windows with wind ui three these awesome features easily light up when developing with dot net maui so that looked great and represented a lot of feedback from our developer community they wanted to see you know the two technology stacks when ui and maui working together and speaking of the community there's other kinds of top-level community feedback that we've been working on lately let's talk a little bit about those yeah and i think a couple of things we really want to discuss here is that future proofing is our final theme really for today and and in the future really working clearly with the community is super important and they've been very clear with us what they what things they would like to do now first one is arm64 support which is so super important and the second one is the the notification support on windows could really do with some help and they're not really happy with the way it's gone so far thomas so who's the pm for notifications on windows we do get a lot of feedback you're right from places like github and and an angry community i'm gonna push you on the question who is the pm for the notifications um i believe that's niku i believe it's actually your responsibility i see yeah i see okay well you're right uh there is actually a lot of feedback there um as a matter of fact push notification is the second most requested feature yeah in project which is actually really cool today um and you know i think instead of me just talking about that why don't we show people what we can do with push notifications going forward i think that would be an excellent idea i'm glad that niko's actually done something here let's take a look okay so previously in our ebook reader you saw we only had the ability to choose local books from the disk and we're thinking about now adding the ability to store books in a shared library with others in the cloud but instead of polling that cloud repository on a regular basis to see if there's new books which is inefficient and wasteful for battery why not just get notified if a new book is available these kind of scenarios are kind of exactly why i'm showing you this website push notifications are perfect for this we thought it'd be important to show that in this demo because from the community's perspective this is actually the number two most asked for thing in project reunion so we're giving you a little sneak peek of what's coming in project reunion 1.0
and if you wanted to learn more about it you could go check this issue out and learn more about our proposal for push notifications going forward but let's get to the demo part so what i've got is i have the console app that i'm going to use here already installed but wait a console app like why would we use a console app well a couple reasons a lot of developers do exactly this they build a simple console app to learn how something works and to see if it's feasible to add it to their app and it also shows that project reunion really is for any app type i mean what's more win32 than a humble console app so the app itself is here you notice i've launched it and what it did is it it gave me a uri now i know it's not going to win any design awards but that's actually a really important part of what this app does because a uri is how you communicate with your application whenever you're trying to send a push notification so all i've got to do is grab this uri out of this console app it's serving its purpose for this i'm just going to copy it i'm going to go over here to postman and i'm going to be able to send a notification to it now in the real world you'd use some server code to do this but since i'm sort of playing around and learning how all this works i'm just going to use postman because it's the quickest and easiest thing for the job so i can just throw my url in here i've already built up sort of a quick raw notification you can see it's not very complicated it's just a blob for all intents and purposes and when i post it to this uri you'll notice that the console app instantly has received that and has told me hey i received this from the foreground because the app was already running and being able to intercept a push notification when your app is in the foreground is really important because the app is hopefully or potentially something the user is using a lot and so you don't want to miss notifications when that's happening but better yet what if the app wasn't running what if i actually close this app all together i'm going to send the same raw payload except well i don't know why don't we add like background in here just so we can prove it and send the same payload and the app's not running and you'll notice that i'm actually able to activate the application and show that i received the content from the background you can even see there's background i added right there because this is simulating what happens when you want to do some work in the background for your application maybe for example that list of books got updated i want to update the local database for the customer and so i send a push notification down that says hey go ahead and sync with the server and get the latest set of books this shows you that background is also possible with something as simple as a console app in this case i just chose to activate the app to show it now next what if we wanted to do some visual notifications as well as part of this app and show that path so i've built a simple toast here that would say hey you've got a new book available it's just using the same xml payload that we use whenever we do any kind of notification from the service when i go to send it this one is a toast type it's actually got to have the url in it first let's try that again and what do you know i get a nice visual notification that something's changed on the service and when i click it i can activate the application so we've got all the scenarios covered here we've got background covered we've got foreground covered and we've even got toast notifications and activations they're working and so now with all of that i can see how all this works and i can feel confident in adding this to my win32 ebook reader that's using project reunion so we've seen some cool demos today andrew and really we need to talk a little bit about the roadmap yes but before that i gotta say thomas that was a pretty great demo i really liked the push for quality you had on that cool excellent so you want to know about roadmap that's really what you would like to when can we get this stuff so praise doesn't matter okay noted um so when we think about project reunion um the roadmap we want to be very clear about our roadmap and in fact there's actually a much more detailed roadmap available on our github um so three major releases this year 0.5 we actually launched back in march 29th and we've been actually doing some servicing on that as well and and this is one of the key things for us to remember is these are ga releases these are releases which we're actually supporting so we've had a number of bugs shocking i know that we had a bug um but we fixed those and i think we're on 0.5.6 i think right now as of as of right now and that's available today a 0.8 is
coming real soon preview coming late may we should be shipping sometime in june and this is all building up to 1.0 uh towards the end of the year and that is really where we we see the culmination of our first release um and there's a lot more tech that you're seeing in preview right now they'll actually ship in 1.0 three releases the best you could do this year you know i think three is a pretty decent number honestly you you're not impressed i can tell it's okay so i know there's a lot more that you know we have to offer here um and it's too much to really cover in a single session so tell us a little bit about how people can follow up and learn more andrew you know that that's actually a really great segue thank you thomas so i think aka ms microsoft project reunion ms project reunion is really the key because on that they'll take you to our github and that will that on there we have a roadmap we have all our issues and we really encourage you to provide feedback on that um and that because that's really important and we actually really take advantage of that inside of our team we're looking that constantly to make sure that we're delivering the right features and also aka ms wac project reunion whack push because you could join the private beta for push notifications that we have available for project reunion as well it's all about you right it is about me now thank you andrew i just wanted to be able to have the last word for once please we appreciate everyone's time really the last word you know that was going to work i thought we actually had a speakerphone here but you've been hiding something from me thomas what is this thing so this andrew is what i said that people should stick around to see this is actually a low-cost rm64 desktop development device that we've been partnering with qualcomm on that's built on snapdragon it's a snapdragon desktop developer kit that is so cool uh you know all honesty that is super cool i can't touch it i don't touch it okay all right but i can admire it from afar so the great thing about this i could just stick that on my desk and pretend to code against it as a manager but for real developers they could actually get stuff done that's right and it's going to be available in the microsoft store this summer and in additional regions uh soon after that and for more info you can see the qualcomm developer network website that's great it's such a cute little developer box sorry touch it don't touch it i realize i'm just admiring awesome thanks for that's coming soon yeah very soon excellent that was easy look at that it's even got an english accent it sounds so much better you
2021-05-29