Since last news, I did various fixes and all sort of improvements in GIMP (exactly 48 commits between July 25 and today) but today I won't talk about these. Let's talk about the future! What is blocking GIMP 3 release?
Indeed not long ago, someone very close to the development work told me that it is not always clear what is blocking GIMP 3. So I thought it could be nice to give a bit more visibility on this more fundamental work in GIMP code (it's sad that it's a lot less visible than when we implement some fancy new feature with a nice interface even though it's also an extremely important part of what we do).
Anyone who tried the development version could think that our port is over. Moreover the GTK+3 port is basically advertised as the whole point of GIMP 3, so why not release now?
Well it's mostly true, but as often there is more than meets the eye. We indeed have working GTK+3 code, but there are still major pieces using deprecated API, and while we could just release like this, it may not be the best idea. Among the major parts which we should probably undeprecate are the code for actions (actions in GTK+ are all kind of operations which can be assigned a shortcut or put in a menu) which is still using the old GtkAction API and has to be replaced by GAction.
I think we also have a bit of code still using older API for input device management (which must be replaced by GdkSeat and the like) though most of it is already ported.
There are a bunch more of deprecated API used here and there, but really the GtkAction→GAction port is the big last thing (that's probably 90% of all current build warnings). That's a very big work field though because these are used just about everywhere in GIMP. Actions are a fundamental feature of GIMP so when we'll work on this, it will probably be a huge headache.
By the way, if anyone wishes to help, just have a look at our Continuous Integration pipelines and in particular to warnings in build outputs. Then you'll know what to work on!
Wayland support (Linux-only)
Back when GIMP 3 work started, Wayland display protocol still seemed like a far-away thing in the future. Nowadays, whether we like it or not, several distributions already started to switch to Wayland as default (even though it's still fortunately possible to switch back to a X11 display server).
Before anyone asks, I don't really have a strong opinion about whether Wayland is really the right technology. I mean, I definitely see why it was born, why it exists, and even why development needs to continue. More security, more sandboxing, permissions, all these stuffs are becoming increasingly necessary (and similar development can be seen on all operating systems, not only Linux) with computers used more and more for very important things in our life (a fact which I am not a fan of, to be clear, but that's for another discussion!). Wayland comes from this background and that's fair. Now it's also true that I sometimes feel that Wayland is also creating some new problems which didn't exist nor even needed to exist, sometimes really out of nowhere. It's hard to get behind every decisions.
Yet I still think it's the future, not because it's necessarily better but because it's useless to fight against the change in technology. Better be among the ones to influence it (even if just a bit). Note that I say "future" because here we still don't use Wayland. My strategy so far has been to test Wayland every once in a while for a few weeks, see if we can finally use it, and if not report as many bugs as I can find, fix what I can fix, and come back to X11 (because I also have a lot more work to do than focus on Wayland), which is what I did last month (as you know if you read our news reports). From what I can see, Wayland is perfectly usable for a lot of desktop work, but not yet for graphics work. And it also still has a lot of little quirks here and there, which can often be worked around (but really when they don't exist in X11, you often think "why put myself through this?").
Anyway the bottom line is that GIMP still has a bunch of very blocking bugs which only appear when running it in Wayland unfortunately. Until we fix at least the worst ones (freezing GUI, memory leak, blinking or even disappearing pointer…), we may have to hold on GIMP 3 release.
"Space invasion" is the codename for the project of massively improving color management in GIMP. Some of the work has already been integrated into various GIMP 2.10.x releases, but really the bulk of this project will come with GIMP 3. Now a huge part of this work has already been done, but there is still quite a lot more to do.
Though I help there too (mostly on GIMP side), I am not necessarily the most adapted to speak about this topic which is a very specialized topic. We have a few contributors who are a lot more knowledgeable than I am on color. Anyway this is also a work which needs to be finished for GIMP 3.
GIMP is much more than just a pixel manipulation software. It is also a pixel manipulation platform! You can tweak and automatize many of your work with scripts and plug-ins. In ZeMarmot, we have written a few custom plug-ins too to help ourselves, and we also use a bunch of third-party plug-ins from many talented people over the world.
One of the "promises" behind such API is "stability". If someone wrote a plug-in for any of the GIMP 2.x, it needs to continue working on further versions 2.y.
Now we are going to bump the major version of GIMP to 3, and this is the occasion to break compatibility. We are not doing it for the fun and we are trying to keep breakage at a minimum, but if we never do this, then we just pile up more and more weird API. Basically GIMP 2.0 was released 16 years ago. This is 16 years of collective experience and learning from our mistakes. Now GIMP 3 is the time to actually act on what we learned and fix some past mistakes.
But what it also means is that if we let any new (or old) mistake in, we are good to keep it again for nobody-knows how many more years (until GIMP 4) because of the API stability promise.
This is why we really need to take our time now improving our new GIMP 3 API. We already did some very very nice changes (I should make a blog post about it eventually), and there are a few more we have been discussing about.
Finally there will be definitely a "cleanup" step where we will want to look at each function, one by one and think "is it good? Don't we want to change it? Now is the time if we do!".
It's related to plug-ins but it's a higher concept. What I call "extensions" is all kind of data to improve your GIMP, plug-ins indeed, but also icons, themes, packs of brushes and so on. You remember that I already talked about this 2 years ago. The goal is to be able to search for new plug-ins, custom brushes or whatnot (looking at descriptions, screenshots, etc.) and install or update them in one click. Basically what you can do in Firefox or other software with plug-ins, well you'll be able to do it in GIMP.
A good part of this work is already inside the development version as I've been working on and off on this for some time now, but there is a whole part which is not done yet (especially the server part). And that's really something I want to finish for GIMP 3.
Started work: multiple layer selection and more…
Then there are a bunch of long-running work. For instance, the multi-layer selection is still on-going and we can't release something half-done (even if all looks fine on a shallow review; the devil is in the details). I am closing to the end of this work, or rather the end for the base of the feature.
Then there would be more neat advanced improvements which will be made possible, though I am actually not sure if it's worth starting to work on these yet (because then it will push the release all the more). We'll see.
Anyway the point is that when we start something, we need to finish it. I am not unhappy at all to have started multi selection, this is something we have been talking about for many years. So I am happy as hell. But I am still aware that every new big project we start may potentially push back GIMP 3 release, which is why sometimes I need to refrain myself.
There are other features I didn't list on purpose, like we also need to work on custom neutral-color themes for GIMP 3 (because the theme system changed, it's now based on CSS on GIMP 3 so we can't use GIMP 2.10 themes) because nowadays this is considered as a prerequisite by many graphics professional. [contributions welcome!]
The documentation is also a big question. I would really love for us to have new documentation ready when we release, especially for the updated plug-in API and extensions.
And I'm sure I missed some stuff too. Though I think I got the gist of what still needs to be done.
You may also notice that there are features which are very dear to our heart and that we want to get as soon as possible (for instance the core animation ability which we have been working on), yet I haven't listed them here. This is because they are not blockers. Even though there are so many more advanced features I'd love to have when GIMP 3.0 is out, they can also appear on a later version. What I've listed above are really stuff we should finish for GIMP 3 (though some are debatable, like extensions could technically be reported if really that was the last blocker; I hope it won't come to that). Making a news about all our personal priorities is also something I want to write about some day.
In any case, I hope this gets you a good overview of what still is in the work before we can release GIMP 3. And if anyone wishes to help us push GIMP 3 forward, now you know what to contribute on.
Thanks for all the support everyone! Every patron helps us accelerate the release of GIMP 3! 😃
Jehan from ZeMarmot team