How we build Goldenseal

We are back to writing code for Goldenseal Pro.  The first job was deleting all of the QT code, which took a couple days.  Now we are poking at a few basic classes that ought to be either removed or rewritten, and figuring what to do with them.

The next month or two will be boring stuff.  It’s rather basic coding without any dramatic milestones to report.  So what I’ll talk about instead is how we build Goldenseal in the first place.

To start with, the project is just a bunch of text files: about 1000 of them. Usually they are in pairs, with a header file and source file that describe one class.  For example, CEstimate handles all the math and data storage for an estimate record, while CEstimateViewer handles everything that happens on the screen.

We view the files in Xcode, which color-codes the text so it is easier to understand.  It also builds the actual program, by reading all the C++ code and compiling it into an app.  If there are problems, it reports the error, and sometimes suggests how to fix it.

Up until now, we have been removing obsolete libraries.  That breaks all our code that relies on them, which sometimes means going through thousands of errors and fixing them one by one.  Or, sometimes a whole file is obsolete and we can just toss it.

We probably still have a few more days of that, but we will also be rewriting old code now, and adding some new stuff.    We’re writing for Mac at first, but will do the Windows code in parallel, starting in January or so.  The Mac code will actually be much harder to write, since we have to mesh our C++ code with Apple’s Swift and/or Objective-C languages.  There are enough differences between them that they don’t work together very well.

Dennis Kolva
Programming Director
Turtle Creek Software

More Pro Plans

We’ve decided not to use QT as a cross-platform development tool for Goldenseal Pro.   It means throwing out some working code that we’ve already paid for, but it won’t be the first time we’ve done that.

QT would let us have one code base that runs on Mac, Windows, iOS, Android and even Linux.  That notion is extremely attractive, so this was a very difficult decision.  Unfortunately, QT has plenty of limitations and design flaws, and in sum they seem larger than the advantages it provides.  In the long run we’ll be better off with native code, even though it’s more work.

Over the past year we’ve relied on the judgement of subcontractors on how best to approach the Pro project, since we figured they had already done this kind of update.  That also turned out to be a mistake, and a big waste of time.

On the other hand, we don’t have any prior experience with Objective-C (for Mac) or the Windows libraries, and doing it all in house will be too slow.

So, we will spend a few months designing and writing the “core” of Goldenseal Pro.   Some of that will be in the platform-native languages, but most of it will be rewriting our base code to be more connectable to modern frameworks.  It will be a good way to spend the gray days of winter!

When that is done we will put it out to bid again, with a clearer set of specs, and a code base that is much easier to take over and manage.  We may even break it into smaller sub-projects, so work can proceed in parallel.

Dennis Kolva
Programming Director
Turtle Creek Software