We have not made much progress on Goldenseal Pro for Windows, ever since we closed as a non-essential business on March 23. Stepping back for a while made it clear that it’s time to shift gears.
Our original plan was to use MFC (Microsoft Foundation Classes) to build Goldenseal Pro for Windows. Best guess at that time was a year to finish. MFC dates from 1992, which is ancient in computer years. On the other hand, we already use some parts of it. Adding the rest seemed like it might be relatively easy.
Unfortunately, MFC really is just too darned old. Just about everything is awkward and painful. Just one example: for text, it may use LPSTR, LPCSTR, LPWSTR, LPCWSTR, LPTSTR, LPTCSTR, WCHAR or TCHAR, depending on the function. Choose the wrong one and the app shows garbage text, or crashes. It’s constantly frustrating, even with a cheat sheet.
Based on progress to date, it now looks like it will take 2 or 3 years to finish Goldenseal Pro, by using MFC. Maybe longer, since Covid-19 is likely to cause more delays.
Microsoft has other frameworks and programming tools that are newer than MFC. Most use C# or Visual Basic (their in-house programming languages). Last week I put all the options into a spreadsheet: 56 of them, and I probably missed a few. Everything from ADO to XAML. They have WCF, WPF and WF, but no WTF (though it ought to be there). Nothing has ever been retired: it’s the tech equivalent of a hoarder’s house.
The Windows team seems to be aware of the problem. WinUI 3 is their blueprint for a more orderly set of development tools. In theory, it will unite all the options into one flexible system, with much better support for C++ code such as ours. WinUI 3 just moved from ‘alpha’ to ‘preview’, whatever that means.
Originally, we planned to whip something out in MFC, and then gradually convert it to WinUI 3. Now it looks like it will be better to jump right into WinUI. We might as well experience the growing pains of a young platform, rather than the arthritis of a very old one.
Full release of WinUI 3 is probably still a year off, but there’s a half-baked WinUI 2.4 which we probably can start with.
It will take most of the summer for our staff to come to grips with the new plan. We will play around with sample projects, read books and online info, and then start on a prototype. We may need to learn C#. We may need to shift gears again, if Microsoft shifts theirs. We probably will need to make a few changes in Goldenseal’s interface, so it fits into their system.
Our lives would sure be easier if we could just write code once, and have it run on all desktops. So, I went back and looked again at cross-platform development tools, for the 4th or 5th time. QT and Wxwidgets are the best known, but there are a few others. This post sums up their problems in great detail. Somewhat cynical, but it’s the truth. Likewise for its picture of the fishes.