Hello everyone,
So yesterday I released version 4.0.0 of G’MIC, and this morning, version 4.0.1, which fixes a regression in the G’MIC-Qt plugin related to saving Favorite filters.
This 4.0 release marks a major milestone in the project’s history, especially in terms of the number of changes since the last stable release: Over the past two weeks, there have been 280 commits to the CImg and G’MIC repositories, representing more than 15k lines of code that have been modified, added, or removed. That’s a massive amount, especially since all these commits were made by a single person (me, in this case!
).
I wanted this 4.0 release to mark a significant milestone in terms of code quality and robustness.
Since the entire G’MIC project consists of more than 300k lines of code, and I am now the only developer working on its development and maintenance, the codebase is starting to get a bit too large for one person to handle.
So, I’ll say it without shame: For this 4.0 release, I used several LLMs to assist me with code reviews (Claude, ChatGPT, Gemini, Mistral AI) and help make the code more robust and efficient. On a project of this size, with just a single developer, the help from those LLMs was more than welcome!
(after all, these LLMs were shamelessly trained on millions of lines of open-source code, so it’s only natural that they, in turn, could be used to improve that same software!).
Of course, I didn’t let the LLMs do all the coding for me: I just read their suggestions and decided for myself what to do with each one. And there were hundreds.
Sometimes the suggestions were silly, and sometimes they were brilliant. So, It was nice to be there to sort through it all. But it took an enormous amount of time: I’m talking about 10–14 hours of work per day reviewing and modifying code for the past week.
This was quite intense. I’m honestly exhausted by this process, and at the same time amazed by what it has allowed me to accomplish in such a short time. As I mentioned earlier, the number of changes is huge, and they have definitely improved the quality of the code.
The funny thing is: a user of the G’MIC-Qt plugin won’t necessarily notice it (it works just “like before”), but in terms of code quality, security, and optimization, believe me, this is a huge step forward for G’MIC.
And throughout all of this, I’ve learned a tremendous amount of new stuffs about C++ development.
Okay, so now we have a more robust, better-written G’MIC 4.0 with a few new filters…
What’s the plan now?
I have to say that after 18 years of development, G’MIC has reached a level of maturity that suits me: the language is stable and a pleasure to use (at least from my perspective). It allows you to do a wide variety of things. The various user interfaces are functional.
What’s left to do? That’s a very good question, and one to which I don’t have an answer.
So yes, of course, we can always imagine adding more and more new filters, new commands, or do some minor tweaks to improve the current interfaces. But those are minor details, and they don’t even necessarily require new releases of G’MIC.
In fact, I don’t really plan on stopping adding new image processing operators or new filters.
So my goal is clearly to slow down the pace of G’MIC releases in the coming months/years.
And right now, above all, I need to get some rest. I’m going on a week-long vacation to Brittany, and I plan to make the most of it.
With this post, I also wanted to thank all of G’MIC’s and pixls.us contributors, many of whom are active on this forum. Without you, it would never have been possible for the software to reach this level of maturity. I don’t dare mention any names in particular, because I’m too afraid of leaving someone out, but you know who you are ![]()
Cheers,
David.