I recently received an email from reader Don Potts, asking which UI technology to use for a pet project on Windows. As usual, the answer is “it depends”. But the decision isn’t as hard as that answer makes it seem. And the rationale used for a pet project can be extended to business projects.
The question is a reaction to an article I wrote for the SubMain blog on WinForms. It’s geared towards developers, but the core of it is that WinForms can still be a good option for projects, even though the arguments in its favor are diminishing quickly.
Here’s Don’s question, redacted a bit:
I want to write my own file explorer program for organizing and tracking all my files (documents, music, etc.). I have always been frustrated by the lack of clarity on what is the best UI technology to use and/or where Microsoft is going with its technologies.
In your article, you mentioned using either Xamarin or the browser for future-proofing programs. If you were going to write a file browser with tree controls, what web/browser technology/technologies would you use?
I’m not necessarily looking to sell what I write; it’s more a way for me to clean up things here at home and keep my brain learning.
There are several forces at play here.
First of all, Don has a need for something he can’t find anywhere else. That’s a first important piece. If it does exist, and it’s affordable, then by all means just buy an existing product. It’ll save time and effort and you’ll have what you want immediately.
But if there isn’t a tool that does what you want, then as a developer, you’re in luck. We have the power to create our own tools, given enough time and effort.
As a site note, a personal tool is slightly different from a pet project in this case. Don can really use this kind of tool. A pet project could be something you maintain because it’s fun or it helps you learn, even if you don’t really need it.
A second point to note is that Don isn’t interested in selling this tool. This would rule out the need to write the project for some modern platform. If Don knows WinForms perfectly well, he has no reason to learn Xamarin and waste his precious time. If he can write the tool in WinForms in 3 months, but Xamarin would take him a year, then why on earth would he waste 9 months?
But that’s where the third motive comes into play: learning. He mentions he wants to keep learning. In that case, something like Xamarin (or whatever else) could make sense. Thanks to the richness of the .NET ecosystem, he will even be able to transfer many skills from classic WinForms .NET programming to Xamarin, if he chooses it.
I’m going to make a small assumption, based on the details in Don’s mail. I’m going to assume he knows WinForms well, and newer system not so well.
Given that the upcoming .NET 5 will support WinForms, it should be able to run fine on Windows for quite some time in the future.
If architectured strategically, you could write a core library that provides all the features you need, and have the UI be just a fairly empty shell on top. This would, in theory, allow you to switch UI technologies later.
It’s true that Microsoft and UI technologies have had a turbulent last few years, but if it works for you, it’s perfectly OK to choose WinForms. There’s no shame in that. If you’re familiar with it, you will learn less of course. But you will have your tool faster.
Similarly, businesses should be OK in choosing an older technology for a small internal tool that needs to be developed quickly. The issue becomes more complicated for businesses because temporary tools often become permanent and employees need to be kept happy. But for personal tools, feel confident to choose what will give you the quickest and/or best result.