We recently installed Visual Studio, and have been working on the Windows version of Goldenseal Pro.
For the current Goldenseal software, we use QuickTime libraries to make the Mac code run on Windows without revision. About 20% of the interface is handled directly using MFC (Microsoft Foundation Classes).
Our original plan was to stay in C++ and replace all the QuickTime stuff with more MFC. However, MFC is old technology, and new programs are usually written in Microsoft’s C# language, using a different framework called .NET. It’s possible to combine C++ with C# but it’s harder than on the Mac. Unfortunately, the process is also entirely different, so we can’t have neat little branches for each platform.
Meanwhile, Swift 3.0 is due from Apple in late 2016. It probably will be the first version that is stable enough to actually use without much pain. The long term future is that Swift will replace Objective-C as the standard programming language for Mac and iOS. Swift will not connect with C++ at all.
We have a big investment in business logic that is written in C++. It’s about half the total code in the Goldenseal software, and represents 5 or 10 programmer-years of work. It’s spread out in 400 files, with over a million lines of code and comments. This is what does the math and data processing behind estimates, job costing, accounting, payroll, and all the other features in Goldenseal.
Unfortunately, it seems like both Apple and Microsoft really want to force software developers to use their proprietary languages, rather than C++. The pain and compromises required to link our existing code base to modern frameworks are starting to look like bigger trouble than just rewriting it out of C++, and into Swift and C#.
A complete rewrite like that means much more work now, but it also means much better software in the end. We can also design it so the same code base can work on both desktop and mobile. The dream has always been to have just one set of code that runs everywhere, but maybe getting 4 platforms out of 2 sets of code is the best we can do.
This is a wrenching change to consider, as big as when we moved from Excel to C++.
Comments appreciated. It’s going to take at least a week or two to decide.
Turtle Creek Software