S06E04 1h 07mSeason 6

Episode Summary
In this episode of The Modern .NET Show, Peter Bull, a seasoned developer, and Jamie Taylor, the show’s host, delve into the intricacies of the Windows App SDK. Through insightful discussions and valuable quotes, they shed light on the capabilities and potential of this powerful tool for modern Windows application development.
The Windows App SDK, formerly known as Project Reunion, aims to bring together the best of both worlds: the traditional Win32 framework and the Universal Windows Platform (UWP). Peter Bull explains that Project Reunion evolved into the Windows App SDK, enabling developers to leverage the latest features and capabilities of the Windows platform.
Writing to Learn and Sharing Knowledge: Both Bull and Taylor emphasize the value of writing tutorials and blog posts as a means to solidify one’s understanding of a subject. By transforming knowledge into their own words, developers can teach others and establish their mastery of a topic. Bull’s experience with writing tutorials on the Windows App SDK has not only aided his own learning journey but has also benefited the wider developer community.
Targeting the Windows platform with the Windows App SDK offers numerous benefits, especially for those aiming to create rich Windows applications. However, developers should consider their specific requirements when deciding between the Windows App SDK and other frameworks like .NET MAUI. The Windows App SDK excels in providing seamless integration with Windows 11 and extensive coverage of Windows features, while .NET MAUI offers cross-platform capabilities.
Episode Transcription
Welcome to The Modern .NET Show! Formerly known as The .NET Core Podcast, we are the go-to podcast for all .NET developers worldwide and I am your host Jamie “GaProgMan” Taylor.
In this episode, I spoke with Peter Bull about the Windows App SDK and the hidden bonuses of learning in the open via blogging, podcasting, and creating tutorials. We both also talk about how we feel that Windows as a compilation target has been lost in the cross-platform shuffle recently:
Yeah, exactly. And I think that’s the simple fact that gets missed with… there’s a lot of talk about the cross platform stuff, but just not enough about just write a Windows app if that’s where you’re going.
And as I say, you get a lot of the benefits of hooking into the really cool features of Windows 11 that you have there that you can leverage. You can leverage that in part or in whole. It’s really up to you. And it’s still Modern .NET. You can still use the latest version of .NET with Windows App SDK, like the older platforms that might be more limited, you benefit from all of that extra functionality that you get. So when the next version of .NET comes out, that’s going to be supported and so on.
So you’re not having to compromise with .NET, unlike with UWP, which is still around, that is stuck where it is. It doesn’t benefit from the latest version of .NET. So that’s a good migration. If you’ve got a UWP or Universal Windows platform app, you can migrate that to Windows App SDK and then you’re going to immediately be able to use the latest version of .NET, which is something you can’t do if you stick with it.
Whether you’re a developer looking to enhance your Windows application development skills or simply interested in the latest advancements in Windows development, this podcast episode provides valuable insights and perspectives.
So let’s sit back, open up a terminal, type in dotnet new podcast and we’ll dive into the core of Modern .NET.
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
So Peter, I was wondering could you perhaps give us a bit of an introduction to yourself? Maybe an elevator pitch of the kind of work you do and all the stuff you’re interested in in the .NET and maybe the podcasting space? Because my 30 seconds of research tells me you have a podcast yourself as well.
Peter
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
I think the first couple of actual recorded episodes, they were planned out on my old MacBook Air. It was the 2011 MacBook Air that I was using all the way up until 2021. I think. They were all planned out on there. But if I had an idea whilst I was walking around, I’d literally take my phone out, open up the voice memo app, and just say, “right, okay, and we’re going to do this, we’re going to do that, we’re going to do that.” If it’s a good enough app to record music with. Because I know a couple of pro musicians who use the voice memo app for recording ideas when they’re walking about. Because those of us who are Terry Pratchett fans know that inspiration can literally attack you at any point because it’s a random element in the universe. So if it’s good enough for them, it’s going to be good enough for what I’ve got to say.
Peter
Jamie
So let’s talk a little bit about your dev origin story. I always like to sort of hear everyone’s dev origin stories because it’s really interesting to hear all the different ways that we all got into developing technology and how we got into computers and stuff. I’m not asking for let’s go back to when Peter was six or whatever and got an Amstrad, but if you were to give me sort of the Cliff Notes, because you said yourself you’ve been playing around with different kind of technology for like, 30 plus years, and you’ve been doing it professionally for 20. So there’s a story there.
Peter
But yeah, so my professional and also personal journeys kind of followed .NET along. I actually used .NET from the start. I remember getting the Alpha version of Visual Studio .NET and installing that. So I was pretty an early adopter and I thought, “this is pretty cool.” So I just started to learn that. I actually wrote a tutorial to teach myself show to do it. So I wrote my very first tutorial about Visual Studio .NET on that one. I had written tutorials previously, but I also learned that one, and it was just like, “oh, this is cool, and I can also share it with everyone else.” So that’s basically where my journey started.
It was Windows, forms. So if anyone’s heard of or use Windows forms. That’s what I started with. It’s actually still around. You can use it in modern .NET, so it might sound like it’s an old technology, but you can actually still use it. And then my next phase was like WPF. So that was like Windows Presentation Foundation, which, again, you can still use. So it kind of feels like what I used 20 years ago or so is actually back in again. So that’s quite cool. So you can basically use those technologies today. So I took that kind of XAML journey. So XAML is what WPF used.
And Microsoft had this great idea to bring XAML to the web, so, you know, you’ve got things like Blazor and stuff. These days, they thought, let’s put XAML in the web. So that was with something called Silverlight. So if anyone knows Silverlight, they’ll know exactly what I’m talking about. And that kind of morphed into the Windows Phone platform. So if anyone was a Windows Phone fan, I certainly was. There wasn’t many of us, I’m afraid, but I kind of got into that’s where I started to get into it properly, like as a developer, basically writing my own Windows Phone apps. I actually wrote a reasonably popular one, which was quite rare for that platform: If anyone knows of the Zoom Music Player from back in the day, probably seen it in Guardians of the Galaxy. If not, they had a really great social service, but there was a piece of it that they didn’t really bring to the phone. I didn’t actually know this, I just did it as an app. I thought, “this will be fun.” And they never brought it to the phone, so I brought the Social, the Zoom Social, as they called it, to the phone. And it got like over 300,000 downloads over its lifespan, which is pretty good.
There was people downloading it right up to when the service was turned off. That’s like how to delist it, because people were still downloading it. I was like, “it doesn’t work anymore. Sorry, it’s not my fault.” So that was kind of cool. And through that, I was able to get a job doing a Windows Phone app as well. So that was when it was still a big deal at the time. So that was quite nice. I kind of was able to port my skills up the way.
And then there was like, Windows 8 when that came out. You were able to use those same kind of skills to build they called them Metro apps or modern apps. That was that first idea where you could write an app for, like, the phone or for the desktop, and then they evolved out a little bit more and you could do both. And that kind of led on to the universal Windows platform. So that’s what you do, Windows 10 apps. And that was really broad. You could write apps for desktop, for mobile, and for tablet, and you could do Xbox and HoloLens as well. So that was really cool. I was like, wow, you can just write an app and run it on anything, even a Raspberry Pi. I ran one of mine on that and it was just like, this is so cool.
Jamie
Peter
So that’s basically what I sort of do at the moment. So I’ve write tutorials on my website for the Windows app. SDK. So I’ve written about 50 of the and I’ve got another 50 to go at the end of the year. So that not only helps me learn it, but I can also share it with everyone else.
Jamie
So, thinking back to a slightly earlier part of my career, I actually worked as a teacher for a little while, and one of the things that we would tell the students quite often was, “if you can take the knowledge, transform it into your own words and teach someone else, it means you have to have learnt it.”
Peter
Jamie
Peter
But yeah, that’s how you learn. It allowed me to play around with things I wouldn’t have probably done otherwise, and then it ended up later that I would need to know that I was like, oh, I’ve done that already. I wrote a tutorial about it. So it really was useful to actually learn it myself. And you learn bits of the framework. You might not necessarily like encryption and stuff, I might not use that and the it would come up later that you have to use that stuff for something. So, yeah, I found that really useful and that’s what made me write even more because then I knew that it would come in handy even just to me, let alone anyone else.
Jamie
When I’ve recommended it to other people in the past for like if not publicly blogging, just writing down the stuff that you’re learning, it produces like a learning journal because unless you use it straight away and you use it in a bunch of different places straight away, you’re likely going to forget something between 90… something yeah, somewhere as low as about 60 and somewhere as high as about 90% of what you learn on a daily basis because our brains pull in so much information and most of it is just jettisoned because we don’t need it. And so keeping logs of stuff that you’ve learned publicly or privately is a wonderful way to do it. And learning in public and in the open as well is a wonderful, wonderful way to do it, because you’re giving back to that community. And then it also means if it’s in public, on the web, and you’re happy with that, then when you get stuck, you can Google and go, “oh, wait, I solved this problem six months ago.”
Peter
And funny, it’s happened where I’ve seen how my skills have evolved. I did something because it’s actually like the 25th anniversary of my original website when I launched it and I posted some of the original tutorials. We’re talking about pre .NET here, and I was looking at them thinking, “I wouldn’t have written it that way now,” even using the same technologies I did back at the time because I’ve learned so much, but I was still willing to share it because I thought it’d be interesting. But there was something that I wrote and thought, “yeah, I definitely wrote that in a weird way back then because I didn’t know any better.”
But I was sharing, like you say, I was learning in the open, so it’d be quite nice if somebody spots that and says, yeah, you could have written that better. I was like, yeah, I know, but at the time that’s what I knew and that’s how I was learning. And the resources pre .NET were very rare, there was a lot of code examples, fair enough, but you didn’t have things like stack overflow and all that kind of stuff. So really if you’re doing something wrong, it was very hard to be put in the right direction. That’s why I like to sort of continuously evolve my tutorials and sort of improve upon it. Like I’ve got the same game that I’ve ported multiple times like that, few of them the same. And I’ve made improvements every time I’ve done that. So you can actually follow my learning journey if you go back far enough and see how they were originally.
Jamie
Yeah, I’ve got ultimate respect for anyone who’s done any kind of learning in the open because it’s not easy to do and it’s really kind of a brave thing to do. So it’s brave from a personal perspective because you’re kind of having to say to yourself, “well, if I get it wrong, someone’s going to criticize me.” Well, actually no one criticizes you right, because they’re learning at the same time. But also it’s really brave because it’s like I’m putting my own learning out there and I’m showing where maybe the gaps in my knowledge are and you don’t have to know it all. That’s the crazy thing. You don’t have to know all to write about it.
And so I’ve got an apprentice at the moment, and I’m telling my apprentice, look, I don’t care if we do it publicly and put it on a WordPress site or on the Web or whatever, but what I would like for you to do by the time we finish this apprenticeship is for you to write up a couple of pages of notes on what we’ve done and what you’ve learned. Right? Because in six months time, you’re not going to remember it. And being able to look back on it, it will really help you.
Peter
Jamie
I think you’ve hit the nail on the head there: find a project that you’re interested in, because I meet so many people online, in person, whatever, where they’re like, “I want to learn how to use this technology and I’m going to build an app, but I’m not interested in the app that I’m building.” And I said to them, “well, the problem there is you’re going to lose interest in learning because you’re not doing something that you want to do.” It would be like saying, “I want to be the best footballer in the world, but I hate football. Well, you’re not going to stick with it, are you?”
Peter
The Definition of Done
In the depths of the code where the wild bugs reside,
A programmer steps in a trusted guide.
With his eyes keen as an eagle and heart full of pride,
there’s no nasty bug he’ll let slide.
He slogs through the lines where secrets may hide,
scanning for errors….
Announcer
The Definition of Done and Other Tall Tales now available on Amazon. Get your hands on this literary masterpiece either as a beautiful physical book or conveniently for your kindle. Don’t miss out on this unique intersection of tech and text.
Terms and conditions apply. Your home may be at risk if you don’t keep those repositories up to date. If any bugs, literal or digital, arise from using this book, it’s not on us. Ensure there is no merging without testing. Some of these poems are absolutely hilarious, others may not be - humour is subjective. If you don’t find them funny, maybe check yourself before you wreck yourself. By purchasing this book, you hand over your soul.
Your future now awaits, either as a Java developer or a business analyst. Reproduction steps found within might not resemble live or dev situations. If you’re confused, so are we. And if by any wild chance this book causes harm or any injuries, we won’t judge. But maybe give the good folks at the Darwin Awards a shout.
And just remember it’s all fun and games until someone forgets to comment their code.
Jamie
Peter
So I had this crazy idea to do a digital coffee table book. You know those coffee table books you get, but instead of a real one, it was just going to be a digital one you could download. And it was about the Zune. So I had all these resources that I had gained back in the day and they were just sitting on my computer and I just thought one day I thought, I know what I’ll do. And I wasn’t really too ofay with Photoshop. I thought, well, let’s see what I can do. So I basically spent a few weeks basically getting better at Photoshop and the put this book together, basically. It was really well received, actually. Everyone sort of thought it was a nice bit of a it was in 2019, so it was like just before Guardians of the Galaxy kind of made it a bit more famous. But it was nice to see the community just go, “this is great.”
And I only did it to sort of see if I could learn these skills, which I then I could apply to my programming work. You know, just basically add another string to my bow, basically, because I’d never done anything like that. Don’t consider myself a designer. I still don’t, I suppose. But it was just nice to sort of add another skill that would be useful for my other side of my work. So, yeah, it doesn’t even have to be something developer related. It might be putting together a talk or a presentation. It could be anything. So that’s kind of what I did there. Just added another thing that I probably wouldn’t have done otherwise. And from that it gave me some other skills that I could then apply back to my work.
Jamie
I’m also putting together like the notes that I’ve made through that year or whatever to make them public. I have to go through it and sanitize it just a little bit. So I don’t DOX myself too much. But yeah, those are all available too, or they will be available too. And you’ll be amazed that the things that you can learn outside of development, outside of technology, outside of programming that apply directly to programming, development and technology.
There’s a book, the Life Changing. Was it the life changing method of tidying up? The life changing act of tidying up. Basically the Marie Kondo, The KonMari Method by Marie Kondo. She just talks about just tidy up after yourself, just put things away and pay your socks like this and have a draw for this and have a draw for that. But she also talks about you’re having respect for those items, of those things that you have those objects. And putting the in their place shows them the respect that they have. Well, guess what? That’s clean code.
Peter
Jamie
Peter
Jamie
And all these ideas percolate and get better because we’re sharing the and it’s transferable skills is what it is. And that’s what they try to teach in education. They don’t do a great deal of actually calling it transferable skills, but in education, we talk about transferable skills, of being able to apply knowledge from one domain to another.
Peter
I mean, all those emoji, I never could have done. Anything like that. Right. There’s no way I’m being able to draw those. I can draw a circle, that’s about it. But these emoji which are so good, I was like, right, they’re really, really good and they’re open source, let’s do something with them. So someone out there could have that kind of skill that a developer could take advantage of. I think the games only look as good as they do because of those. The code might be fine, but I can’t make it look good. So that’s where those other skill sets can come into play. That’s where you can sort of contribute something. Even if it’s not code, it could be something that a developer could use as well.
Jamie
We’ve mentioned it a few times and you yourself have mentioned it in our last example as well. We are going to talk about the Windows App SDK, but we’re not going to go into a huge amount of detail. What I’d really like for people listening, we’ll get a link directly to it in the show notes. But you’ve done an episode on Windows App SDK for your show, haven’t you?
Peter
Jamie
But yeah, like I said at the beginning of the episode, I feel like there’s this big push for, “wow, we can finally do .NET in a supported by Microsoft Way on a non Windows platform. Let’s move everything to the non Windows platform.” And I don’t feel like there’s a huge business reason as to what. Like moving things to the web I get right, some things work really well if you move them to the web. But if you’re communicating with a USB device that’s plugged into your local machine, creating a website that talks over the over HTTP to a device plugged into your laptop, not necessarily the best way to do it, and especially if we mentioned it earlier on, right? Change the details ever so slightly. If everyone in your company is running Windows hardware and you build an app for macOS, how are you going to test it? Right.
Peter
I mean, fair enough, you might want to write a cross platform application that might make sense to you. So something like .NET MAUI or even Blazor, if you want to just keep it in the Web. But there’s a lot to be said about Windows development. Yeah, as you say, you might want to speak to a piece of hardware. You might not be able to pull it off with something like WebAssembly. So yeah, to be able to use like the native Windows stuff, you want to make your application look like a modern Windows application. You want it to have all the cool effects. You want it to have the acrylic effects or the micro effects where it has that kind of glassy look. Or you want to be able to interact with the widgets. You want to have a widget for your application because there’s widgets in Windows 11. You can also have those and have a Windows App SDK application interact with those. So it gives you a lot more of the Windows platform lights up. If you’re using the Windows App SDK.
And if your target is Windows, then it makes sense to choose the Windows App SDK to build your application with.
Jamie
Peter
It sometimes just makes sense to target Windows. Yeah, there are reasons to target other platforms, but if you want a rich Windows app that only runs on Windows, it makes sense to write in something that targets the broadest set of Windows that you can. Those other ones have to make compromises because you can’t do everything on every platform. You may be able to do platform specific code, but it gets difficult and complicated to do that. You just want to build something, get it working, distribute it in Windows, run on Windows, then that’s where the Windows App SDK comes in, basically.
Jamie
Peter
I mean, basically if you like, you can use Windows App SDK as a stepping stone so you can get your Windows applications there first getting using that modernized stuff. And then you can bring it to .NET MAUI and bring those specific features to that particular target and then have a much broader set of targets on iOS or Android. So you could still do that. It sort of gives you that choice where I want to be still fully Windows, but I want to kind of go in that direction, but I don’t want to go all the way to .NET MAUI. That’s where it can sort of come in and it’s always being updated, there’s always new features being added because unlike the older stuff, they were tied to operating system updates. So if there was something they added to Windows, in order for the SDKs to support that, they’d have to wait for a Windows update. So you want to add something new, you’d have to have a Windows update with Windows app SDK, it’s completely decoupled so you don’t have to wait for an operating system update to gain any new features that the other applications might be using. So that makes it a lot easier. You’re going to benefit from the same functionality that’s available that Microsoft can use in your own applications.
Jamie
Peter
And as I say, you get a lot of the benefits of hooking into the really cool features of Windows 11 that you have there that you can leverage. You can leverage that in part or in whole. It’s really up to you. And it’s still Modern .NET. You can still use the latest version of .NET with Windows App SDK, like the older platforms that might be more limited, you benefit from all of that extra functionality that you get. So when the next version of .NET comes out, that’s going to be supported and so on.
So you’re not having to compromise with .NET, unlike with UWP, which is still around, that is stuck where it is. It doesn’t benefit from the latest version of .NET. So that’s a good migration. If you’ve got a UWP or Universal Windows platform app, you can migrate that to Windows App SDK and then you’re going to immediately be able to use the latest version of .NET, which is something you can’t do if you stick with it.
Jamie
Peter
So if you want to get started so if you’ve got Visual Studio already installed or you’re installing it, there’s basically the workload for that is the desktop environment. There’s the .NET desktop environment workload. And then under there, there’s an option for the Windows App SDK C# template. So that might not necessarily tick by default. So if you just tick that either in a new installation or a modified installation, then you’ll get the template. So when you create a new project, you’ll have a blank application that you can add. They’ll all be described as being Win UI three in desktop because Win UI is what basically Windows App SDK uses itself. So people might have heard of Win UI. Basically, Windows App SDK allows you to leverage that. WinUI is also used in .NET MAUI and things like the Uno platform as well. So it’s kind of that when you’re targeting Windows, win UI is what it’s actually using. And then you can basically create an application that way. And then you can also have it set up so it can be distributed on the Microsoft Store. So if you’ve seen that, you can have apps on the Microsoft Store, of course, but you can also have a standalone installer, so it supports MSIX.
So you can basically have a standalone installation experience. You can just stick down a USB stick, basically give it to someone, and they can install it on their machine that way. So you’ve kind of got the old school method, if you like, or the modern Store method. It’s entirely up to you. You can pick whichever way you want to distribute your app that you want, wherever makes sense for your application.
Jamie
Peter
So you basically just get it’s almost like the old MSI, but a bit more updated. So you can either have your application be framework dependent, so that way the machine has to have .NET installed, but the installer can help take care of that for you. Or you can have a self contained executable so that’s supported in Windows App SDK, so you might be familiar with that with the newer Windows forms. And that you can have a self contained executable that you can run your application on, that basically bakes in .NET as well as your application together. So the Windows App SDK supports that as well. But you can get an installer that puts in the Store and you don’t have to worry about it. Just let the Windows Store take care of the distribution of your application and the updates as well.
So that tends to be the easiest way. If you’re doing Windows App SDK, you’re probably doing Microsoft Store distribution because it’s the easiest way and you get the benefit of the updates and you don’t have to have a site to download it or anything like that. So that makes it a lot easier and easier for the people to discover your application as well.
Jamie
Let’s say you and I work together on the world’s greatest no, it’s not the world’s greatest Windows App SDK app, it’s a tribute. Right? So we create the tribute to the Windows App SDK app, right? And we want to deploy it. And how do I’m assuming perhaps there’ll be like a GitHub Actions, perhaps - and you may not know this - but there might be a GitHub Actions template to generate something and I’m guessing you probably have to sign it with a key. But then I can give that to the Microsoft Store and it will handle distribution for me, right?
Peter
So you can either have a Store app already set up that you want to associate your project with, or you’re just creating a brand new one. And then, yes, you can supply a certificate. So you can do a self signed one for just testing. So if you’re just doing it locally, you can just do a self signed certificate. And that’ll work great for local testing and stuff. But you can also get a certificate that will then sign your app so when it’s for installation. But yeah, when you go through the Windows Store process, a lot of that’s taken care of, basically for you. So the app will be submitted and then they’ll be able to install it, and that makes things a lot easier for you.
You can also, for apps, you can target multiple processor types, so you can target Arm. So a lot of newer devices tend to be Arm now. So you can actually have what’s called an app bundle, where your application will have effectively a Win32 version, an Arm version that you can do that. So even though you’re targeting just Windows, you can target Windows on Arm or target Windows on Win32 as well. So you have some flexibility with the targeting there.
A Request To You All
If you’re enjoying this show, would you mind sharing it with a colleague? Check your podcatcher for a link to show notes, which has an embedded player within it and a transcription and all that stuff, and share that link with them. I’d really appreciate it if you could indeed share the show.
But if you’d like other ways to support it, you could:
- Leave a rating or review on your podcatcher of choice
- Head over to dotnetcore.show/review for ways to do that
- Consider buying the show a coffee
- The BuyMeACoffee link is available on each episode’s show notes page
- This is a one-off financial support option
- Become a patron
- This is a monthly subscription-based financial support option
- And a link to that is included on each episode’s show notes page as well
I would love it if you would share the show with a friend or colleague or leave a rating or review. The other options are completely up to you, and are not required at all to continue enjoying the show.
Anyway, let’s get back to it.
Jamie
So what you’re saying is I can boot into Windows, fire up my Visual Studio, write the “this is not the greatest Windows SDK app in the world, this is just a tribute” Windows SDK app. On my Windows 64 bit machine, I can right click Publish and say, I want to publish for Windows 64 bit and for Windows Arm, presumably Arm 64, but whatever?
Peter
Jamie
Peter
There’s a couple of limitations. Like Windows Store apps, they can’t run it. Elevators, they can’t run as admin. So if your application has a specific reason to run as administrator, you can’t do it through the Microsoft Store. As far as I know. You could probably do it in a different way. There’s about to be a way around that. But there are a couple of limitations. The different distribution models have less and less limitations.
You can actually just do your own installer. I know we were talking about that before. If you want to do that there are any limitations at all, you can do whatever you want. So if you, for whatever reason, have a specific case where you have to install something, say the Store doesn’t allow, then you could do that in your own installation. So you’ve got the freedom to choose. You’re not just, right, you have to do this. You can package your application whichever way you want. The Store is like the sort of default one, if you think about it, but because you can use all of different ways of distributing an app in Windows, you can take advantage of whichever one makes sense for you, or you can use different ones depending on how you want to distribute it.
Jamie
Peter
Jamie
Peter
Jamie
Peter
Jamie
So let’s say I do want to build “this is not the greatest Windows App SDK app in the world, it is just a tribute” Windows App SDK app - I’m going to try and get as much mileage out of that stuff as I can. I want to build that. What can I build with it? Right, is there a limit to Windows forms you will locked to you can have a form and you can drag some controls in. You can have buttons and radio buttons and toggles and text boxes and stuff like that. Is there a reduced set of controls I can use or is there like pretty much everything you can see on Windows you can do? Where does it sit?
Peter
There’s not every single control that’s in Windows, but there’s a lot that are added. There’s also like community toolkits as well, so there’s a lot of extra functionality that gets added that you can use. And there’s also stuff that Microsoft themselves have developed and shared. The new file explorer. There’s one in Preview and that has like the pizza icon on it, I think to show there’s the Preview one and that one’s got some WinUI stuff in it. So Microsoft have open source some of the controls. There’s like a gallery control which is basically to show the photos view and that you can use that. You’ll be able to use that in your Windows App SDK application.
So there are more things using it in Windows and if they need anything specific that gets added so that’s a good sign. So if there’s something that’s missing it’ll probably get added. I know there’s something called Ink Canvas from UWP that’s a big ask for developers. That’s a particular one I wanted to see added and that should hopefully get added at some point in the future.
So if there is something missing it’ll probably get added. But most of the main stuff is there. So if you’re writing a pretty standard application or even beyond that, you’ll probably not hit any limitations. But if you do there might be a third party control or something you can use. If it’s a WinUI 3 control. It’ll work. So WinUI 3 is basically what it uses. So if someone’s got a control that supports that community toolkit or anything like that, then you can use it. So the only limitations are going to be with specific controls. But even the you can probably go third party and find something that delivers that functionality.
Jamie
So I guess there’s an elephant in the room and I’m going to ask a question about it and I have a feeling that the answer will be it depends. Now folks who are listening in, peter knows the question I’m going to ask him. I’m not going to be nasty and dropping the question he doesn’t know about.
So okay, I’ve got a green filled application, right? And I’m being asked maybe I’m the CTO or whatever, or I’m the project manager or I’m the decision maker for this project; and I’m being asked, “should we use Windows App SDK or should we use .NET MAUI? We’re only going to target Windows anyway. Is there any benefit in doing .NET MAUI?” Right? What’s my stock answer to that? I guess it depends. But what would you say if you were in that position?
Peter
But the Windows App SDK is just going to give you a lot more easier coverage of the Windows operating system itself, the features that it supports. With .NET MAUI you’re going to get those benefits of going cross platform, but there’s going to be some stuff that is going to be a little bit more difficult to do. Say you wanted to do a Windows 11 widget integration that’s going to be a bit more difficult to pull off. Whereas that same Windows App SDK that’s quite straightforward to integrate.
So yeah, if you want to basically hook into those features of Windows, you’re betting on Windows, you’re wanting to run your application on Windows 11. You want to make your application look like a Windows 11 app, as close as you want to make it look really nice when you use all the effects, all those nice glassy effects, that’s where Windows App SDK would make sense. .NET MAUI is going to give you some of that, but it’s going to compromise a little bit and you’re going to have to work a little harder to get something to work.
But as we said before, you can go with Windows App SDK and the you could go to .NET MAUI because then you’ve made the jump. You’re using the latest version of .NET. You’re using XAML. You might need to tweak it because it’s not exactly the same as what .NET MAUI uses but it’ll get you that way. So yeah, it depends one but I think for a Windows app, Windows App SDK just makes sense.
Microsoft just launched an app recently. It was the Dev Home experience that they announced that Microsoft build, that’s a Windows App SDK application. So that gives you an idea of what you can use there. They did some clever stuff. They’ve actually got widgets in the application itself. They actually built a widget dashboard into the application and it uses exactly the same widgets as the operating system does. So that was a pretty cool use case there. That was a bit more unusual, but that was quite a high profile application.
They didn’t mention Windows App SDK by name, but it definitely is. That was the first thing I did when they announced it is go to GitHub, check the repo and see what the csproj said. It’s like, “right, what are they using?” Because that’s usually the guideline. “What are Microsoft using? Is it a .NET MAUI app? I don’t know.”
So I went and had a look and that was the first thing I checked and I was pleased to see that it was indeed a Windows App SDK application. So Microsoft are producing applications with it and also were others. Apple, I think, their new Apple Podcast application. That’s a Windows app SDK application. So there are a lot of companies out there who are choosing if they’re producing Windows native applications, then they should use Windows App SDK. It’s like almost like a no brainer because with Winforms you’re not going to get some of the nice effects. You can use certain things, but you’re just going to come into limitations. The Windows App SDK just gives you the broadest set of features from the current version of Windows and if it gets added to, there’s basically an update every few months where they’re adding more and more features and a lot of that can be community driven. So there’s something particularly that you want them to add, like the in canvas. You can ask them. I certainly have done that myself. So it’s like it gets it on the radar.
There’s like a particular thing you need that was in UWP for example, and they don’t do it, ask for it. That’s the point. There’s community standards on a regular basis that they share on YouTube, for example, where the talk about what’s going into it, what’s the roadmap? They talk about a lot, but only in certain areas. That’s why I’m here basically to say you should definitely be for Windows native apps. It’s definitely what you should be using for a modern application experience. It’s definitely going to deliver the best experience you can get for a Windows application at least.
Jamie
Peter
You’re all right, you’re going to be using .NET seven or soon .NET eight. That’s going to be the same in both. And if you’re not using too much platform specific stuff, that makes your job even easier. So you’re right, it’s just going to be a little bit of refactoring of your XAML. And most of the controls are pretty much the same, most of the basic ones. So that’s the only surface you’d have to change whichever direction you’re going. And that then does give you the flexibility to go with .NET MAUI or the Uno platform or even Avalonia as well, which is kind of more closer to WPF. So, yeah, you’ve got that choice. The only rewrites are going to be to the UI side, the actual logic, the main part of the code, as long as that’s .NET is going to be fine.
Jamie
For a core group of there’ll be a core group of developers out there who are going, “wait, if Apple is using it, I should use it too.”
Peter
Jamie
Peter
The people who use them, Microsoft clearly do. We’ve got things like Dev Home and there’s plenty of other applications, I’m sure, inside Windows itself that are written in Windows App SDK, but we don’t tend to hear that as much. You tend to hear that, “here’s a Blazor example, here’s a .NET MAUI example,” but we don’t tend to say, “hey, here’s this dev home, that we use Windows App SDK.” That would kind of I think that’s probably where the doubt comes in, is, okay, if it’s not talked about, what does that mean? And it has meant that in the past, I’ve got to be honest, it has meant that in the past.
I mean, Universal Windows platform was a classic one where there was a lot of investment in that platform. I certainly invested a lot in myself into that platform and it was dropped. It became what we have today, Windows App SDK. And it’s a little bit more limited than what that one was. But also the idea of where Windows is has also changed. Back then, there was lots of different places where Windows was to live, Xbox or whatever, but now it’s like leveraging the power in one place. The strategy is Windows 11. Future versions of Windows are desktop, laptop, that kind of device. So we should be writing apps accordingly. So that’s where that change happened, basically. But yeah, those are the key reasons, basically.
Jamie
Peter
But yeah, definitely check out their stand-ups as well because I’ll give you an idea of where it’s going. If there’s something that’s about to go in that you need, you can sort of keep an eye on it. And they have preview versions as well, so if something’s about to come out, you can try the preview version, try it out and give them feedback as well. So there’s definitely that it’s being developed in the open, just like we were talking about, that things are shared in the open. They’re best shared in the open. The Windows App SDK is as well, it’s as open source as it can be, if that makes sense, because it’s using a lot of low level Windows stuff. But yeah, there’s definitely an opportunity for dialogue with the community, which is really good.
Jamie
Peter
Jamie
Peter
And then I basically go from Hello World all the way through. So I’ve got basically basic examples, just getting stuff working, showing off certain features like how to do the badge notifications. You can show a little badge notification on the taskbar or show a toast notification. I’ve got examples on that and even got some games as well. So there’s like “noughts and crosses” and even a darts game as well, which was kind of a fun one to put together. So it was basic, but it was just to show off the ideas of these are the kind of things you can do. And also many of the examples using those affluent emoji as well because that fits in really nicely with Windows 11 because it uses those emoji as well. So, yeah, you can get started on my website, but there’s plenty of resources on Microsoft site as well to learn Windows App SDK as well.
Jamie
Peter
So, yeah, everything’s there if you want to get in touch. I’m on Twitter. So, again, @rogueplanetoid. So twitter.com/rogueplanetoid, just send me a tweet. I’m more than happy to help out. If anyone’s got any specific questions or you’re not sure or just want to have a chat about Windows App SDK or anything else, then I’m more than happy to talk about that. And, yeah, you can find me there. And I’m on GitHub as well, also as Rogue Planetoid, so you can also see some of my code there and the other things I’ve been up to as well.
Jamie
Peter
Jamie
Peter
Jamie
Jamie
Jamie
Peter
Jamie
Wrapping Up
Thank you for listening to this episode of The Modern .NET Show with me, Jamie Taylor. I’d like to thank this episode’s guest, Peter Bull, for graciously sharing his time, expertise, and knowledge. Make sure to check out Peter’s podcast, “Rogue Planetoid” for some interesting insights into the development space; and his wife’s podcast, “Scottish Murders Podcast”, if you’re interested in true crime stories - there will be links to both in the show notes.
Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at the podcast's website, and there will be a link directly to them in your podcatcher.
And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/review for ways to do that - reach out via our contact page, or join our discord server at dotnetcore.show/discord - all of which are linked in the show notes.
But above all, I hope you have a fantastic rest of your day, and I hope that I’ll see you again, next time for more .NET goodness.
I will see you again real soon. See you later folks.
Useful Links
- Peter's podcast: Rogue Planetoid
- Peter’s Wife’s podcast: Scottish Murders
- Project Reunion
- Jamies:
- rapid application development
- Dev Home experience
- Windows App SDK on GitHub
- Peter’s Windows App SDK tutorials on tutorialr.com
- Peter on:
- Supporting the show:
- Getting in touch:
- Music created by Mono Memory Music, licensed to RJJ Software for use in The Modern .NET Show