Are There Plans For A GUI Overhaul?

Christian Stimming christian at
Wed Oct 5 16:45:06 EDT 2016

Dear Dave,

some additional voice on this topic: I'm the author who wrote the alternative 
C++/Qt GUI program "cutecash" on top of the internal gnucash "engine" code. 
That was in 2010. To my surprise, the code (with some minor fixes that I 
committed today) still compiles, links, and runs. Just use cmake, set 
WITH_CUTECASH=on (requires libglibmm-dev ), and make. One can open a gnucash 
data file, browse through the accounts, edit a transaction and even undo the 
edit (heh!). It will crash sooner or later due to various code changes in the 
underlying object ownerships, but IMHO it might again be worth a look.

My take on the long term plans is that there are multiple plans around here. 
Even a "migration to C++" can be done on various different levels, with 
different strategies. For the cutecash experiment, I tested using the glibmm 
wrappers, which map the glib stuff to C++ sufficiently well. If asked, I would 
suggest to prefer glibmm usage over complete rewriting, and replacing glibmm-
wrapped objects by std c++ as a subsequent step. This would enable a switch to 
C++ on the GUI side somewhat earlier than requiring a complete C++ rewrite 
first. Then again, I probably won't be doing any of these work as I spend only 
very little time on gnucash currently, and those decisions typically are done 
by those people who actually invest their time in coding here. So don't take 
my advice too seriously :-)

However, a new GUI layer will for sure have to start with a very small subset 
of features. It might be a good path into more future-proof coding technology, 
but it will for sure have only a small part of the current gnucash's features. 
Maybe one can find a set of features with some small new additions that 
attracts enough attention... but I don't know how this set of features would 
have to look like.

If some people around here are looking into further GUI coding in C++, 
preferrably using Qt toolkit, I would be interested to help out every now and 
then. Feel free to contact me directly if interested.



On Mittwoch, 5. Oktober 2016 08:44:44 CEST Dave wrote:
> Thanks, Jon and Ted.
> John, you inspired my optimism. Ted, you gave me a healthy dose of caution.
> :)
> So, I've done SysAdmin work for a living. In this field, lines of code are
> thought of as liabilities. If I can get something done with 10 lines of
> BASH code, I'll probably do it. Almost always, there needs to be a tangible
> result to efforts within 1-2 weeks of starting. So I'm used to being ruled
> more by economy and less by elegance. If I have an elegant solution, but it
> will take time to write, I have to essentially work in secret, burning the
> midnight oil. And even then, the idea may have actually been a bad one and
> I just wasted all that time that I didn't get paid or praised for. :(
> This is why I've by a Pythonista for some time. I use OOP when it makes
> sense, and don't when it doesn't. I write a working solution today, and can
> easily come back tomorrow to abstract this or that and make it maintainable
> for my future self and others. So I've learned a little about evolving a
> project, but only really in Python.
> I've wanted to get back to C/C++ for some time. My main motivation was AVR
> programming, which I've done a little bit of recently. However, none of my
> background has been in larger application design and programming. It seems
> that C++ has matured quite a bit since I touched it almost a decade ago.
> When I learned it, I got as far as the STL, which seemed very advanced to
> me at the time, but very interesting at the same time as I was finishing up
> a mathematics degree and the STL seemed like a great way to create the sort
> of abstractions that would help me begin writing programs to do
> computational analysis. I probably would have gone that direction too, but
> life took a turn for me and I got into managing Linux systems and hardware
> and data centers.
> Ted, I promise I'll give it some time. :)  I'm not in any particular rush.
> I learn best by doing and it would be a pleasure if I could get up to speed
> in C++ again and help out GnuCash at the same time. I really just need to
> dive into C++ again. If I can't swim, then I can't swim and I'll have to
> move on. From what I've read about it, though, things like "shallow
> hierarchies" are practices I've already conceptually learned in the Python
> world. When I learned Python, I began writing it like a Java programmer. I
> have since been coaches completely away from that and classes are mostly
> used for a type of namespacing, easier testing or the like. I've also found
> that more and more, my programs are made up of generic computation over
> data. So most of what's happening is that the application gets directed by
> dictionaries that get processed to produce results. Basically, the Python
> becomes more akin to a scheme program. I've found that this produces a
> great amount of flexibility.
> Thanks again for the pointers, warnings and generally good discussion. I
> will look at the resources given. I've also found this
> <>, which I'm hoping is also a
> good place to start educating myself.

More information about the gnucash-devel mailing list