It has been quite a while since I wrote some C++. I’m not exactly a fan of the language but I have a small tool that I wrote and use a lot which needs a UI. Because I want it to have fast and solid native UI and it has to run on Linux the choices are somewhat limited. There is GTK which I never really got used to and then there is Qt. I really like Qt. It has one of the best documentations that I have ever seen for a framework. I feel that it kind of works best with C++ so that’s the stack I choose.
When I started writing it I added the KDE dependencies. That way I could use the fancy Kate editor widget and some other nice features that came with it. That worked quite well and I started adding a lot of features. After a while I had all the functionality I needed and a bit more and stopped developing it. I used it on an almost daily basis so it is not like I forgot about it.
Than came the day where I got a new computer, installed a different and more up to date Linux and than had to get it up and running again. I somehow managed it but it was not a lot of fun. Its build with the usual CMake fanciness which works once all the dependencies are there and as long as nothing major changed. So I was good for a while again. By that time I felt already that it had a lot of functionality that I did not really need and no one else was using it so it made sense to remove everything I did not need. But I was lazy and it worked so it stayed like it was.
Another couple of years later the same thing happened again. But this time it did not go so well. There was a mayor new Qt version and some of the KDE widgets had changed so much that I did not get them compiled again. I realised that I would have that problem again and again and that it was time to make it as painless as possible. So I started removing all dependencies so that it was a pure Qt application. Once that was done the Qt upgrade was easy. With that I lost some features that I wanted to have so I figured out a way to implement them without to much effort and only using Qt. And now I had an up to date and running application again.
Somehow this triggered a phase were I was motivated to work on it again. I started to remove all the functionalities I did not need anymore. But the more I worked with that code the more I realised that big chunks of it were really in a state I did not like. I have learned a lot of thing in the last years and my programming style changed a lot. Step by step I refactored and removed things until I lost interest again.
Now I started again to continue working on it. I was surprised how much I already had done the last time I worked on it. Lets see how far I get this time. It is really interesting to have a program that is in constant use and that gets developed in very inconsistent intervals. There is a lot to learn about how the code looks a couple of years later and how the surroundings have changed and in turn force a change on the application.