After decades of working with GObject and GTK in C, I'm finally making the decision to use a real object oriented language. This is however a few years into a real-time software synthesizer project. I previously toyed with this idea even when I was starting the project, but wasn't satisfied with the available options. However, I didn't investigate dlang at the time. Now that I see what it has to offer, I wish I'd known about it then!

So now that gtkD and dlang seem like the obvious choice to me, I'm now looking at porting my application. It is very object oriented using GObject for the underlying core (non-GUI) code built as a library and has many custom GTK widgets for the GUI side.

I figured since I'm doing such a port, I may as well also transition to GTK4. To this end I was able to build the gtk4 branch of gtkD which is promising and I plan on contributing however I can in bringing this to a releasable state. It seems like a lot of what is missing is porting the examples to GTK4, which I started to do as an exercise. Does anyone have any tips on how to best contribute to this effort?

As for porting my application, my main question is in regards to whether to continue to utilize GObject for my core non-gui library. I really like the property system of GObject for defining properties, their ranges, etc and have heavily used this in conjunction with libjson-glibc for serializing/de-serializing objects to/from JSON for the file format the program uses. I also was planning on providing a Python shell in the application with an API binding, which GObject introspection provides almost for free. However, I don't plan on really adding any other bindings, so I'm not attached to using GObject, especially as there is likely less need for it with dlang. Any input on this decision process would be greatly appreciated!

I know it is a long road ahead with this project, but so far it seems worth it, and seeing what dlang looks like in conjunction with gtkD is like a breath of fresh air!