
Last week, a reader asked me why I wasn’t posting the source code for the .NETpad modernization work I’m working on and writing about. This is by design, but I didn’t explain this well (or at all). So that’s on me, apologies. This initial phase of the project is about me figuring out what I can do to modernize .NETpad given Microsoft’s unexpected, renewal of formal support for WPF. This change delighted me to no end: Of all the app frameworks I’ve used over the years, WPF is by far my favorite. And of the several .NETpad versions I’ve created, the WPF version is likewise my favorite.
So this is very exciting (to me, at least). But after announcing its sudden turnaround on WPF and then releasing the initial support in .NET 9 Preview 4 the week of Build 2015 back in May, Microsoft has been largely silent. I expected and hoped for new rounds of updated documentation and improvements to the basic Windows 11 theming support in WPF, but there’s been nothing. It’s almost three months later, Microsoft has since issued .NET 9 Preview 5 and 6, and we’re at the halfway point between the announcement and the final release of .NET 9 in November. But there is very little news, and no meaningful documentation of any kind, and Microsoft hasn’t updated WPF support in .NET 9 at all since May.
So I’ve plowed forward. I’ve reacquainted myself with WPF, C#, .NET, and Visual Studio. I’ve built the app, updated the app, ventured off into more side projects than I can count, and experimented with alternatives and add-ons that I could maybe use to add functionality that pure WPF doesn’t address. I’ve improved the code quality. I’ve been learning, basically, and my excitement at unexpected progress here and there has triggered more articles about this work than I’d expected to write during this phase of the project.
And that’s an important point. I am a writer, and so the articles I’ve written so far are in many ways me working through the problems I’m experiencing. But I am not a programmer, not a “real” or “professional” programmer anyway, and so I make mistakes. I go down the wrong path sometimes. I look at things from some high level, make assumptions, get some work done, and then realize I need to start over. And so I do. And this has happened many times over the summer. But I’m enjoying the work, enjoy flexing this muscle again. And I share it with you because it’s difficult for me not to, and maybe a handful of you enjoy it too. Also, I don’t see anyone out there writing about this topic at all. Maybe I’m filling a small void of some kind. I don’t know.
Regardless, I should have been more explicit about my plans. Though the truth is, they’re in flux. Here’s where I’m at.
I have a rough schedule in mind thanks to the timing for .NET 9, which is a requirement to do this work: Microsoft will launch .NET 9, and thus formal WPF support for Windows 11 theming, on November 12, 2024 at its annual .NET Conf event. So my rough (and potentially fluid) schedule for modernizing the WPF version of .NETpad aligns with that. What I’ve been waiting on is more information from Microsoft–documentation of any kind, updates to the functionality, and so on–and since that’s not happened so far, I’ve just worked with what I have. As noted, I’ve made more progress than expected, but I’ve also made many mistakes. Two steps forward, one step back.
Part of the work I’ve done is to improve the quality of the code. This takes many forms and is limited, again, by me and my limits as a developer. There are basic issues I struggle with related to application state, and there are technologies that are central to WPF, like data binding and resources/theming support, that are core to this code quality improvement. I need to understand these things, and so I’ve been researching, reading, and experimenting with code. There is so much work to do there.
Pragmatically, I also just want to finish the project, which involves determining what I can do to make .NETpad more like the modern Notepad in Windows 11. And to make this easier to understand–I can churn out words, obviously, but sometimes the message gets lost–I’ll just list out those things.
Once I figure out all the constituent points noted above–what I wish to achieve, how I wish to achieve it, and when I will be able to get that work done–I will document the modernization of .NETpad in a step-by-step how-to format over a series of articles, as I did for some previous .NETpad versions. It’s getting there, but that work is probably still a few months away. At the very latest, I’ll start writing it up in November, coincidental to the .NET 9 launch. But I’m still hoping for documentation and tech updates from Microsoft in the interim, and if this functionality gets better and/or is finalized before then, I’ll wrap things up on the work/experimental side and get to work on that series sooner.
When that series is done, I’ll post the “finished” version–it’s never really done, of course–to GitHub as well. Then this will become the new starting point for .NETpad going forward. And if Microsoft updates Windows or Notepad, or whatever, in the future, we can move forward with this new version of the app.
Hopefully, the above explanations make sense to anyone who actually cares about this work. Next, I’ll return to my previously scheduled update: I have made some major changes to this project, and like so much else that’s happened this summer, it came out of nowhere and took on a life of its own.
More soon!
With technology shaping our everyday lives, how could we not dig deeper?
Thurrott Premium delivers an honest and thorough perspective about the technologies we use and rely on everyday. Discover deeper content as a Premium member.