Technical debt, GuiKit 3, OSX, Linux and some looking forward


Hey Guys,

Thought I’d post a little bit about what I’ve been up to the last couple of weeks and some things I’m thinking about going forward.

First up, I’ve just completed a major documentation effort of GuiKit - the underlying library that Cantabile’s user-interface is built on. This is all internal stuff, but with documentation now written for almost 3,000 internal functions and a bunch of code cleaned up it’s an important way to keep down the “technical debt” as they say.

Also, I’ve started a new version of GuiKit that I’m calling GuiKit 3. The big change here is going to be a move from using native operating system controls (eg: buttons, checkboxes, text fields etc…) to custom UI that will look, feel and behave identically on all platforms. While Cantabile’s main window already uses a custom UI, all the dialog boxes use native controls. This approach has worked well so far, but creates too much of a maintenance issue for porting to other platforms. This is one of the reasons I’ve been reluctant to push forward with the OSX port so far - I’m just not happy with the way it was done. So I’ve deleted that half of GuiKit and I’m starting to rebuild those controls from scratch.

There’s going to be a couple of other focuses in GuiKit 3:

  1. Much better support for Rich Text.
  2. Since I’ll need to build a multi-line text editor control, that should form a good basis for a new “in-place” show notes editor in Cantabile.
  3. Properly integrated theme support. I’ve built a new theming system which will let you customize just about anything in the UI if your so inclined.
  4. Support for the latest Windows 10 per-monitor DPI scaling features.
  5. Move to latest .NET technologies - specifically NetCore 3.1

As hinted above I’m looking into cross platform support again. While I’m not promising anything, I’m getting the feeling that Linux is going to become more and more important over the next couple of years. I recently setup a Linux based gaming machine (see here) and while I’ve used Ubuntu plenty of times before I was super impressed with 19.04 and feel like a threshold has been crossed. Same with NetCore 3.1 - it feels like its finally “arrived” and the upcoming .NET 5 is also really promising.

Finally, GuiKit is the UI library used in my son Mitch’s game (see here) and he’s been hassling me for a Linux version for ages. The game only uses a fraction of GuiKit’s features so it should be a nice stepping stone to a full port to these other platforms.

TL;DR: I’m going a bunch of behind the scenes work. None of it will be visible in Cantabile for quite a while but it’s super important and I consider this kind of effort as an investment in Cantabile’s future.




Can’t wait 'till we’re all back to work and gigs so we kibbitzers have less time to be “helpful” . .er . . that is . . .

Great stuff Brad!


Great work Brad,

I love the fact that we get to hear about what’s happening with software we use on a daily basis, it gives me a real sense of security knowing that someone actually cares about things I use for work!

Look forward to seeing what all this new stuff brings…