Vue lecture

GIMP @ Libre Graphics Meeting 2026

Par :Jehan

The Libre Graphics Meeting (LGM) is the annual meeting on Free and Open Source Software (FLOSS) for graphics. It aims at gathering both developers, artists and other creative people.

This year, it will be held in Nuremberg (Nürnberg), Germany, from April 22nd to 25th of 2026.

Libre Graphics Meeting 2026 logo
Logo of Libre Graphics Meeting 2026

As every year since the event was born in 2006 (co-founded by early GIMP team members!), our project will be present.

GIMP team members’ talks and workshops

Here are talks and a workshop by GIMP team members:

What becomes possible with a graphics stack/compositor that works with vectors, rather than pixels? - and what does it take to make it possible? Helping figuring out this - is a goal of the ctx terminal emulator with its vector graphics extension.

I’d like to propose a soldering workshop for LGM attendees. Goal is to populate a PCB with a handfull of components to have something that lights up with colors.

Note: the schedule still says the workshop is on Friday, but we were told by organizers it moved to Thursday and schedule has not been updated. If you want to go, we suggest you verify the schedule page before.

GIMP is Free Software. Most people present at Libre Graphics know as much. But it is more: GIMP is also a Community. For me this aspect has about as much importance as the licensing part. In this talk, I will be diving further into what that means, how that works and why this matters. Doing so, I will also discuss a bit the past few years of the project, clarify our current vision and forecast the (very positive) future of this project.

FLOSS and the Community: call for sponsoring LGM

Our project believes in the community, sharing and working together to make a great creative software ecosystem. Many from our team work professionally with Free Software, be it graphics or other, and we believe that FLOSS collaboration provides the best environment for all. Aryeom and I, for instance, maintain GIMP as we use it for professional animation film making. And we also use and support other awesome Free Software, such as Inkscape, Blender, Scribus, Kdenlive, Synfig and more…

This is why GIMPCon evolved into Libre Graphics Meeting, 20 years ago! And this is also why we have helped funding the event many times across the years. We also contributed hardware sometimes to LGM organizers, sponsored LGM parties, funded travel and/or accommodation expenses for contributors of other projects… Because GIMP would not be the same without all the other Free Software around.

This year again, we are officially a Gold Sponsor to LGM 2026.

It saddens us to see LGM organizers struggling to find basic funding every year. Therefore we would like to encourage other creative FLOSS projects which can afford it to also sponsor LGM. When you do so, you support the event gathering us all, improving inter-project collaboration and helping your own project evolve, you also support the smaller projects which are not yet self-sufficient, and you show appreciation for the whole community and the past contributors which allowed your project to be where it is now in the first place.

Of course, this call also extends to companies and other organizations using all these incredible Free Software for their work.

Here is where to get in touch with this year’s LGM organizers: LGM Sponsor Page.

See you in 2 weeks!

We hope to see many people in LGM at the end of the month! 🤗

Oh and we still have cute Wilber stickers to give out while supplies last. So try to grab some to customize your laptop, fridge and everything!

  •  

Interview with Sevenix (author of GIMP 3.0’s splash image)

Par :Jehan

A few years ago, we had started a series of interviews (mitch and schumaml). More were planned, but things don’t always go as planned.

Well let’s try again! Today we are interviewing Sevenix, the digital artist who contributed the very cool splash screen image (which appears when starting GIMP) for the GIMP 3.0 series.

This interview was held asynchronously and remotely with questions from myself, Liam Quin and Alx Sa.

GIMP 3.0 splash screen, by Sevenix (CC by-sa 4.0)
GIMP 3.0 splash screen by Sevenix — CC by-sa 4.0 International

Wilber (GIMP team): Hello Sevenix! Could you introduce yourself?

Sevenix: Hello! My name is Fredrik Persson and I’m a programmer located in Sweden in my late thirties. I like music, movies and video games with the latter being one of my major points of artistic inspiration. Most of my drawings, even if not necessarily related to a specific game, take a lot of inspirations from the games I enjoy. One game in specific was actually the reason I got into digital artwork at all.

Fredrik Persson (a.k.a. Sevenix)
Fredrik Persson (a.k.a. Sevenix) — all rights reserved

W: You use GIMP for illustrations. Is this a hobby? Do you use GIMP for a living?

S: I use GIMP for a lot of things but my main use would probably be creating illustrations, or digital artwork, yes. Ever since I was little I enjoyed drawing vast landscapes and simply filling them to the brim with little details. I use GIMP as a hobby, and while I have taken commission works earlier, I tend to not these days. The way I work is rather slow and heavily dependent on my inspiration over several months. Taking on projects that are not based on my own inspiration as well as demanding deadlines, it was simply not an enjoyable experience for me.

W: Could you talk a bit about your workflow please?

S: Funny thing, most who read this would probably expect me to be good at drawing, but truth is, I’m really not. I would consider myself below mediocre when it comes to real life drawing. I’ve always had the will and compulsion to draw, but I was never really any good at it. As such, I belong to a rather small minority who produce my artwork, not with a drawing tablet and pen, but with keyboard and mouse.

W: You work with fairly large images - what sizes are typical, and do you need to do anything special in your workflow to handle them?

S: Since I work with digital art, my main focus has always been to create wallpapers for desktops. As such I started off making regular 16:9 images in 1920x1080 pixels (HD) which during the later years I have increased to 3840x2160 (UHD). That being said, this resolution and aspect ratio is only my final aim. Sometimes websites etc. will use some different aspect ratio which I would have to adhere to, and I found it easier to create my work with this in mind from the start, rather than try to add more to the image afterwards. Print on Demand sites like Displate for example create prints in a 1.4:1 ratio. So, the first parts of all my work is to create an image that would fit a Displate 1.4:1 print. My next step is to immediately make sure to add guides or framing to make sure I do most of my detail work inside the areas which will later become the 16:9 wallpaper. This way I get a resulting image that is a 16:9 wallpaper, but with the option to extend the image to a 1.4:1 without having to create anything new.

W: You told us that you only use a mouse (no graphics tablet). Why is that?

S: One of the major advantages with digital work compared to conventional is that you can undo steps. Whenever I need to draw a line or arc, I can literally have infinite amount of attempts to get it just right. I try once and see if I’m happy with the result, if not, I do a quick Undo and try again. I mentioned that I’m bad at actual drawing and ever since I came to accept that I’ve started considering the work I do less of “drawing”, and more of “Brute Forcing Pixels”.

I believe using a graphic tablet could be great if you like it and it’s a skill you already have, but I equally believe that achieving a similar skill and familiarity with a mouse isn’t much harder. I suppose an answer to this question in it’s simplest form would be: I do my work with keyboard and mouse, because it’s how I learned to do it and it’s what I feel comfortable with.

W: Your art uses a rather specific art style, could you tell us a bit about it?

S: I can try. The way I got into actual art was trying to replicate the art of the game Fallen London. They use rather simple shapes, fog and lights. Creating more of a Silhouette of their objects rather than actually drawing them. They also tend to use images with very few colors, which is also something I’ve taken with me. This way I was able to create expansive landscapes by placing layer after layer on top of each other. This results in an image that is hard to describe digitally but when people ask I tend to describe it as a Digital Paper Diorama, which I find very apt.

The way I tend to work consists of really just a few techniques, repeated for each of my “layers”

  1. I Create a new Layer Group and name it with a number. This layer group will contain everything I need for one segment of my image.
  2. I draw my silhouetted landscape on a layer in this group, this is my Base layer.
  3. I add a linear gradient ontop of the base layer and make it apply to only the layer below it by setting the clipping option of the layer to Clip to Background.
  4. I add another layer group inside the layer group. This one I name “Lights”. It consists of a base layer as well which are the shapes. but in order to easily be able to change the color of these lights I make another layer ontop of it and naming it Color, similarly setting it to only apply to the Lights layer below it. Once I feel satisfied with this layer I duplicate it and run a Gaussian Blur on it, making it create a glow bloom on the light sources.

I replicate this Group Layer structure for each of the “layers” I need in my images. I usually end up with around 10 to 20 of these groups in my images. And while the above list is the base of them, many become more advanced as I need things added.

Illustration by Sevenix demonstrating his layer organization
Illustration by Sevenix demonstrating his layer organization — all rights reserved

What’s important to me with this structure is the fact that it’s very easy to go back to it and edit it. At any point in my workflow I want to be able to determine that “This part here on layer 3 doesn’t really work with this great tree placement on layer 13”. At those points I don’t want there to be anything to stop me from going back to Layer 3 and change it to how I need it to be.

As I see it, the more non-destructive editing I do, the less I become tied down to decisions I made 10 hours back in my workflow.

This does create some rather large files, but as long as my computer can handle it I feel it’s a crucial part of my workflow.

Just for an example, the latest piece I did was a piece related to Remedy Entertainments Alan Wake games. The whole project took some 15h of work time and ended up with some 170 individual layers.

W: Is there any of your illustrations that hold a special place in your mind?

S: There are many, I could pick a lot out of my early work that were the point where I felt like I was actually happy with my results, and eager to show them off. But instead I will pick a piece I named Land of the Cherry Blossoms.

Land of the Cherry Blossoms, illustration by Sevenix (used during 3.0 release candidates)
“Land of the Cherry Blossoms”, illustration by Sevenix (used during 3.0 release candidates) — CC by-sa 4.0 International

This was probably the first real piece I did that was not simply based on other works. Up to this point I had made most my work by trying to replicate styles, testing out techniques and basing it on already existing lore. This piece was the first time I made something that felt like it was me putting something on the canvas that was all me.

There are a lot of inspirations in this piece of course. A classic Japanese setting in pink with Sakura trees are in no way mind-bending. But it was mine, straight out of my head, and piled on with all the thousands of small details I like adding to my work.

This was also one of my first pieces to become really popular on Print on Demand sites, providing me with visions of a potential future where I could actually do this for a job.

All of this. The positive feedback, the actual small amounts of money it brought in, not to mention the joy I felt with creating it, really put this piece as one of the most impactful of my digital artist career.

W: What do you think of the latest GIMP 3 series?

S: I really like it! There were some issues in the very earliest releases but they were fixed fast and I now moved over to using 3.0 for my regular, daily work. It looks much more modern to start, but what really wins me over are some long awaited features such as non-destructive editing.

W: Any specific feature in 3.0 that caught you by surprise?

S: Multi-layer selection. When I first heard about it being added to GIMP I had no idea how perfectly it would fit into my workflow. The ability to save selections allow me to easily select all of my “color” layers of the color I want to replace, then simply fill them all with my new color.

In the old workflow I had to change one layer first, then click every other layer one by one, repeating the same action on each of them. Even providing I was happy with the end result, this was still some 20 or 30 actions I had to do manually.

In 3.0 I can do all that in just 4 actions!

W: What are your favorite features or main reasons why you appreciate GIMP?

S: I enjoy the fact that it is open source and free. I say that as someone who would never have gotten into image editing or digital art unless I would have been able to simply download it and start trying.

W: What are the features you really wished GIMP had, or things you’d like to see improved or changed?

I’ve been using the 2.10 version since I started with digital art, and as such there was always the continuous rumors about a 3.0 version arriving sometime in the far future. It wasn’t till I actually got into the GIMP community that I realized that the 3.0 version really didn’t seem that far off at all. Ever since then I’ve followed the development and believe it or not, just about everything I wished for seems to be implemented in 3.0. Multi-layer select, Non-destructive editing. Just such a simple thing as the decision to change the default Paste functionality from the very beginner hostile Paste as Floating Layer was great.

There are of course things that still can improve, and definitely things I could see myself using if they were implemented. And if you forced me to mention one I think it would be something similar to Adobes Smart Objects. Being able to add another GIMP image into your current GIMP image.

W: Apart from contributing to the project with illustrations, you also help with moderation on Discord. Could you talk about it?

S: I was very happy when I found the Discord. GIMP is an advanced program and in that it can be very hard to navigate when you are new. Joining the community on Discord allowed me access to a quick way to throw out “stupid” questions whenever I got stuck. Issues that would usually provide me with enough frustration to simply stand up and walk away from my computer suddenly just took a quick question in a chat channel, a cool head, and some patience.

As for the moderation. I’m a person who enjoy finding things I like doing. And as I get better at them, I really enjoy helping others find that same joy.

In GIMP, most of the time when you get stuck it’s usually because of 2 or 3 common issues. Maybe you got a checkbox active that you shouldn’t. Maybe you accidentally set your layer to 0% opacity. Maybe you happened to set the Mode of your brush to Screen.

In either of those cases, you learn each time you figure it out. And with some help that goes much faster. As soon as I had gotten stuck enough times, I was able to help answer literally half the questions that were asked in the Discord channel. And people were always so appreciative. Most of the times those that get help there also end up posting the results of their work a bit later, and it’s awesome to know we were part of making that happen.

I say We because I’m in no way alone in this. While I was later promoted to a moderation role in the discord, the moderation itself has always been quite easy. What really impressed me is how popular the Discord server has become. These days it’s frequented by so many people that you hardly got a chance to answer questions unless you literally pounce at them the moment they appear.

My work as a moderator is a very easy one, all thanks to the absolute amazing community in there that crave to help others, improve their own work, or show off their latest creative works.

W: Any closing remarks for this interview?

S: Thanks for picking me for this. As I mentioned earlier, I love talking about and sharing my passions. Combining not only Digital Art but the general history and development of GIMP into the same interview could literally have me talking for ages.


A few links to know more about this artist:


Bonus: here is the alternative banner version of the GIMP 3.0 splash image, also contributed by Sevenix for irregular promotion of the software on the Microsoft Store (it is designed so that it can be cropped for various form factors and with space left on the left for the software’s name and some additional text):

Microsoft Store banner for GIMP 3.0.0 by Sevenix
Microsoft Store banner for GIMP 3.0.0 by Sevenix — CC by-sa 4.0 International
  •  

GIMP 2.10.36 Released

Par :Jehan

This stable release of GIMP comes with a few security fixes, so we advise you to update even if you feel like your current version works fine for you. Apart from the many bug fixes and security updates, it also provides new support for palette formats and a new generated gradient.

This news lists the most notable and visible changes. In particular, we do not list here bug fixes or smaller improvements. To get a more complete list of changes, you should refer to the NEWS file or look at the commit history.

New features and improvements

ASE and ACB palettes support

In addition to already supported palette formats, GIMP can now load palettes in the following formats:

  • Adobe Swatch Exchange (ASE)
  • Adobe Color Book (ACB)

This will make it easier to exchange palettes coming from other software.

New Gradient: FG to Transparent (Hardedge)

Everywhere a gradient option is available, the gradient list will now feature the additional “FG to Transparent (Hardedge)” option. It generates a gradient from the foreground color to transparency, with hard-edge transitions between the 2 colors.

In the Gradient Tool in particular, you can generate patterns very quickly with the “Repeat” option, alternating repetitive colored shapes with full transparency over a given background.

New FG to Transparent (Hardedge) gradient - GIMP 2.10.36

GIF: non-square ratio support

GIMP now loads GIF images containing the PixelAspectRatio header metadata by setting different resolutions per dimension, hence rendering the image correctly (instead of looking squashed on the screen).

Of course the option “Dot for Dot” in the View menu must be unchecked to see the image at its expected ratio.

More enhancements

A few more improvements were sprinkled across this update, such as:

  • Text tool: improved formatting behavior when selecting and changing text on canvas.
  • Theme: better feedback when hovering lock buttons (with a white frame) as well as when activating a lock (a small padlock shows up in the corner).
  • Help: The Help > User Manual submenu now features a “[Table of Contents]” link.

Security and bug fixes

Fixed Vulnerabilities

Four vulnerabilities were reported by the Zero Day Initiative in code for the following formats and fixed immediately:

  • DDS: ZDI-CAN-22093
  • PSD: ZDI-CAN-22094
  • PSP: ZDI-CAN-22096 and ZDI-CAN-22097

Additionally dependencies have been updated in our binary packages, and with them, some vulnerabilities recently reported in these libraries were fixed.

In any case, we recommend to update GIMP with the latest packages.

Broken Graphics Tablets with recent linuxwacom driver

We don’t usually mention bug fixes prominently but an ugly one happened recently after a change in the xf86-input-wacom (linuxwacom) driver, which provoked crashes of GIMP when using a graphic tablet on Linux.

Various distributions already downgraded the driver, or backported the fix, since a patch to the driver has been quickly pushed as well. Nevertheless if you are in the unlucky situation of using the non-patched driver, this version of GIMP also contains a workaround to the bug.

Release stats

Since GIMP 2.10.34:

  • 26 reports were closed as FIXED in 2.10.36.
  • 10 merge requests were merged.
  • 155 commits were pushed.
  • 20 translations were updated: Belarusian, Catalan, Chinese (China), Danish, Dutch, Georgian, German, Greek, Hungarian, Icelandic, Italian, Lithuanian, Polish, Portuguese, Romanian, Slovenian, Spanish, Swedish, Turkish, Ukrainian.

29 people contributed changes or fixes to GIMP 2.10.36 codebase (order is determined by number of commits):

  • 7 developers: Alx Sa, Jehan, Stanislav Grinkov, Jacob Boerema, Daniel Novomeský, Andras Timar and Gabriel Scherer.
  • 22 translators: Marco Ciampa, Sabri Ünal, Luming Zh, Anders Jonsson, Yuri Chornoivan, Martin, Rodrigo Lledó, Balázs Úr, Hugo Carvalho, Jürgen Benvenuti, Nathan Follens, Piotr Drąg, Alan Mortensen, Cristian Secară, Ekaterine Papava, Jordi Mas, Vasil Pupkin, Aurimas Černius, Danial Behzadi, Petr Kovář, Sveinn í Felli and dimspingos.
  • 3 resource creators (icons, themes, cursors, splash screen, metadata…): Stanislav Grinkov, Jehan, Daniel Novomeský.
  • One documentation contributor: Jehan.
  • 3 build or CI contributors: Jernej Simončič, Jehan and Stanislav Grinkov.

Contributions on other repositories in the GIMPverse (order is determined by number of commits):

  • babl, GEGL and ctx are actively developed, but no releases have accompanied this version of GIMP for once. So we will provide relevant statistics at next release.
  • The gimp-2-10 branch of gimp-macos-build (macOS build scripts) had 45 commits since 2.10.34 release by 1 contributor: Lukas Oberhuber.
  • The stable flatpak branch had 28 commits since 2.10.34, by 3 contributors (and a bot): Jehan, Daniel Novomeský and Hubert Figuière.
  • Our main website (what you are reading right now) had 165 commits since 2.99.16 release by 6 contributors: Sabri Ünal, Jehan, Bruno Lopes, lillolollo, Alx Sa and Robin Swift.
  • Our developer website had 17 commits since 2.99.16 release by 5 contributors: Jehan, Bruno Lopes, Aryeom, Jacob Boerema and Robin Swift.
  • Our 2.10 documentation had 138 commits since 2.10.34 release by 16 contributors: Andre Klapper, Jacob Boerema, Marco Ciampa, Anders Jonsson, Boyuan Yang, dimspingos, Yuri Chornoivan, Jordi Mas, Rodrigo Lledó, Martin, Alexander Shopov, Alx Sa, Balázs Úr, Piotr Drąg, Sabri Ünal and Tim Sabsch.

Let’s not forget to thank all the people who help us triaging in Gitlab, report bugs and discuss possible improvements with us. Our community is deeply thankful as well to the internet warriors who manage our various discussion channels or social network accounts such as Ville Pätsi, Liam Quin, Michael Schumacher and Sevenix!

Note: considering the number of parts in GIMP and around, and how we get statistics through git scripting, errors may slip inside these stats. Feel free to tell us if we missed or mis-categorized some contributors or contributions.

Team news and release process

Access rights to the git repository were recently given to Lukas Oberhuber (our maintainer for the macOS packages).

During the duration of GSoC, “reporter” rights on our Gitlab project were given to Idriss and Shubham, 2 of the GSoC contributors (the third one already had git access).

Robin Swift, who already helped with GIMP’s developer website has started working on a port of the main website (which you are reading right now) from Pelican to Hugo, a project which was long planned yet had stalled so far.

Finally we remind that we are actively looking for people helping us test packages before releases (especially for GIMP 3.0 and forward). This will help make GIMP releases much more robust. Since the last release, Anders Jonsson and Mark Sweeney were added as Flatpak testers. We also have several testers of the Windows packages, yet we still have no testers for macOS. Whatever your OS and the architecture you test on, we welcome your feedback to detect issues early! Together, the community is stronger! 💪

Around GIMP

Mirror news

Since our latest news, 4 new mirrors were contributed to GIMP by:

  • Silicon Hill, student club of the Czech Technical University in Prague, Czech Republic;
  • Lancaster-Lebanon IU13, an organization comprised of more than 20 public school districts and several non-public, parochial, and charter schools in Lancaster, Pennsylvania, USA;
  • the Moroccan Academic and Research Wide Area Network (MARWAN) in Rabat, Morocco;
  • Jing Luo, in Tokyo, Japan.

This brings us to a total of 45 mirrors so far, from all over the world.

Mirrors are important as they help the project by sharing the load for dozens of thousands of daily downloads. Moreover by having mirrors spread across the globe, we ensure that everyone can have fast download access to GIMP.

Book news

Sabri Ünal continued their 📚 bibliographic research, adding so many published books that we decided to completely reorganize the books as a structured file database, allowing us to easily process the information or change the page styling separately from the data.

This also triggered us to split the books page into 2:

As book descriptions don’t always clearly state the version of GIMP they pertain to, we used the release date of GIMP 2.10.0 (April 27, 2018) as the split date.

Last but not least, this new structure allows us to easily generate statistics, which we now show at the bottom of the books pages. At least 44 books were published after GIMP 2.10.0 release, and 305 were published before it. Therefore we are currently listing a grand total of 349 books about GIMP in 17 languages!

We remind everyone that we welcome book additions. If you know (or even are the author) of a not-listed-yet book about GIMP, please report the same information as other books in the list. Thanks!

Downloading GIMP 2.10.36

You will find all our official builds on GIMP official website (gimp.org):

  • Linux flatpaks for x86 and ARM (64-bit)
  • Universal Windows installer for x86 (32 and 64-bit) and for ARM (64-bit)
  • macOS DMG packages for Intel hardware
  • macOS DMG packages for Apple Silicon hardware

Note: macOS packages are a bit late but will come shortly.

Other packages made by third-parties are obviously expected to follow (Linux or *BSD distributions’ packages, etc.).

What’s next

I believe it might be the next to last release in the 2.10 branch, though of course, this is still to be confirmed. What may happen in real life does not always align with plans.

In the meantime, we are working harder than ever to release GIMP 3.0. You will hear shortly about this in our next development release.

Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger! 💪🥳

  •  

GIMP now on Windows for ARM (experimental)

Par :Jehan

As architecture platform usage widens, Windows on ARM (64-bit) is now a thing. So we decided to support experimentally GIMP for Windows on ARM!

With the newly published revision 2, our universal installer of GIMP 2.10.34 for Windows (as found on our downloads page) will auto-detect the running platform and install the ARM build when relevant.

Thanks in particular to our Windows packager, Jernej Simončič, for his continuous work!

Future work

The “experimental” qualificative for this new support is for the following reasons:

  1. It is not as widely tested. We are aware of some issues already and hope that releasing this experimental build will help us get more feedback.
  2. Only Jernej has a machine with Windows on ARM so far. In particular none of the developers have such hardware, as far as we know. So we don’t expect to be able to fix issues for Windows/ARM as fast as for other supported platforms.
  3. Last, but not least, this additional build is not set up yet in our continuous integration platform, which means we cannot discover appearing issues as thoroughly and quickly as for other architectures, nor can we automatize builds as transparently as we wish.

How you can help

Aside from reports and patches, we really need to set up a Windows/ARM machine in our continuous integration platform. Indeed this is considered a blocker and may be cause for abandoning the experimentation when we release GIMP 3 since we don’t want to backtrack and get back to manual builds done by a single contributor on their personal machine for the 3.0 series.

This means that we are looking for anyone willing to help us set up a machine with Windows on ARM and configure it as a runner on our Gitlab project.

Because of obvious security requirements, such a volunteer would need to have sysadmin experience, willing to commit themselves in the long run (let’s not leave a Windows machine with holes on the internet) and have had some experience in FLOSS contributions.

It might also be interesting to coordinate with other cross-platform Free Software projects to share the administration burden of a CI runner which we can use together to build for Windows/ARM.

If you are interested, please get in touch on IRC or in the dedicated report.

  •  

GIMP 2.99.16 Released: Wilber Week 2023 edition!

Par :Jehan

Closer than ever to a release candidate for GIMP 3.0, we introduce the latest development version: GIMP 2.99.16!
This news covers some of the more noteworthy or interesting parts of this update and we are very happy to be able to showcase these.

GIMP 2.99.16: splash screen
New development splash screen, by Aryeom - GIMP 2.99.16

Note: the fun story behind this splash screen is Aryeom molding a pizza dough Wilber on the first evening at Wilber Week. The oven-cooked dough stayed with us during the whole stay. This release was dubbed the “Wilber Week 2023 edition” as a homage to our very successful contributor meetup.

This news lists the most notable and visible changes. In particular, we do not list here bug fixes or smaller improvements. To get a more complete list of changes, you should refer to the NEWS file or look at the commit history.

GTK+3 port officially done

GIMP 3.0 has been known as the GTK+3 port version, so you will be happy to read that this port is finally over. To be fair, we still have a few minor deprecation warnings here and there, but nothing like the hundreds we used to have.

GimpAction infrastructure

Our last big work was to port how “actions” are handled, which in GTK vocabulary means shortcuts, their mechanism, but also how menus are handled and how generic widgets can be quickly assigned shared action code. Starting from GTK+3, actions moved to GLib (GtkAction became GAction) while losing a lot of features (everything user-facing basically, i.e. labels, descriptions, icons, and so on) or broken apart (the concept of shortcut itself stayed in GTK).
Therefore we had to reimplement the whole thing as a wrapper around GAction, called obviously GimpAction, because for us, these user-facing features are major parts of what makes an action (especially as we do a lot of GUI and code generation so things like labels or icons are not to be associated to a widget — be it a button, a menu item or anything else — but to the action assigned to this widget, for easy and generic reuse).

We also had to wrap a bunch of other widgets, such as our own menus (mostly because menus generated from menu models don’t have tooltips anymore in GTK+3, yet we make extensive use of tooltips) and menu models (GimpMenu and GimpMenuModel), our own toolbar and menu bar (GimpToolbar and GimpMenuBar) and more.

It took me about 2 months to finish while also having to take care of other code, maintenance and usual bug fixes. Boring and exhausting, but this is now done! 😅

It also gives us a whole new world of possibilities as we added new concepts which we wanted for a long time, such as the ability to associate a short and long label to an action (e.g. when it’s used in a contextual interface such as a menu vs. when it’s used without context, such as the action search). It is also the path for planned future improvements (e.g. for a future customizable toolbar).

We still have a bit more work to do to get our new menu and action code exactly how we want it, but we are in a good enough state to showcase it. It won’t feel very different to most of you (and you may also find issues), but not feeling too different was the point too.

Now there are much more immediate improvements which are worth noting.

Multiple shortcuts per action

The new Glib/GTK+3 actions make it possible to assign several shortcuts for a single action. For the time being, the shortcut dialog doesn’t allow you to do so, yet we already use this ability internally for default shortcuts. For instance number keypad keys are not the same as the ones from the number key row so we used to create a duplicate action doing the same thing to support both (because for most people Ctrl-1 should work the same whether from keypad or top row). Now we can just assign both variants to a same action.

As another example, it is now possible to support the special semantic media key (such as media key Copy, Cut and Paste which can be found on some keyboards).

An updated shortcut dialog allowing you to set your own multiple shortcuts might not come for GIMP 3.0, though hopefully not too long after.

Action Search improvements

Now that we have our own action wrapper, we made so that it also tracks its own menu position, so that we can show this menu path in the action search dialog. This will help people who prefer menus to better find their ways.

Action search dialog in GIMP 2.99.16
Action search dialog now showing menu paths - GIMP 2.99.16

You may also notice a small “Manual” 📓 icon in this screenshot. Clicking it will open the manual page for a given action (if no help section exists for this specific action yet, you will be redirected to the action search help page).

Alternatively, hitting the F1 key will open the help page of the selected action.

Improved GEGL operations’ GUI integration

GEGL is our image processing engine. Filters are implemented as separate modules, which we call “operations”. While it is released with a long list of default operations, third-party developers can implement their own filters, hence benefitting from automatic dialog generation, on-canvas live preview, curtain preview, preset saving, previous use settings history and more.

GEGL has been a major component since GIMP 2.10, yet we still needed specific code to place GEGL operations in menus.
As for third-party filters developers, they had to either implement a bogus plug-in to wrap their GEGL operation, or settle for being only visible in the long list of filters shown inside the GEGL operation tool.

Well this has changed as GEGL filters now have easy access to menus in their own right, just like plug-ins do.

From now on, GIMP reads the GEGL key "gimp:menu-path" to add an operation in menus. For instance, say that I wrote an artistic filter to stylize an image and I want it to be under the submenu Filters > Artistic. So my operation code could contain the following code:

  gegl_operation_class_set_keys (operation_class,
                                 "name",           "Jehan:my-style",
                                 "title",          _("My Super Cool Style"),
                                 "description",    _("Stylize an image the way I like it"),
                                 "gimp:menu-path", "<Image>/Filters/Artistic",
                                 NULL);

And here it is:

Easily adding a third-party filter to menus in GIMP 2.99.16
Easily adding a third-party filter to menus - GIMP 2.99.16

GIMP will generate automatically the GUI according to the properties declared in your operation.

Of course, you can also create your own menu folders. Say I create a bunch of filters which we use specifically for our movie project, I could create a submenu "<Image>/Filters/ZeMarmot" (or even a top-level menu. You’ll notice the “Girin” menu in my screenshot which is where we install our custom plug-ins already).

We will use this to simplify core GIMP code as well, even though for now, only two new GEGL filters use this feature.

ℹ️ About GEGL operation namespaces: you may notice that I prefixed my hypothetical filter name with “Jehan:”. This is a way to “namespace” your filters with a unique name and avoid clashes if someone were to implement a filter with the same name. Choose this namespace wisely, and in particular do not use “gegl:” or “svg:” namespaces which are reserved for GEGL core operations (and might even be forbidden some day to third-party operations).

The second big improvement is that your custom filters will now appear in the action search (/ key by default), whether or not you added them to a menu. It allows searching and running them very easily!

Third party filters are now searchable - GIMP 2.99.16
Third party filters are now searchable - GIMP 2.99.16

Tools

Text tool

While the on-canvas editor of the text tool is very practical, it was sometimes a bother as it is in your way. There are cases when you’d like to be able to see the bare canvas while editing text.

It is now possible thanks to the new option “Show on-canvas editor” to toggle its visibility.

Hiding the on-canvas text editor - GIMP 2.99.16
Hiding the on-canvas text editor - GIMP 2.99.16

Align and Distribute tool

The tool had been fully reworked in GIMP 2.99.14.

In this version, we modified the option “Use extents of layer contents” so that it applies to the alignment reference as well (not only the target objects).

Unified Transform tool

A patch was submitted to make the Transform Matrix selectable in the tool’s on-canvas dialog. This makes it easier to reuse the matrix in other software (while first testing in GIMP for immediate preview of the transformation, then copying and pasting the matrix).

Space Invasion

Space Invasion is our project to ensure color correctness everywhere we show or use colors, choose proper color defaults, propose relevant color options…

In this version, some work was done in internal code which was still assuming sRGB input or output and was used in a few situations. It is now possible to choose more easily out-of-sRGB foreground and background colors, and the Color Picker tool shows color values from the proper image space.

Still in the Color Picker tool (and the Sample Points dockable), a new “Grayscale (%)” display mode was added, which shows the pixel’s Grayscale value if the picked image were converted to Grayscale mode.

There is still much more work-in-progress regarding these interfaces, such as ensuring the colors are correctly displayed in the various color boxes (not only on canvas), that we get reasonable behavior on shared color widgets when switching from an image’s color space to another, and so on.

Also we plan to become more explicit on the color space currently in use on all these shared interfaces where you can choose or show colors (Colors dockable, Foreground/Background colors, Color Picker tool, Sample Points dockable…). This is going to be one of the biggest parts of the next development release.

Graphical User Interface

New option “Merge menu and title bar”

In the Preferences dialog, Image Windows settings, you will find a new checkbox titled “Merge menu and title bar”. This is basically an option to switch to Client Side Decoration for the image windows, which mostly means that the menu will be merged inside the title bar, hence saving vertical space.

Preferences settings
Preferences settings “Merge menu and title bar” - GIMP 2.99.16

Note: this option doesn’t work for macOS which always has its own platform-specific menu style.

Since the header bar is set to be hidden when maximizing, if you checked “Show menubar” for the “Default Appearance in Fullscreen Mode” in Preferences > Image Windows > Appearance, the menu will be temporarily moved out of the title bar. This makes the menu visible (if relevant option is checked, which is the default) even in fullscreen mode.

Now we know that client-side decoration is quite a controversial feature. You find people who love this with all their might as much as the opposite (in particular because you lose window styling consistency since decorations are not handled by the window manager anymore). Moreover we are being told that in some specific cases, the system refuses to drop its own window decoration and you may end up with 2 title bars (one drawn by the system and one by GIMP).

For these reasons, this option is disabled by default.

Themes

The dark variant of the Default theme has been reworked because it was a bit too dark. The older version has been moved temporarily as a new theme titled Darker, though we aren’t sure if we will keep it.

During our last in-person developer meeting, where this work happened, the concept of a “High Contrast” theme was also evoked. At some point, we even discussed the possibility to implement settings for color customization of the theme.

Now we are not sure which will happen for GIMP 3.0. It will really depend on whether we get more theme contributions by the time we release.

Fill and Stroke selection/path improvements

The “Stroke/Fill Selection Outline” or “Stroke/Fill Path” dialogs used to propose to stroke (respectively fill) either with a “Solid color” (in fact the foreground color) or with a “Pattern”. We split the “Solid Color” into “Foreground color” and “Background color”, so that you don’t have to constantly switch their positions.

Furthermore the “Stroke Selection” and “Stroke Path” dialogs in particular have been reorganized in a stack switcher making the 2 options “Line” and “Paint tool” easier to use.
As a result of saving dialog space, we don’t hide anymore the “Line Style” settings under an expander, in order to show more prominently the line rendering options.

Reorganized Stroke dialogs - GIMP 2.99.16
Reorganized Stroke dialogs - GIMP 2.99.16

Middle Gray (CIELAB)” layer fill option

When creating a new image or a new layer, there is this “Fill with” field where you can choose the created layer color among the FG/BG colors, white, black, transparency or a pattern. We added “Middle Gray (CIELAB)” which corresponds to 50% of perceptual lightness (the L* of CIELAB or CIELCh), or again 18.42% luminance.

Though the concept of “Middle Gray” may have different values depending on the chosen definition, this is one of the most common, considered as perceptually halfway between darkness and light to the average human observer’s eye.

File Formats

A major chunk of the work on file formats is from Alx Sa (known as Nikc in previous news), who has a knack for adding support for various formats and improving the existing ones. And that’s awesome work so bravo Alx! 👍

FITS

FITS is an image format most commonly used in astronomy.

While we used to embed our own code for FITS support, we now ported it to cfitsio, a library maintained by the NASA.

This allows us to import compressed FITS files (GZIP, HCOMP, PLIO, RICE) in 8/16/32-bit and float/double precision. As a general rule, it will greatly improve our support level for this format.

Since we now use an external library, FITS support becomes optional (especially relevant to Linux distribution packages; on our own packages, it is always present).

Additionally we would like to thank Siril (the astronomical image processing tool) whose developers exchanged with us to improve the support in GIMP.

PSD (and a bit of TIFF and JPEG)

Clipping paths can now be imported from and exported to PSD files!

If your image has any path, a PSD export dialog will propose you to “Assign a Clipping Path”, and a combo menu will allow you to select the path to use.

Exporting a clipping path - GIMP 2.99.16
Exporting a clipping path - GIMP 2.99.16

This clipping path can be used in programs which support clipping paths, e.g. Scribus (desktop publishing) already lists all the paths as usable as clipping path yet will highlight in green the selected clipping path hence allowing to better tag the path you want to use for this purpose.

Using a clipping path in Scribus - GIMP 2.99.16
Using a clipping path in Scribus (note in particular the path highlighted in green) - GIMP 2.99.16

Similarly, on import, any clipping path information stored in the PSD will be reused as default for export.

Another interesting change is that on import, if some PSD features are not supported, a compatibility warning dialog will be displayed, listing all the missing features:

PSD compatibility warnings when importing a PSD - GIMP 2.99.16
Compatibility warnings when importing a PSD - GIMP 2.99.16

This way, you can make an informed decision when working with exchanged PSD files.

Note that the export dialog also has a new “Compatibility Notice” regarding legacy layer modes, as some people have noted that they have better compatibility when exporting PSDs and reopening them in Photoshop.

Last but not least, a new PDB procedure "file-psd-load-metadata" was created to allow other plug-ins to delegate PSD metadata loading to the PSD plug-in. Indeed a common usage in various file formats is to self-extend by storing custom metadata in Photoshop proprietary metadata format. We already implemented 2 such usages:

  • TIFF images can contain image-level proprietary resources in the TIFFTAG_PHOTOSHOP metadata, as well as layer-level resources (e.g. PSD layers instead of TIFF pages) in the TIFFTAG_IMAGESOURCEDATA metadata. GIMP now supports both of these and will load what it supports.
  • JPEG images can contain PSD metadata on image-level only, such as paths. These will now be loaded as well.

Same as in the PSD plug-in itself, if some of these metadata are unsupported, a compatibility dialog will be raised.

These will enable a whole new world of support for JPEG and TIFF (relative to the specific proprietary PSD resources) as they will sync to the support level of the PSD plug-in instead of duplicating code.

JPEG

Additionally to the various metadata-related improvements, the option “4:2:2 horizontal (chroma halved)” got renamed to “4:2:2 (chroma halved horizontally)” and the option “4:2:2 vertical (chroma halved)” to “4:4:0 (chroma halved vertically)”.

Research indicates these to be the most usual notations for these options these days.

JPEG-XL

We added initial support for CMYK(A) export: Key and Alpha data is saved in extra channels and the simulation profile is saved as well.

Per the specification developers, the format does not support ‘naive’ CMYK conversion, so a profile is required for export. The option “Export as CMYK” will be disabled if no CMYK simulation profile is set.

DDS

We enabled OpenMP support when available on the build machine. This means in particular that parallel processing is enabled, which should improve processing speed in some cases.

New image format supports: PAM, QOI, Amiga IFF/ILBM, DCX

We recently added both import and export support for the following formats:

  • PAM (grayscale and RGB, with or without alpha): essentially PPM files with a different header format and alpha/16 bit support.
  • QOI: the funnily named “Quite OK Image” format for lossless image compression of color raster images (8-bit per channel), with or without an alpha channel.

We added import-only support for the following formats:

  • Amiga IFF/ILBM: initial support for importing indexed ILBM, Amiga PBM, and ACBM images.
  • DCX: containers that store up to 1023 PCX files.

Now it may seem useless to support weird, old if not sometimes forgotten formats but this is actually important (at least the import ability). This can be useful for archiving, being able to display old images one may have created years ago, reusing and work on existing data.

Ultimately GIMP aims at being able to load any format which has existed under the sun!

Note: some of these new supports might not be yet in our official packages (e.g. Amiga IFF/ILBM), though should be soon.

Plug-in API

The development interface for plug-ins continues to evolve towards its final state, though it is still one of the last big worksites now that the GTK+3 port is over.

Resources data get their own class

GIMP plug-ins used to refer to various resources (brushes, fonts, gradients, palettes, patterns, etc.) by name. We moved into creating specific classes (GimpBrush, GimpFont, GimpGradient, GimpPalette and GimpPattern respectively) in libgimp for these data, under a common parent class GimpResource. This moves this part of the API to an object-oriented interface (same as other existing types for images, layers…) which will be a lot nicer for bindings.

Moreover we move to unique IDs for each resource, which is not name-based. While this part is still mostly libgimp-side, we plan on making names less of an identifier in core code as well. This indeed creates name clashes much too easily, especially if you exchange data with other people (it is very easy to find custom brushes or fonts made by different people and using the same name). We are working on making GIMP much more robust to these kind of real-life name clashes.

Plug-in localization improved

Some work was done on reviewing our plug-in localization rules. While we used to have the menu strings localized by the core application itself, the rest was localized by the plug-in process. This has always been confusing to third-party developers (“Should I use _() or N_() to translate strings?”). Now it’s very simple: the plug-ins takes care entirely of their own localization, hence always send already translated strings to the core process. It also means that changing GIMP’s language settings triggers a reload of all plug-in registrations (to update strings).

Apart from simplifying the rule, it also prevents a possible clash for the gettext catalog names (in case 2 plug-ins were to use the same catalog name, it doesn’t matter anymore as each process handles their own).

And finally, even though we still recommend gettext (we also provide infrastructure functions for plug-ins to easily set up plug-in localization with gettext), it make third-party plug-in developers freer to choose their own localization infrastructure if they prefer something else.

All these changes are also part of a longer term work to move plug-ins to self-contained extensions which will be easily sharable and installable.

More specialized plug-in argument types

While GStrv was added in GIMP 2.99.10, it was not serialized into config files (our infrastructure to store plug-in settings across runs), until this version.
A very cool first usage of this ability is for the Script-fu console which now remembers the history of run commands.

Moreover plug-ins now have access to GBytes arguments for all the cases where we were misusing arrays of unsigned integers on 8-bit instead, in order to represent binary data (or more generally custom data, which can be anything, from text to binary). The GimpUint8Array type has been removed as a possible plug-in argument type and all its uses replaced.

And more…

More functions were added, for instance to enhance the capabilities of the GUI generation for plug-ins. Some encoding issues were handled and various functions’ annotations and usage have been clarified.

For a more exhaustive list of functions added, removed or changed, we advise to look at the NEWS file.

GEGL, babl

As usual, this version of GIMP is accompanied by new versions of babl and GEGL:

babl 0.1.104 and 0.1.106 improved the LUT code and provide faster startup by caching balanced RGB to XYZ matrices.

GEGL 0.4.44 and 0.4.46, in addition to the usual bug fixes, started to add the "gimp:menu-path" key to some operations, improved gegl:ff-load, gegl:ff-save to make them build with FFmpeg 6.0 (though gegl:ff-save still doesn’t work properly with this version of FFmpeg), and added 2 new operations:

gegl:chamfer
New operation in workshop that use gegl:distance-transform and gegl:emboss, based on LinuxBeaver’s research into modeling different bevels with combinations of blurs.

Applying gegl:chamfer to text for a bevel effect - GIMP 2.99.16
Applying “gegl:chamfer” to text for a bevel effect - GIMP 2.99.16
gegl:local-threshold
Neighborhood aware and optionally antialiased thresholding of an image. The operation is equivalent to doing an unsharp mask with a large radius, followed by scaling the image up applying threshold and scaling down by the inverse of the scale up factor.
If you have a photo and you want to make a decent highlights vs shadows threshold it gives a lot better results than the built-in threshold. It finds per-pixel adapted threshold levels for a gaussian average from the neighborhood radius. In addition it permits creating anti-aliased threshold masks (if the radius is set to 0, the behavior is similar to the built-in threshold op).
From a UX point of view, the only thing missing for this new filter taking over the current threshold filter is specifying the rgb⇒gray conversion, then the additional parts of the UI would be options for threshold.
Beware though that antialiasing is achieved by scaling the input up and down - so high settings make it churn with relatively little quality gain.

Left: original; top-right: current Threshold filter; bottom-right: new Local Threshold - GIMP 2.99.16
Left: original; top-right: result with current Threshold filter; bottom-right: result with new Local Threshold - GIMP 2.99.16

Release stats

Since GIMP 2.99.14:

  • 105 reports were closed as FIXED in 2.99.16.
  • 123 merge requests were merged.
  • 1115 commits were pushed.
  • 25 translations were updated: Basque, Bulgarian, Catalan, Chinese (China), Chinese (Taiwan), Danish, Esperanto, French, Georgian, German, Greek, Hungarian, Icelandic, Italian, Lithuanian, Persian, Polish, Portuguese, Romanian, Russian, Slovenian, Spanish, Swedish, Turkish, Ukrainian.

67 people contributed changes or fixes to GIMP 2.99.16 codebase (order is determined by number of commits):

  • 34 developers: Jehan, Alx Sa, Michael Natterer, Jacob Boerema, Simon Budig, Luca Bacci, Niels De Graef, Daniel Novomeský, Lloyd Konneker, Øyvind Kolås, Lukas Oberhuber, Ian Martins, programmer-ceds, Andras Timar, Andre Klapper, Carlos Garnacho, Idriss Fekir, Jordi Mallach, Sabri Ünal, Shubham, Stanislav Grinkov, Stephan Lenor, Venkatesh, kotvkvante, lapaz, lillolollo, programmer_ceds, valadaptive, 依云, Anders Jonsson, Jordi Mas, Richard Szibele, Tomasz Golinski and Florian Weimer.
  • 31 translators: Martin, Yuri Chornoivan, Ekaterine Papava, Alexander Shopov, Hugo Carvalho, Jordi Mas, Sabri Ünal, Rodrigo Lledó, Asier Sarasua Garmendia, Anders Jonsson, Alan Mortensen, Cristian Secară, Sveinn í Felli, dimspingos, Alexandre Prokoudine, Balázs Úr, Chao-Hsiung Liao, Piotr Drąg, Tim Sabsch, Kristjan SCHMIDT, Luming Zh, Marco Ciampa, Alexandre Franke, Aurimas Černius, Balázs Meskó, Christian Kirbach, Danial Behzadi, Emin Tufan Çetin, MohammadSaleh Kamyab, Zurab Kargareteli and حجت‌اله مداحی.
  • 10 resource creators (icons, themes, cursors, splash screen, metadata…): Jehan, Michael Natterer, Alx Sa, Stanislav Grinkov, Lloyd Konneker, Ville Pätsi, Aryeom Han, Daniel Novomeský, Anders Jonsson and Mark.
  • 5 documentation contributors: Jehan, Lloyd Konneker, Anders Jonsson, Corey Berla and Michael Natterer.
  • 15 build or CI contributors: Jehan, Alx Sa, Jacob Boerema, Michael Natterer, Daniel Novomeský, Lloyd Konneker, Michael Schumacher, Stanislav Grinkov, Niels De Graef, Simon Budig, Lukas Oberhuber, Florian Weimer, Luca Bacci, lillolollo and Jordi Mallach.

Contributions on other repositories in the GIMPverse (order is determined by number of commits):

  • 1 contributor to babl 0.1.104 and 0.1.106: Øyvind Kolås.
  • 13 contributors to GEGL 0.4.44 and 0.4.46: Øyvind Kolås, Marco Ciampa, Martin, Asier Sarasua Garmendia, Ekaterine Papava, Piotr Drąg, Yuri Chornoivan, Alexandre Prokoudine, Jan Tojnar, Rodrigo Lledó, Sabri Ünal, Tim Sabsch and dimspingos.
  • 2 contributors to ctx since 2.99.14 release: Øyvind Kolås and Carlos Eduardo.
  • 3 contributors to gimp-macos-build (macOS build scripts) since 2.99.14 release: Lukas Oberhuber, Kyungjoon Lee and Mingye Wang.
  • 2 contributors (and a bot) to the beta flatpak: Jehan, Daniel Novomeský and flathubbot.
  • 7 contributors to our main website (what you are reading right now) since 2.99.14 release: Jehan, Sabri Ünal, Jacob Boerema, Aryeom Han, Michael Schumacher, lillolollo and Tim Spriggs.
  • 9 contributors to our developer website since 2.99.14 release: Jehan, Bruno Lopes, Jacob Boerema, Krek Krek, Mark, Alx Sa, GoldenWon, Michael Schumacher and kotvkvante.
  • 16 contributors to our 3.0 documentation since 2.99.14 release: Andre Klapper, Jacob Boerema, Anders Jonsson, dimspingos, Yuri Chornoivan, Jordi Mas, Nathan Follens, Tim Sabsch, حجت‌اله مداحی, Alexander Shopov, Balázs Úr, Danial Behzadi, Hugo Carvalho, Martin, Piotr Drąg and Rodrigo Lledó.

Let’s not forget to thank all the people who help us triaging in Gitlab, report bugs and discuss possible improvements with us. Our community is deeply thankful as well to the internet warriors who manage our various discussion channels or social network accounts such as Ville Pätsi, Liam Quin, Michael Schumacher and Sevenix!

Note: considering the number of parts in GIMP and around, and how we get statistics through git scripting, errors may slip inside these stats. Feel free to tell us if we missed or mis-categorized some contributors or contributions.

Team news and release process

Our release procedure is getting much better at each new version. I would like to thank our testers who did an awesome job raising the few release-blockers we had for GIMP 2.99.16, as well as the people who followed up on these issues, handled technical responses, created or updated packages, and more.

In particular, a huge thank you to (by alphabetical order) Alx Sa, Anders Jonsson, Daniel Novomeský, Hubert Figuière, Jacob Boerema, Liam Quin, lillolollo, Luca Bacci, Lukas Oberhuber, Mark Sweeney, Sevenix, ShiroYuki_Mot and Uzugijin!

As a reminder, if anyone is willing to help us improve GIMP by participating to release testing, please open a report on the developer website tracker with the following information:

  • The Operating Systems (Linux, Windows, macOS, *BSD…) you will be testing on, with details if possible (which Linux distribution and version? Which version of Windows or macOS?…).
  • The architectures you will be testing on (x86, ARM… 32 or 64-bit).
  • If you will test our pre-built packages or from source (custom builds).

Then we will notify you in the next release testing phase (stable and development releases).

Our expectations from testers:

  • Make sure you receive Gitlab notifications when your nickname is cited (we advise to set your Global notification level to “Participate” or “On mention”).
  • Follow the release report to know what’s happening and when you are needed.
  • Release reports are not a place where we teach people how to use basic functions of a computer. Testers don’t have to be developers, but they have to be able to follow basic technical guidelines, give feedback more useful than “it doesn’t work” and be able globally to interact with developers.
  • Be nice and welcoming: everyone here is a volunteer, testers as much as developers. This is Community, Free Software, not a soulless job. 🤗

Around GIMP

Mirror news

The Fremont Cabal Internet Exchange contributed a new download mirrors to distribute GIMP, based in Sheffield, South Yorkshire (United Kingdom). With 11 mirrors out of 41 in total, they are clearly our biggest mirror sponsor! Thanks FCIX!

Mirrors are important as they help the project by sharing the load for dozens of thousands of daily downloads. Moreover by having mirrors spread across the globe, we ensure that everyone can have fast download access to GIMP.

Book news

Sabri Ünal did an awesome bibliographic research, added 39 books and updated even more in our “Books About GIMP” page. We won’t list all the changes as there are just too many, though you can read the detailed merge request descriptions (!93 and !98).

We are starting to get a more up-to-date books page with recent publications. Nice! 📚🤓

We remind everyone that we welcome book additions. If you know of a not-listed yet book about GIMP, please report the same information as other books in the list. Thanks!

Downloading GIMP 2.99.16

GIMP 2.99.16 is only available for Linux and Windows for now. Our macOS packaging is currently blocked by our inability to notarize the packages until the GNOME Foundation fixes their Apple account. We will keep you updated.

Update from July 11: GIMP 2.99.16 is now avalaible on Linux, Windows and macOS!

You will find all our official builds on GIMP official website (gimp.org):

  • Linux development flatpak
  • Windows installer
  • macOS DMG packages for Intel hardware
  • macOS DMG packages for Apple Silicon hardware

Other packages made by third-parties are obviously expected to follow (Linux or *BSD distributions’ packages, etc.).

What’s next

Though the roadmap shows a few more unfinished items, the 2 biggest workfields to come for the next release are the API redesign — which is well on its way but is important enough that we’ll need to really look into details —, and the Space Invasion project (making sure every existing color-related feature is reliable).

As we are really reaching the “stabilization” stage in our development, while our requirement rule was based on “Debian testing” (whichever it was), we recently froze our dependency bumps on the just released Debian 12 (bookworm). It means that we won’t bump any minimum requirement over what is in Debian 12 (except for optional dependencies, and even only so as exceptional cases and with very good reasons). This is because we plan to release soon enough that we need to make sure GIMP can be packaged on all reasonably recent distributions.
Of course, for our own packages (Windows, macOS and Flatpak), we will always use the latest dependency versions anyway.

Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger! 💪🥳

  •  

Wilber Week 2023: report

Par :Jehan

With the unfortunate health situation of past years, GIMP team had not been able to meet since 2019. This affected the software evolution (commit numbers have been divided by about half!) because for many of us, GIMP is more than a software: it’s people, it’s a community. So motivation shrank by lack of social encounter.

Therefore we are glad to announce the return of Wilber Week: our week-long meeting of GIMP contributors (started back in 2017 as a companion to the Libre Graphics Meeting).

A month ago, we had our second Wilber Week in Amsterdam!

Wilber Week 2023: GIMP team
Wilber Week 2023: GIMP/Inkscape contributors (from left to right: Niels, Mitch, Simon, Liam, Ville, Aryeom, Jehan, Øyvind, Chris and Schumaml) — photo by Niels, CC by-sa

Setting up

This year, 10 GIMP contributors showed up, by alphabetical order:

  • Aryeom: ZeMarmot‘s film director, 11-year contributor, graphics contributor, UI design, alpha-tester…
  • Carlos Garnacho: long-time contributor and advisor for anything input device, GTK or GNOME related, contributor and maintainer for various important bricks in GNOME.
  • Jehan: myself, 11-year contributor, GIMP co-maintainer, ZeMarmot technical side…
  • Liam Quin (demib0y): 15+-year contributor, community helper, working to keep GIMP community friendly and welcoming…
  • Michael Natterer (mitch): 26+-year contributor, my genius co-maintainer…
  • Michael Schumacher (schumaml): 20+-year contributor, administrator, brilliant triager, community helper and more…
  • Niels de Graef: 4+-years contributor, big contributor as well in GNOME, GTK and more…
  • Øyvind Kolås (pippin): 20+-year contributor, GEGL maintainer, digital media toolsmith…
  • Simon Budig (nomis): 25+-year contributor, cares about keeping GIMP a nice community forever…
  • Ville Pätsi (drc): 22+-year contributor, photographer, graphics contributor…

Additionally we invited 2 Inkscape contributors. What started as a simple toot on Mastodon transformed into a private discussion with Martin Owens from Inkscape who was hoping to discuss color management with us. So we invited them to enjoy our hacking retreat and discuss further!

In the end, Marc Jeanmougin, Inkscape developer, and Chris Rogers, graphics contributor, spent the week with us!

We were all lodged in a fricking century-old sailing boat. No joke! That was an insanely cool place where we could start hacking from day one!

Wilber Week 2023: hacking in a sailing boat
Wilber Week 2023: hacking in a sailing boat (from left to right: Schumaml, Mitch, Jehan, Carlos, Marc) — photo by Niels, CC by-sa

About the city itself, let me state for the record that, as a vegan and pro-soft transportation, Amsterdam seems like a very nice place to live in!

Blender Foundation headquarters

The Blender Foundation gracefully lent workshop and meeting rooms to our team.

Wilber Week 2023: GIMP contributors entering Blender headquarters
Wilber Week 2023: GIMP contributors entering Blender headquarters — photo by Schumaml, CC by-sa

Of course, having “desks” was not our real reason to choose this office. It was very cool to meet Blender teams. We were also able to have various interesting discussions. Quite notably, Nathan Vegdahl from Blender was extremely welcoming and showed us a lot of very cool stuff!

As was expected, we discussed about color management, in particular in Wayland as Sebastian Wick, major contributor for color management in Wayland was pulled in a few times (thanks to Niels!) through remote video calls. This was very constructive!

Wilber Week 2023: meeting with GIMP, Inkscape, Blender and Wayland contributors in Blender headquarters
Wilber Week 2023: meeting with GIMP, Inkscape and Wayland contributors in Blender headquarters (left to right: Liam, Øyvind, Nathan, Marc, Jehan, Mitch, Simon, Niels; and Sebastian on screen) — photo by Aryeom, CC by-sa

Bottom line: the interactions with Blender folks made the trip quite worthwhile!

In the same time, there were more things I was hoping to discuss, such as better file exchange and interactions between our programs (think Libre Graphics Suite, a major gripe we have at ZeMarmot project as we work with all these software and it’s not always easy!). There was already so much going on that this didn’t happen. Hopefully the opportunity will come again!

Immediate consequences

Bug fixing! Mitch is back!

This was a very packed week for hacking on GIMP, fixing bugs, improving long overdue code and so on. A huge part of this was thanks to the fact that we got our co-maintainer back, Michael Natterer, a.k.a. mitch!

We missed him dearly and it’s so good to have him looking over our code once more, as well as hacking frenziedly until late at night, like the old times!

Wilber Week 2023: the maintainer sleeps
Wilber Week 2023: where has been mitch for 2 years? Turns out he was just sleeping… — photo by Jehan, CC by-sa

Of course, a lot of other old-timers came back to code for the occasion, so let’s not forget them all!

Improvements

Among the many things which happened during this very eventful week (or as direct consequences), let’s mention:

  • Simon Budig should be commended for fixing warnings, cleaning code and updating code away from deprecated API!
  • Niels de Graef and Carlos Garnacho helped with various GTK- and Wayland-related fixes. This also resulted in patches in GTK or other dependencies, not only in GIMP.
  • The plug-in API got seriously worked on, adding support of GBytes as plug-in arguments, improving the new GimpResource class and subclasses allowing plug-ins to easily manipulate various data (brushes, dynamics, patterns…) and more.
  • Autotools is finally gone from our main repository! (though it is still present in the stable branch)
  • Our Continuous Integration now shows JUnit reports from meson unit tests.
  • Ville is getting used to improving our themes: he did the 2.10 ones, now again he helped on the Default 3.0 theme, improving work started by other contributors.
  • As a direct result of Wilber Week, Carlos implemented, soon after, pad customization ability to GIMP (with a very nice write-up on this work). As review will take some time, it won’t be in 2.99.16 though will definitely end up in GIMP 3.0!
  • Aryeom worked on an updated logo, with the help of various GIMP contributors (in particular Ville, Øyvind and Simon) as well as Chris from Inkscape. This is still work-in-progress.
  • Some improved GEGL integration discussion and work happened during the week, then continued after, allowing to easily add third-party GEGL operations in GIMP’s menu and search for them in the action search (note: implementation changed since these toots; not all operations end up in menus now, only when a specific metadata is present in the operation).
  • Aryeom updated the splash screen for the next development version (to be continued…).
  • While they couldn’t be present unfortunately, we shouldn’t forget Jacob Boerema, Alx Sa and others who continued to improve GIMP remotely in the same time!
  • Since we had 3 projects selected in GSoC 2023 with Liam and myself as mentors, we had GSoC meetings as remote calls with the students.

Dropping bitcoin donation method

We have had a bitcoin address on the website. Some people have asked for more crypto-currency options. With a rise in scams, high energy use and differing national tax implications, we have decided — after discussion and a vote during Wilber Week — to no longer feature a bitcoin donation link.

The donations in bitcoin have been received, some of them used, but we are still working on how to properly channel these funds towards our expenses.

Making plans

A foundation?

It turns out that we have been interviewed by Pablo Vazquez while in Blender’s, so the cat is out of the bag in a quite public way now: we have been trying to set up our own entity. But first, since I teased you, here was the interview:

Wilber Week 2023: GIMP’s Wilber Week 2023 at Blender HQ, by Pablo Vazquez (featuring Simon, Jehan and Mitch)

In case you wonder, the slides can be found here, they were taken from a end-of-event presentation I gave to Blender folks.

Wilber Week 2023: the EOF talk
Wilber Week 2023: the EOF talk — photo by Aryeom, CC by-sa

Making a proper entity for GIMP is something which has been on my mind for many years and which I started to discuss with others of the team, and with friends from other non-profits to help me find the best way, since 2019! After some hiatus on this project, I revived my work on it late 2022, and we are actually quite advanced, though I will refrain on giving too much details now in order not to jinx it.

Let’s see how it pans out!

Now something to be clear about: GIMP has always been a bit of a messy and friendly community project. And that’s part of what I like about it: this bit of anarchy. Whatever we build to support the project, I will always fight for this spirit to live on. This was in fact one of the difficult part of setting up an organization and why it took so long: doing so without the organization taking over the project, but instead as a support to the community.

GIMP 3 and onward! ⛵

Clearly this Wilber Week made me trust that my initial plan (outlined in the 2022 report as hoping to have GIMP 3.0 release candidates this year) should be possible. If we can keep the community as lively, there is high chance to see this happen.

We are clearly sailing in exciting times, right now, toward a very cool future! 😄

What’s next

For anyone interested, the meeting page on the developer website gives a bit more details on what happened, what was actually discussed, meeting notes, etc.

Right now, we are deep into preparing the release of the next development version of GIMP (GIMP 2.99.16). And while it’s not even out, we are already quite excited about the next one (which might even be a release candidate in the best case!).

In the meantime, do not forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger! 💪🥳

  •  

GIMP in GSoC 2023

Par :Jehan

This year again, GIMP project got selected as mentor organization in the Google Summer of Code.

Applications by contributors are opening today (Monday, March 20, 2023) and will close on Tuesday, April 4, 2023.

Project ideas

On our new developer website, we listed a few ideas which might be suitable for a GSoC. These range from core color science projects to UX improvements, build system updates or even making a website for our future extension platform.

Obviously this list of ideas is far from exhaustive and we definitely welcome your propositions. Even better, if you have great ideas of your own, it may play in your favor, as long as they are realistic projects which can be finished within GSoC timeframe, or at least broken down in usable parts.

Requirements

As already explained last year, and again in our internship page, if you want to participate, some of the most important requirements are:

  • Get familiarized with our code by fixing a few patches beforehand. You don’t have to work on extra-complicated bugs or features at first (reports labelled “Newcomers” are probably good first-patch targets), nor does it absolutely need to be related to the topic of your planned project. We mostly need to interact with you on a technical topic as a first approach.
  • Communicate! Don’t just drop your project out of the blue on the GSoC interface (several people did this last year). Come and discuss your project ideas with us on IRC. You may also open a report on our issue tracker detailing your proposition.
  •  

GIMP 2.10.34 Released

Par :Jehan

GIMP 2.10.34 is finally out, with fixes and some improvements backported from our development codebase.

This news lists the most notable and visible changes. In particular, we do not list here the bug fixes. To get a more complete list of changes, you should refer to the NEWS file or look at the commit history.

File Formats

TIFF

Apart from various bug fixes, the TIFF import dialog now gets a new option labelled “Show reduced images”, which is backported from the development release GIMP 2.99.14.

Here is what we said about this option when initially announced:

The TIFF format has a concept of “reduced page”. Until now, we were assuming pages tagged as “reduced” to be thumbnails. Yet this is not always the case. For instance we had feedback from makers of medical devices which were using “reduced pages” as sub-sampled images generated by said devices. They needed GIMP to be able to load all the pages as layers (the main images and the sub-sampled ones).

GIMP 2.10.34: importing reduced pages of TIFF files
Importing reduced pages of TIFF files - GIMP 2.10.34

This is why we added a new option called “Show reduced images” which lets you decide whether you want to load these or not. The option will be checked by default through a small heuristic: if there is only 1 reduced page and it’s in the second position, then it’s probably a thumbnail (as per common usage across software); in which case we disable the checkbox by default. Still in the end, the choice is yours!

PSD

We also backported a bunch of features from the development branch to improve PSD support.

In particular:

JPEG XL

While JPEG XL import has been possible in the stable branch since GIMP 2.10.32, export support has now been backported too in this version, though it is limited to 8-bit lossless.

Additionally, metadata support on import (only) has been backported, making this version of GIMP much more useful for anyone working with this format.

Note for packagers: metadata support in JPEG XL requires libjxl 0.7.0 or over.

PDF

Our code for PDF import and export was pretty oblivious of the ability to have transparency in PDF. This is now changing.

From GIMP 2.10.34 and onwards, the PDF import dialog will propose an option labelled “Fill transparent areas with white”. It will be checked by default (thus providing the old behavior) because most office software seem to create PDF files assuming reader software will fill the background with white. Unchecking the box would not render the expected result. This is likely why our code was historically doing the same as other reader software. Nevertheless for the cases where you were actually intending transparent background upon loading, it will now be possible.

Import a transparent PDF in GIMP 2.10.34
PDF import in GIMP 2.10.34: new “Fill transparent areas with background color” option

Symmetrically when exporting a PDF, we now propose an option labelled “Fill transparent areas with background color”, letting you decide whether or not you want to add an opaque background, hence getting rid of transparency, or leaving your image with transparency, exactly as you see it in GIMP canvas.

Export a transparent PDF in GIMP 2.10.34
PDF export in GIMP 2.10.34: new “Fill transparent areas with white” option

Of course note that, as said above, not all PDF readers handle transparency. Very often, many readers (including web browsers’ readers) will fill the background with white. Yet if you have a more compliant PDF reader or editor, this new usage can be of interest.

Raw data

🛈 We are talking here of “raw data” where you export your pixels as contiguous or planar data directly, without following a specific file format, and not RAW file formats as are usually called formats used by digital cameras (for these, we still prefer to pass through good raw developer software, such as darktable or RawTherapee).

As a partial backport from GIMP 2.99.12, GIMP will now export your image to raw data at the precision used by your image backend. In other words, you can export high bit depth raw images.

Note though that improvements to this plug-in in the development version were not fully backported. In particular, you may not be able to load back the high bit depth images that you exported. The reason is that the changes required for this would modify considerably the PDB procedure tied to this plug-in, which would break third-party scripts relying on this procedure to load raw data as images.

Template selector in Canvas Size dialog

The template selector introduced in the development version GIMP 2.99.6 has now been backported, allowing you to resize your canvas more easily when using common image formats.

Template selector in Canvas Size dialog - GIMP 2.10.34
Template selector in Canvas Size dialog - GIMP 2.10.34

Item dockables with “Visibility” and “Link” headers

As a very partial backport of the many usability changes which happened in the development version 2.99.10, the Layers, Channels and Paths dockables now feature a small header above the items list, containing the “eye” and “chain” icon, hence making the columns more discoverable.

Icon header in Layers dockable in GIMP 2.10.34
“visibility” and “link” icon header

Note: the outline effect when hovering the visibility and link columns was already backported in GIMP 2.10.32.

Improved desktop color-picking (Windows, X11)

GIMP has 2 color-picking features: the Color Picker tool which works only within the opened images yet with greater color management and the color picker button in the Colors dockable, which can color pick anywhere in the display and relies on the infrastructure allowed by the OS or desktop you are currently running on.

On Windows, the color-picking feature has been entirely rewritten with OS-dedicated code which works much better with multiple monitors, even when using different PPI scales, for instance when mixing high and low pixel density displays (this fixes some coordinates mistracking bug our previous implementation had).

On Linux/X11, we are backtracking to fix a regression in desktop color-picking. We used to follow recommendations for the new Wayland path, which is to favor color-picking “portals” when available. Unfortunately most (if not all?) these portals still don’t give any color-management information about the returned color. As graphics work requires accurate color management, we decided to get back using full old-style X11 code.

Note that since the stable branch of GIMP is still using GTK+2, even if you run on Wayland, GIMP itself would use XWayland. In other words, GIMP 2.10.34 now runs the X11 code path whatever windowing system is in use.

Remembering color scale and model preferences

In “Change Foreground|Background Color” dialogs or in the Colors dockable, you have the option to view your colors in a 0..100 or 0..255 scales. You can also see your color in alternative LCh or HSV color models.

These 2 settings are now stored and remembered across sessions so that you don’t have click them again each time for your usual and preferred workflow.

macOS improvements

This version comes with a few bug fixes dedicated to the macOS builds. The most noteworthy one is that we implemented HTTPS support (since our I/O backend library, GIO, is lacking proper macOS support for this protocol) for 2 features in particular:

  • Check for updates: unless you disable the option in “Preferences”, you should now be notified of new versions of GIMP.
  • Help system: it is now possible to read the remote documentation from within the Help Browser in GIMP.

Plug-in API

Two new functions were added, wrapping basic color processing filters, making it easy to call them from third-party plug-ins:

  • gimp_drawable_shadows_highlights(): function performing the “Shadows-Highligths” filter in the “Colors” menu.
  • gimp_drawable_extract_component(): function performing the “Extract Component” filter in the “Colors > Components” menu.

GEGL, babl

As usual, this version of GIMP is accompanied by new versions of babl and GEGL:

  • babl 0.1.100 comes with bug fixes in the recently added LUT creation and usage code. It also better supports non-ASCII characters in file paths on Windows.
  • babl 0.1.102 disabled the LUT usage by default depending on the environment variable BABL_LUT, leaving us some time to iron out a few more issues we discovered at the last minute.
  • GEGL 0.4.42 adds conditional support for libraw 0.21.0, while also improving the following operations: rgb-clip, perlin, mosaic, c2g, long-shadow and gif-load.

Various build improvements also happened in both babl and GEGL.

Release stats

35 people contributed changes or fixes to GIMP 2.10.34 codebase:

  • 13 developers: Jehan, Jacob Boerema, Alx Sa, Daniel Novomeský, Lukas Oberhuber, Luca Bacci, Ian Martins, Nyári-Kovács, Dávid Tamás, Simon Budig, Stanislav Grinkov, valadaptive and Øyvind Kolås.
  • 22 translators: Sabri Ünal, Anders Jonsson, Martin, Yuri Chornoivan, Marco Ciampa, Cristian Secară, Rodrigo Lledó, Tim Sabsch, Alan Mortensen, Chao-Hsiung Liao, Ekaterine Papava, Milo Ivir, Piotr Drąg, Zurab Kargareteli, Jordi Mas, Luming Zh, Luna Jernberg, Balázs Úr, Hugo Carvalho, Jürgen Benvenuti, Kristjan SCHMIDT and Sveinn í Felli.
  • 19 translations were updated: Catalan, Chinese (China), Chinese (Taiwan), Croatian, Danish, Esperanto, Georgian, German, Hungarian, Icelandic, Italian, Polish, Portuguese, Romanian, Slovenian, Spanish, Swedish, Turkish and Ukrainian.

Contributions on other repositories in the GIMPverse:

  • 4 contributors to babl 0.1.100 and 0.1.102: Luca Bacci, Jehan, Øyvind Kolås and Ulf Prill.
  • 7 contributors to GEGL 0.4.42: Øyvind Kolås, Alan Mortensen, Jehan, Michael Drake, Sabri Ünal, Chris Mayo and Jordi Mas.
  • 2 contributors to ctx since 2.99.14 release: Øyvind Kolås and Carlos Eduardo.
  • 3 contributors to gimp-macos-build (macOS build scripts) since 2.99.14 release: Lukas Oberhuber, Kyungjoon Lee and Mingye Wang.
  • 4 contributors to our main website (what you are reading right now) since 2.99.14 release: Jehan, Aryeom Han, Michael Schumacher and Tim Spriggs.
  • 3 contributors to our developer website since 2.99.14 release: Jehan, Krek Krek and kotvkvante.
  • 9 contributors to our documentation since 2.99.14 release: Jacob Boerema, Anders Jonsson, Jordi Mas, Yuri Chornoivan, Andre Klapper, Danial Behzadi, Hugo Carvalho, Martin and Nathan Follens.

Then let’s not forget to thank all the people who help us triaging in Gitlab, report bugs and discuss possible improvements with us. And of course, our community is deeply thankful to the internet warriors who manage our various discussion channels or social network accounts such as Ville Pätsi, Liam Quin, Michael Schumacher and Sevenix!

Note: considering the number of parts in GIMP and around, and how we get statistics through git scripting, errors may slip inside these stats. Feel free to tell us if we missed or mis-categorized some contributors or contributions.

Improved Release Procedure and Call for Testers

As far as I remember, GIMP has had a very accurate release procedure, with step-by-step TODO items listed in a long file.

Lately I have been working on improving it further, making a public report, actually checkable bucket list items… and in particular, I would like the source and binaries to be thoroughly tested by as many people as possible. 👩‍🔬🧪👨‍🔬

This version is the first time we try this new release procedure (the procedure worked fine: the release was delayed by us finding some last-minute issues which is actually a good thing!).

We already have a few people testing GIMP on Windows, though the more the better.
On the other hand, we have nearly nobody testing the macOS builds or the flatpak (apart from developers and packagers of course). 😢

Note that we don’t have our own packages for every OS out there, but we definitely welcome people willing to test GIMP on *BSD, Haiku or whatnot, as long as you can build GIMP on your own on your system of choice.

For these reasons, if anyone is willing to help us improve GIMP by participating to release testing, please open a report on the developer website tracker with the following information:

  • The Operating Systems (Linux, Windows, macOS, *BSD…) you will be testing on, with details if possible (which Linux distribution and version? Which version of Windows or macOS?…).
  • The architectures you will be testing on (x86, ARM… 32 or 64-bit).
  • If you will test our pre-built packages or from source (custom builds).

Then we will include you in the next release testing (stable and development releases).

Our expectations from testers:

  • Make sure you receive Gitlab notifications when your nickname is cited (we advise to set your Global notification level to “Participate” or “On mention”).
  • Follow the release report to know what’s happening and when you are needed.
  • Release reports are not a place where we teach people how to use basic functions of a computer. Testers don’t have to be developers, but they have to be able to follow basic technical guidelines, give feedback more useful than “it doesn’t work” and be able globally to interact with developers.
  • Be nice and welcoming: everyone here is a volunteer, testers as much as developers. This is Community, Free Software, not a soulless job. 🤗

Around GIMP

Mirror news

2 organizations contributed more download mirrors to distribute GIMP.

Thanks to Artfiles New Media GmbH (Hamburg, Germany), which has actually been a long-term mirror sponsor and recently came back by updating their settings to our new mirror system; and the Fremont Cabal Internet Exchange which added 2 more mirrors in the United States and one in Bogotà, Colombia (our second mirror in South America).

Mirrors are important as they help the project by sharing the load for dozens of thousands of daily downloads. Moreover by having mirrors spread across the globe, we ensure that everyone can have fast download access to GIMP.

Book news

A new “Czech” section was added to our books page, with 4 books which got reported to us. These books are a bit old and all seem to be targetting GIMP 2.8. So let’s hope for a lot of GIMP 2.10 (and soon 3.0) coverage in Czech in the future!

We remind everyone that we welcome book additions, especially newer books for latest versions of GIMP (which would be most useful to everyone). Whether you wrote it or just read it, if you know of a book about GIMP, just report the same information as other books in the list. Thanks!

Downloading GIMP 2.10.34

As usual, GIMP 2.10.34 is available on GIMP official website (gimp.org) in 4 package formats:

  • Linux development flatpak
  • Windows installer
  • macOS DMG packages for Intel hardware
  • macOS DMG packages for Apple Silicon hardware

Other packages made by third-parties are obviously expected to follow (Linux or *BSD distributions’ packages, etc.).

What’s next

These days, we are mostly focusing on the development version, especially since we have big plans for 2023, as was outlined in our 2023 plans (2022 annual report). For anyone interested in the future of GIMP, I highly recommend reading this report.

Nevertheless bug fixes in particular, and maintenance in general, still need to get out for the stable branch. We will likely release at least one, possibly more, stable versions before GIMP 3.0 release.

Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger! 💪🥳

  •  

2022 annual report

Par :Jehan

Pursuing the newfound tradition started a year ago, here is my report for past year 2022.

Go 2023 - Wilber and co. comics strip by Aryeom
“Go 2023” by Aryeom, Creative Commons by-sa 4.0 - GIMP’s 2022 annual report

Statistics

In 2022, we had:

  • 1 stable releases (GIMP 2.10.32)
  • 3 development releases (GIMP 2.99.10, 2.99.12 and 2.99.14).
  • 1461 commits on the unstable development branch (2.99.x, future 3.0) and 276 commits on the stable development branch (2.10.x) of the main repository.
  • 87 contributors on the main repository, including (some people belong to several categories):
    • 35 developers
    • 47 translators
    • 26 contributors to resources (icons, themes, in-code documentation) or build improvements
  • 7 core developers contributed 10 or more commits in GIMP’s main repository:
    • Jehan: 649 commits
    • Jacob Boerema: 64 commits
    • Nikc: 50 commits
    • Daniel Novomeský: 25 commits
    • lloyd konneker: 25 commits
    • Lukas Oberhuber: 18 commits
    • Niels De Graef: 15 commits
  • 115 commits to babl by 10 contributors, with 3 developers contributing 10 or more commits:
    • Øyvind Kolås: 86 commits
    • Axel Viala: 10 commits
    • Jehan: 10 commits
  • 138 commits to GEGL by 32 contributors, with 5 developers contributing 5 or more commits:
    • Øyvind Kolås: 47 commits
    • Behnam Momeni: 9 commits
    • Michael Drake: 7 commits
    • Thomas Manni: 7 commits
    • Jehan: 5 commits
  • 1042 commits to ctx by 2 contributors (mostly Øyvind Kolås).
  • 492 commits in gimp-help (our manual) by 29 contributors, with 11 people contributing 10 or more commits (this list mixes documenters, build maintenance and translators):
    • Jacob Boerema: 229 commits
    • Anders Jonsson: 47 commits
    • Rodrigo Lledó: 38 commits
    • Jehan: 28 commits
    • Jordi Mas: 25 commits
    • Tim Sabsch: 19 commits
    • Nathan Follens: 17 commits
    • Marco Ciampa: 16 commits
    • Yuri Chornoivan: 15 commits
    • Andre Klapper: 13 commits
    • Hugo Carvalho: 11 commits
  • 178 commits in gimp-macos-build (our macOS build) by 3 contributors (mostly Lukas Oberhuber).
  • 33 commits in the stable branch of our Flathub/Flatpak package and 23 commits on the beta branch by 6 contributors, including 4 core contributors: Jehan, Ondřej Míchal, Hubert Figuière and Daniel Novomeský.
  • 227 commits to GIMP’s website (gimp.org, i.e. right here) by 10 contributors (mostly Jehan).
  • 158 commits to our new developers website by 4 contributors:
    • Jehan: 104 commits
    • Pat David: 38 commits
    • Robin Swift: 15 commits
    • Lukas Oberhuber: 1 commit
  • 178 reports fixed and 206 merge requests integrated in our 2022 releases. Hundreds more reports handled, triaged, answered to, worked on…
  • Many patches contributed by GIMP contributors in various other projects we use (at least GLib, GTK, Cairo, meson, Mirrorbits…) and an uncountable number of issues reported by our contributors to other projects.
  • And more!

Compared to last year:

  • The total amount of work is quite similar, and while that tendency had already started a year ago, the work has clearly been shifting even more towards the development branch (future 3.0), which nows accounts for 84% of commits (against 74% last year), while the stable branch is really getting into maintenance-only mode.
  • Less work on GEGL happened but more work on babl. The recent work on automatic LUT creation and SIMD optimizations explains it.
  • ctx stays heavily developed.
  • While Øyvind and myself still remain the 2 heavy-lifters, we get more people around clearly pulling their weight. It is exciting to see more contributors stay.
  • Jacob is working more on the documentation which is really increasing in quality.

Outstanding evolution in 2022

babl and GEGL

On the side of our graphics engine, the automatic LUT creation for color conversion in babl is clearly a big step forward, introduced in GIMP 2.99.10 (then in the stable version 2.10.32).

At the same time, all babl, GEGL and ctx got nice SIMD optimization which allowed nice performance boosts.

Øyvind Kolås is really doing an amazing job, as usual.

It is also interesting to note how the concept of “GEGL plug-ins” took off in 2022. It in fact just refers to third-party GEGL operations which you simply install in a folder and GIMP will see them at next restart, including all the fancy UI, such as on-canvas preview with split view (and when we’ll have non-destructive layer effects, these operations will also be usable!).
Among people spearheading such community development, we should cite LinuxBeaver and Liam Quin. For anyone interested, I suggest to read the 3-part tutorial written by Liam (“Using GEGL Plug-Ins”, GEGL Graph” and “Writing C Plug-Ins”).

Checking items ✅ in GIMP roadmap

We proudly checked-off several items in the GIMP 3.0.0 roadmap.

Amoung 2022 achievements, we indeed…

  • ✔ ported away from intltool to gettext only (technical debt cleanup);
  • ✔ finished the meson build: the autotools build still exists but is now considered secondary;
  • ✔ finished the last pieces for multi-layer selection (a move started early 2020). including rewriting completely the interaction in the formerly terrible align and distribute tool.

These are 3 huge pieces in our roadmap which we happily marked as completed (apart from probable bugs).

On the getting closer side:

  • We nearly finished the “Less floating selection” move (some use cases remain, which we need to think about more).
  • The Wayland support is still kinda wonky at times (even disregarding all the issues we cannot do anything about — such as color management not implemented yet in Wayland —, we have weird windowing issues), but it improved in 2022.
  • The API work is really moving forward; Lloyd Konneker helped a lot on this.
  • The GTK+3 port is nearly finished, as we are handling these days the last annoying warnings (though it’s more a January 2023 thing!).
  • Space invasion: good parts of it were done since the CMYK push made us look at specific pieces of code more in details. Though a lot still needs to be done and color science is at times a very head-scratching part of the work.

Now anyone following our development news knows that a lot more happened. This report is not going to repeat what we already wrote about in various news items.

One particular contributor to encourage this year is Nikc who came to us with a few patches at first then proposed a Google Summer of Code project, and decided to stay around. Thanks to them, a lot happened for CMYK support in GIMP and our “Space Invasion” project also moved forward further. They are now a very prolific core contributor. This can only mean good stuff for the future!

Packaging

Clearly our macOS support has never been better: good continuous integration, automatic DMG package creation, and now we even got an Apple Silicon package! The quality of maintenance and updates for this package is outstanding. Lukas Oberhuber is the one to thank for this. Yet the bus factor for our macOS package remains extremely low so we always welcome more contributors.

On Windows side, GIMP is now officially distributed on the Windows Store, after getting contacted by a developer relations team at Microsoft. This is great as too many non-trusted packages used to be distributed there and now they seem to have mostly disappeared with the official one eclipsing them with its very good rating.

On Flathub (GNU/Linux), the burden is getting lightened as we now got automation in dependency version check, thanks to Ondřej Míchal. The flatpak package team is also getting bigger, with 4 recurring contributors.

Infrastructure

We also got some infrastructure changes, such as our mirroring system, now based on Mirrorbits. This is something I am planning to talk again about soon, so I won’t go into details.

On community side, our mailing lists have been discontinued, together with all of GNOME mailing lists whose infrastructure we are on. We now recommend 2 forums for the community:

Websites

Our documentation website is getting a lot of love, thanks to Jacob Boerema, with automatic updates, statistics showing… and of course, the contents is getting serious scrutiny to improve documentation quality. Compared to 2021, there has been nearly double the number of commits in 2022, which is revealing of the big step up.

Meanwhile we revived the developers website which was in a dire state for over 10 years.

We still have a pending project to port the main website to the Hugo framework as well. Unfortunately this could not happen in 2022.

Plans for 2023

GIMP 3.0.0?

I should not give dates, so don’t take it as a promise. Maybe it’s just a foolish dream by a foolish man: I am currently planning GIMP 3.0.0 release in 2023, or at least our first release candidates.

Here. I said it. If it doesn’t happen, remember that it was not a promise. 😜

There is still a lot to be done, so I hope I’m not making a fool of myself. But at some point, not being able to release just gets frustrating. Of course, we are still within acceptable development durations (GIMP 2.8 to 2.10 took 6 years; we are still in the 5th year since 2.10) but I really want to get it over with.

Now to get this deadline to work, I have decided to delay some elements out of our 3.0 roadmap. In particular:

  • Extensions management: project dear to me as I started it and developed what is already implemented, yet to get a safe online infrastructure to handle extension search and download, we will need time.
  • Paint Select tool: very awesome tool, but its contributor, Thomas Manni, is not happy with the performance (it requires instant canvas feedback to be usable) and is currently investigating alternative algorithms.

In the same time, I have been pushing aside some nice new code contributed to us when I realize reviewing it and making back and forth corrections will take us weeks. For instance, some of you may have seen the nice “vector layers” demo by Nikc (based on work by Hendrik Boom and Jacob Boerema) on social networks. This won’t make it to GIMP 3.0.

This is a rule which I apply to my own code. Some people might indeed remember my own link layer experiments for instance, which I stopped working on 2 years ago, already for the same reason.

These will still happen, I’m only moving these targets away into further releases, which I’m explaining in the next section.

Rethinking our roadmaps

This leads me to an organizational work I’ve been doing lately on our roadmaps and on planification of releases. Up to this day, you must have read a lot about our bi-version planification: GIMP 3.0 for GTK+3 port then 3.2 for advanced non-destructive editing.

While this second target is still definitely a big plan in our roadmap, I don’t think that making it again a huge development cycle with dozens of features and taking several years is the wisest thing. This old development model made sense back in the day, but less nowadays in my opinion.

My goal for GIMP is to release more often, with faster development cycles, maybe less features at once, yet nice features at each release. This is something I had been pushing for, ever since 2014, when I was still a newcomer (I first evoked that we should be able to publish new features even in micro versions in a meeting during LGM 2014). This ultimately led to our release policy change, starting from GIMP 2.10.0. And this is what I want to continue pushing further.

So my point is that targetting for a “GIMP 3.2” somewhere in the distant future doesn’t make sense anymore. The non-destructive editing features, such as non-destructive layer effects, will happen, but will it be GIMP 3.2.0? Or some 3.0.x version instead? We’ll see. It’s all just numbers anyway. We may likely break this down in smaller releases in the end.

With this in mind, I reviewed our after-3.0 roadmaps into smaller pieces, per logical categories of projects we want and which will definitely happen.

  • Link and vector layers are now into a new “non-destructive layer types” category. The code is so well advanced that it would be a waste and while these won’t make it to GIMP 3.0.0, it will definitely become one of the prime targets immediately after release. Maybe in GIMP 3.0.2?
    By the way, this also opens the door to the long-awaited shape features: with vector layers, we could have non-destructive shape drawing. I mean, on-canvas shapes should be a vector features to make it right!
  • Non-destructive layer effects (formerly the main target for 3.2) is obviously a project on its own.
  • Macro support is also something we’ve wanted for a long time and with GIMP 3.0, we have started to lay the foundations for this feature. This should hopefully soon become a reality.
  • Animation support, which as most of you know is something I’ve worked on for years, will have to be in GIMP someday. So it’s also its own category. It will also bring multi-page support (not just layers as pages).
  • Our extension platform is still very much planned!
  • The Space Invasion project will continue: for 3.0, we focus on correctness of color models we already support; after 3.0, we might look into going further with new color models backends, such as core CMYK or L*a*b* support, but also spot color channels and whatnot…
  • We have now a bunch of unfinished tools in our playground area and it would be good if we took the time to finish them. Of course, we also have ideas for nice new tools. And finally there are tools which we really want to improve, such as our Text tool which deserves more love.
  • Finally we have started to enhance the concept of “canvas”, with the “Show all” feature since GIMP 2.10.14. We always wanted to go further, and also to rework the concept of layer dimension (e.g. with auto-growing layers, or even infinite layer abilities).

And this is how I completely rewrote our roadmap page. Hopefully some people will enjoy reading the new page and will find it exciting. Note that contents didn’t change that much, except that it has been reorganized to put more emphasis on the bigger strokes for GIMP evolution after GIMP 3.0 release, making it more obvious (hopefully) which direction current contributors are pushing GIMP to go.

Conclusion

This is where we are at. I’m expecting 2023 to be an eventful year. 2022 has been quite awesome too, but also tiring to the point that there were weeks when I couldn’t work on anything, especially soon after coding bursts for releases. I also focused a bit more on getting healthier work habits, such as working with a height-adjustable desk (for sitting and standing work sessions) and doing regular walks.

This is also why I work on procedures to get faster releases, better infrastructure and better documentation for onboarding new contributors. I am aiming for a more organized path while keeping the slightly 🌪️ chaotic ❤️‍🔥 core which really makes working in our team so enjoyable. ☺️

As I was saying in last year’s report, GIMP is not only a Free Software, it is also a Community Software: random human beings doing something nice together and sharing it with everyone. Why? Because we can, because we want. And that’s why I love our small community, with just the right amount of chaos and insanity, sparkled with just the right amount of organization!

Finally don’t forget you can 💌 donate to the project and personally fund several GIMP developers, as a way to give back and accelerate the development of GIMP. As you know, myself as maintainer of GIMP (through “ZeMarmot” project) and Øyvind as maintainer of GEGL are crowdfunding the work this report is about. Any support is appreciated to help us succeed in such endeavour.

I wish you all a happy, funny 🥳 and healthy year 2023 and/or year of the rabbit 🐇!

  •  

GIMP 2.10.32 on Apple Silicon

Par :Jehan

It is a bit of an early Chistmas 🎅 for people using Apple Silicon machines (Apple M1, M2…) as we release for the first time ever a stable version of GIMP for this architecture!

It is a revision package for GIMP 2.10.32, already released a few months ago, re-built with our new MacPorts-based infrastructure on both x86_64 (“macOS on Intel” architecture) and AArch64 (“macOS on Apple Silicon”).

Note that we provide 2 DMG packages now, one for each architecture, not a single universal package. The website will try and detect which architecture you are on, but if it fails to detect properly (detection is not as easy on some browsers), be careful to choose the version for the correct hardware (“for Intel” or “for Apple Silicon”).

Additionally in this revised package, dependencies have been updated, in particular babl and GEGL. It means that even for macOS on Intel, you will get the recent fix to the race condition bug which was sometimes causing crashes of GIMP (somehow we mostly saw it happen on macOS).

This is why we recommend every person on macOS (whichever your hardware) to update GIMP with this revision 1 of GIMP 2.10.32.

As usual, get these updates on GIMP’s download page!

  •  

Happy 27!

Par :Jehan

Today, on 21st of November 2022, the GNU Image Manipulation Program turned 27 (cf. the first release announcement on 1995-11-21).

To celebrate, Aryeom (ZeMarmot‘s director) drew this nice birthday illustration (fully drawn within GIMP, and under Creative Commons by-sa 4.0 license, of course!):

Happy 27th birthday! - Wilber and co. comics strip by Aryeom
“Happy 27th birthday!” by Aryeom (also a Wilber-less version as temporary gimp.org header), Creative Commons by-sa 4.0

For both Aryeom and I (Jehan), this is our tenth year of continued contribution, since a first commit in September 2012 (basic icon-changing patch in the animation playback plug-in, soon followed by more… many more patches…). Back then, never would we have imagined sticking for so long around this nice core community (regarding this point, we thank the other contributors for their welcomeness, and in particular the wonderful mitch) and contributing litterally thousands of patches in GIMP! So it’s also a pretty big personal milestone.

It is also my second year maintaining GIMP. And to be fair, Aryeom has a huge role in my maintenance with constant reviewing, testing my code (and other contributor’s code), following up with feedback, specifying behaviors (while always caring about others’ usage! One of her main rule when she helps designing changes is researching and wondering what worflows others have). So much is being done in the shadow to keep it all together.

But GIMP is not only us. What would we do without Øyvind Kolås in particular? Nowadays he is carrying most of our core flow-based graphics engine maintenance, GEGL, and its sister projects (babl and ctx).

Of course, I can’t forget all other awesome contributors: developers, packagers, community support, translators (GIMP is more than 90% translated in 27 languages among 84 languages we currently support!), documenters, website contributors, tutorial writers… We should also thank the GNOME Infrastructure team for being so helpful of course. And many many more! What would GIMP be without all of you? 💌

I will likely do a more detailed report later (like I did last year) to sum up 2022 events, so I’ll stay short in this news. For once!

All in all, we wish to remind that GIMP is Community, Free Software. It is what we make of it together. We welcome contributors very warmly 🤗!

Finally if you can’t contribute your time, in these year-end times of giving, don’t forget that you may support financially GIMP developers. GIMP project actively supports its contributors willing to make a living with their Free Software contribution. Right now it means 3 people: Aryeom and myself (through ZeMarmot project) as GIMP maintainers and Øyvind as GEGL maintainer. If you appreciate what we do and wish to give back, funding us is an excellent way. It is part of what makes GIMP development sustainable.

And for everyone who is really eager to see GIMP 3.0 out, it should go without saying that funding developers is what accelerates the development of GIMP.

🎁 So GIMP, and Wilber, we wish you a very happy 27! 🎂

And to every member of the community: thank you all for sticking with this project for all or part of these 27 years! GIMP would not be where it is today without all of you! 💌

  •  

Development version: GIMP 2.99.14 Released

Par :Jehan

The GIMP team is happy to release GIMP 2.99.14 with a lot of nice milestones on the route to GIMP 3.0.

We are getting into deep changes, so we hope you will all test thoroughly and we remind you that it is an unstable version meant for testing and reporting issues.

To get a more complete list of changes, you should refer to the NEWS file or look at the commit history.

Tools

Align and Distribute tool: fully reworked interaction

The Alignment tool was very hard to use, with complicated on-canvas interaction to select the target items (and never being too sure if we selected right!). Thanks to the core multiple layer selection which GIMP is now capable of, we greatly simplified the tool:

  • Target items to align or distribute are now the selected layers and/or paths in their respective dockable, as set in the “Targets” section in tool options.
GIMP 2.99.14: alignment tool target selection
Targets in alignment tool options - GIMP 2.99.14
  • For layers in particular, a new option “Use extents of layer contents” allow to align or distribute target layers based on their pixel contents, not the layer bounds (which typically might be bigger than the pixel data). This is similar to running “Crop to Content” before aligning, except that we don’t actually crop.
  • Guides still need to be selected on-canvas if you want to align or distribute them. The tool options hints at the modifiers: Alt or Shift-Alt. Moreover the selected guide color will change, giving a visual feedback of selected guides.
GIMP 2.99.14: aligning and distributing guides (screencast)
Aligning and distributing guides - GIMP 2.99.14
  • Simple clicks (no modifiers) in the canvas is now only used to pick the reference object for alignment, if “Picked reference object” is set in the “Relative to” dropdown menu. In such case, you can pick as reference any layer, path or guide. The 2 other dropdown choices are “Image” and “Selection” in order respectively to use the current image or selection as alignment reference.
  • Your reference object shows on-canvas handles as visual feedback.
  • In the “Targets” section of the tool options, you can also choose your item anchor points: left, right, top, bottom and center. Therefore if you align 2-dimension targets and reference, you may align e.g. the left side of targets to the left, middle or right side of your reference. Any combination is possible.
  • The distribute actions do not use the reference object anymore. Instead they use the leftest/rightest or top/bottom object as reference (i.e. that the 2 extreme position targets don’t move). This is consistent with how other software, e.g. Inkscape, handle distribution.
  • 2 types of distribution actions are proposed:

    • Distribute anchor points evenly in the horizontal/vertical: the distance between the anchor point of each target stays the same, e.g. the distance between the left side of each object.
    • Distribute horizontally/vertically with even horizontal/vertical gaps: the distance between the right side of one object and the left side of the next (in horizontal distribution) statys the same.
GIMP 2.99.14: aligning and distributing layers (screencast)
Align Wilber and ZeMarmot relatively to Wilber’s center point, then objects tops under Wilber, before distributing them - GIMP 2.99.14

Text tool: new outline options

The Text tool now gains non-destructive outline and fill options.

This is implemented as a new “Style” setting in the tool options, with 3 choices:

  • Filled: the original style;
  • Outlined: you can choose an outline color or pattern, antialiasing, a line width and style. The character inside will be see-through.
  • Outlined and filled: identical to “Outlined” except for the fact that characters inside will be filled by the text color.
GIMP 2.99.14: outline feature in text tool options (screencast)
Outline feature in text tool options - GIMP 2.99.14

Transform tools activated automatically

All transform tools (Unified Transform, Rotate, Scale…) needed an explicit click on canvas before their handle showed up on the canvas when activated with the tool box or shortcut, which was not consistent with their activation through the Tools menu, and with how some other tools worked.

As this change was requested, we decided to experiment with directly activating the handles as soon as the tool is selected.

Usability and User Interface

Floating selection concept reviewed

The “Floating selection” concept has been a huge topic across the years, especially because it was quite unexpected by many people.

After discussing the matters, we came to the conclusion that we should experiment limiting its usage.

Nevertheless we are also deeply aware that this feature can be a huge time saver and a much better interface for some types of interaction. In particular, the quick on-canvas copy|cut-paste with the Alt modifier (Ctrl-Alt to cut-paste or Shift-Alt to copy-paste) heavily relies on the floating selection to extremely quickly move bits of a layer. Obviously the explicit “Float” action (equivalent to a cut-paste) is in a similar situation.

For pasting inside a layer mask, it is even mandatory because it allows to edit the pasted data — e.g. positioning appropriately, transforming it… — before actually merging into the mask which may already contain mask data. Note that if some day, layers were allowed to contain several masks, this would not be necessary anymore.

For this reason, the 3 cases where we still have floating items are:

  • when pasting into a layer mask;
  • when doing quick copy|cut-paste on canvas with the Alt modifiers;
  • when floating layers explicitly with the “Float” action.

There is still a case which we need to discuss as it also creates floating selections: transform tools when there is a selection. For other common types of data pasting, they will now create new layers directly.

As a side change, when the “floating selection” happens on a layer mask, we now call it “floating mask” and shows it above the mask in the Layers dockable (it used to be above the layer at all times). This should make this specific case less confusing.

Copy-paste re-specified

In the light of multi-layer selection, we have been wondering how the various types copy-paste cases should work. In particular when copying several layers, should you paste several layers or a merged copy? And when copying pieces (through a selection) of several layers?

This is still a work-in-progress but we are trying to properly specify consistent and reasonable behavior for the many sub-cases. In particular now, we always paste as many layers as was copied, even when we copied from a selection (in which case, the new layers will be the size of the selection bounding box).

For the merging case, we add 2 new actions called “Paste as Single Layer” and “Paste as Single Layer in Place” in the Edit > Paste as submenu. As the names imply, they paste the merged down version of your copied contents. It’s a bit similar to “Copy Visible”, except that it only applies to the selected layers and can be chosen at paste time.

New “Gray” theme

GIMP now comes with a “Gray” theme based on a 18.42% luminance middle-gray background, which should be a good neutral environment for professionnal color work.

GIMP 2.99.14: gray theme
Focusing on your artwork color with a middle-gray 18.42% luminance theme - GIMP 2.99.14

Theme override icon size settings

We now provide a theme-override icon size selection in Preferences > Themes with conceptual sizes: small, medium, large and huge. The following widgets are so far modified: toolbox icons, fg/bg editor in toolbox, foreground/background editor in Colors dockable, dockables tab icons, bottom buttons (in the button box) of dockables, header eye and lock icons above item trees, and eye and lock icon switches in item tree cells.

GIMP 2.99.14: override theme icon sizes
Overriding theme-set icon sizes - GIMP 2.99.14

You may recall that we have a similar setting in GIMP 2.10 stable branch, which was initially removed for GIMP 3.0, because our updated toolkit has high-density display awareness and will already resize all the interface following your “scale factor” settings (as set in your system). Nevertheless we realized it was not enough. First of all, because this single settings cannot take all special cases into consideration and some people still wanted even bigger icons because they were watching their display from far away, or simply prefered small icons, or any other reason.

This is the rationale for adding this override of icon size, thus bypassing the system settings. As a nice aside, it will work with any theme. So you don’t have to discard a theme you appreciate just because the chosen icons are not the size you want.

Core changes

Much faster XCF save

Saving with RLE (default) and zlib (the “better but slower compression” checkbox in the Save dialog) is now multi-threaded (following the settings in Preferences), which makes it a lot faster.

In the best case scenario, we saw up to 70% save time (e.g. a 276-layer, 115MiB, was reliably saved in about 50 seconds before, and 15 seconds after the change, on the same test machine), though other tests would be around 1/3 save time (another 180MiB XCF was saving in 1m30s before and 1min after the change on a same machine). On any case, it’s a great news for people working on big images, who hopefully won’t have to wait so long. Or even small images anyway!

This work was initially contributed by suzu_11 and further improved upon.

Vectors (paths) structure in XCF

A further change in the XCF format, which warranted bumping the format version, was that paths now have a proper structure in the XCF specification instead of just being “properties” on images.

What it means especially is that the XCF format will now store locks and color tags on paths, but also the path selection (whether several paths were selected in their dockable). It will also make path items easier to evolve in the future as we add new features, instead of being stuck on some old, outdated and non-evolvable format.

As an aside, the XCF format specification had been stored inside the source repository ever since 1997 (2006 in its detailed version). We moved the file to the new developer website: Documentation of the XCF file format . It should make it easier to read, with markdown formatting and generated table of contents.

Moving to GApplication and GtkApplication

This is a technical information which possibly only developers would understand: the main process is now run as a GimpApp which is a new class derived from GtkApplication. The main process of gimp-console on the other hand is a GimpConsoleApp which is derived from GApplication. Both new classes share a same GimpCoreApp interface.

This is a main step for the GTK+3 port as it should allow us to work with GMenu next.

File format support

PDF

Among other improvements, the PDF export now provides an option “Root layers only” available when “Layers as pages” is checked.

GIMP 2.99.14: root layers only option in PDF export
Root layers only option in PDF export - GIMP 2.99.14

This option considers root layers only as PDF pages, and not their children, which means you can more cleanly organize your PDF pages into layer groups.

AVIF

We improved AVIF compatibility with Safari on iOS 16.0. Some AVIF images are indeed rendered differently in Apple’s implementation compared to implementations of Google and Mozilla (See upstream report).

This changes requires libheif 1.10.0 though the plug-in can still build with older libheif.

PSD

Two important changes were implemented:

  • export of CMYK(A) files added, with 8 or 16-bit precision per channel, using a CMYK soft-proof profile for conversion.
  • Paths are now exported with PSD files.
GIMP 2.99.14: CMYK PSD export
Exporting PSD images as CMYK using the soft-proof profile - GIMP 2.99.14

As a reminder, proper CMYK PSD import was improved in GIMP 2.99.12, storing the CMYK profile from the PSD as soft-proof profile, making round-trips easier (passing through a RGB conversion in GIMP).

JPEG-XL

Metadata import and export are now supported.

ICNS

GIMP now has initial support for loading and exporting ICNS files, the icon format by Apple.

It will also warn you when one of your layer is not a valid icon size for the ICNS format.

GIMP 2.99.14: ICNS support
ICNS support - GIMP 2.99.14

TIFF

The TIFF format has a concept of “reduced page”. Until now, we were assuming pages tagged as “reduced” to be thumbnails. Yet this is not always the case. For instance we had feedbacks from makers of medical devices which were using “reduced pages” as sub-sampled images generated by said devices. They needed GIMP to be able to load all the pages as layers (the main images and the sub-sampled ones).

GIMP 2.99.14: importing reduced pages of TIFF files
Importing reduced pages of TIFF files - GIMP 2.99.14

This is why we added a new option called “Show reduced images” which lets you decide whether you want to load these or not. The option will be checked by default through a small heuristic: if there is only 1 reduced page and it’s in the second position, then it’s probably a thumbnail (as per common usage across software); in which case we disable the checkbox by default. Still in the end, the choice is yours!

API

Several API improvements are present in this release:

  • We have a better GimpPickButton implementation for Windows, which should work better than the existing implementation, thanks to Luca Bacci.
  • Text layers now have a dedicated class GimpTextLayer.
  • Various functions were added to get lists of selected items (as per 2.99 ability to select multiple items).
  • gimp_vectors_stroke_translate() now uses double offsets (instead of integer).
  • There is a new function gimp_text_layer_set_markup(), contributed by Ian Munsie, which allows to set Pango markup directly in text layers. It is a powerful function because it allows to render texts even with features not supported in the text tool GUI.

    For instance, this is a text layer with a double underline and an overline on “Hello”, “under” in subscript, and “2” in superscript all of which are supported features in Pango, but not in our text tool GUI, as set through the Python binding of our API:

    txt_layer.set_markup('<span underline="double" overline="single">Hello</span> <sub>under</sub>world<sup>2</sup>')

    As a note of interest, any styling unsupported by the GUI will be discarded if you edit the text layer through the GUI.

GIMP 2.99.14: text layer styled with gimp_text_layer_set_markup()
Text layer styled with gimp_text_layer_set_markup() - GIMP 2.99.14

Though this release is not the most packed with API changes, a lot of background work is in-progress and in particular Lloyd Konneker is very actively participating to the work. We should hopefully see the result in the next development release.

macOS

Though the macOS build, still has some issues, major advances happened on macOS side, thanks to Lukas Oberhuber, once again.

Pointer click bug with macOS Ventura

Let’s start with the one bad news (before going to the good ones): there seems to be a major hover and click bug in GTK on macOS Ventura, the last version of macOS released a few weeks ago. It basically makes all GTK+3 application unusable, including GIMP. Every new release of this operating system seems to bring its load of (bad) surprises! 😓

As of now, no solutions exist yet as GTK developers are still looking for the cause. In any case, you may want to hold onto updating your OS if some GTK+3 applications (e.g. GIMP, Inkscape, Siril…) are a major part of your workflow.

GIMP has an Apple Silicon package!

The biggest news is that we now have a DMG package for Apple Silicon machines (M1, M2…)! 🥳

Be careful, you should take this as an experimental 🥼 package of an experimental 🧪 GIMP version. So issues are expected. As usual, we welcome any issue report you would get with GIMP (on macOS or any other platform by the way).

MacPorts-based builds

The second big change on macOS land, less visible yet quite major as an infrastructure change: Lukas ported the build to MacPorts away from the historical JHBuild scripts.

The main reason was that we could take advantage of the bigger “port” maintaining community for our dependencies, instead of building everything ourselves. This can be compared to using MSYS2 on Windows or the runtime system of flatpak. This improves the build time, but also the maintenance load as Lukas is still alone to maintain all this.

The drawbacks are that it makes it a bit harder to tweak dependencies when needed (as usual when you rely on an upstream), but also that the DMG packages are now bigger in file size. This is unfortunate, but considering that the alternative might be to wear our macOS maintainer out and have no package at all, we consider it to be worth it.

HTTPS for the update check

The “update check” — i.e. the ability to verify if new versions of GIMP were released, i.e. that you are running outdated GIMP — was never working on macOS because of the lack of HTTPS support for macOS in GIO, our backend library to handle all input/output transparently.

Lukas Oberhuber implemented a work-around for this, based on a macOS system API (no additional dependency), which we may backport later to GIO. Maybe macOS will eventually have the ability to open HTTPS remote images at some point!

Build and documentation

meson (message to packagers)

As told when releasing GIMP 2.99.12, we entered an intensive testing phase for our meson build. We received useful reports and feedbacks, which allowed us to get the meson build even closer to finalization.

This release might be the last one when we will provide both an autotools and meson tarball for packagers. If all goes well, we may decide to phase out our autotools build after GIMP 2.99.14, and only provide a meson tarball.

So if any packager finds any issue, please, now is the time to tell us about it!

API reference tarball

Our developer website now provides online libgimp and libgimpui 2.99 API reference, generated by gi-docgen.

This is the experimental version of what should become the libgimp 3.0 API. Of course, it’s still a moving target, so you should not expect it to be stable yet, up until we officially release GIMP 3.0. Still, plug-in developers are welcome to experiment already in order to prepare their plug-in for the new major version (several well known plug-ins already do have versions usable with our 2.99 experimental API).

An API reference tarball is generated as part of the continuous integration process and we now distribute them on our download server for anyone who prefers to read the documentation offline.

babl and GEGL

As usual, this release is supplemented with the releases of babl 0.1.98 and GEGL 0.4.40.

Some race conditions are now avoided in the LUT cache introduced in GIMP 2.99.10.

ICC tags handling was improved as well in babl and the newsprint GEGL operation was improved so that it does not drop the alpha channel in RGB modes.

Team news

There is no specific team news, except that we are getting a solid core team, with the usual people steadily contributing. 🧑‍💻

Our GSoC student, Nikc, stayed around and is clearly getting used to our codebase as they contribute more and more, which is pleasing to see!

Mirror news

4 organizations contributed download mirrors to distribute GIMP.

Thanks to metanet.ch (Zürich, Switzerland), the Fremont Cabal Internet Exchange (7 mirrors across the United States and Canada!), the LIP6, Sorbonne université (Paris, France) and EdgeUno (Bogotá, Colombia; our first mirror in South America, at least since the renewed mirror procedure!).

We remind that mirrors are important as they help the project by sharing the load for dozens of thousands of daily downloads. Moreover by having mirrors spread across the globe, we ensure that everyone can have fast download access to GIMP.

Book news

One more self-published third-party book about GIMP, in English, was added to the books page:

We remind that we welcome book additions. Whether you wrote it or just read it, if you know of a book about GIMP, just report the same information as other books in the list. Thanks!

Release stats

31 people contributed to the main repository for GIMP 2.99.14:

  • 16 developers contributed to GIMP code base for this micro version:
    • 1 developer with more than 100 commits: Jehan.
    • 3 developers with 10 to 20 commits: Jacob Boerema, Nikc and Daniel Novomeský.
    • 12 developers with less than 10 commits: Lukas Oberhuber, Hanabishi, Luca Bacci, Øyvind Kolås, Gotam Gorabh, Ian Munsie, Michael Schumacher, Niels De Graef, suzu_11, Hanabishi, Niels De Graef and lloyd konneker.
  • 15 translations were updated: Basque, Catalan, Chinese (China), Galician, Georgian, German, Hungarian, Icelandic, Polish, Portuguese, Russian, Slovenian, Spanish, Swedish, Ukrainian.
  • 17 translators contributed: Hugo Carvalho, Yuri Chornoivan, Martin, Zurab Kargareteli, Sveinn í Felli, Alexandre Prokoudine, Anders Jonsson, Balázs Úr, Jordi Mas, Boyuan Yang, Luming Zh, Rodrigo Lledó, Asier Sarasua Garmendia, Fran Dieguez, Piotr Drąg, Balázs Meskó, Tim Sabsch.
  • 1 person contributed to icons and themes: Jehan.
  • 10 people contributed build-related updates: Jehan, Alx Sa, Hanabishi, Øyvind Kolås, Daniel Novomeský, Ian Munsie, Luca Bacci, Lukas Oberhuber, Niels De Graef, Thomas Klausner.

These are the stats on babl, GEGL and ctx repositories:

  • 1 contributors to babl 0.1.98 with 5 commits: Øyvind Kolås
  • 12 contributors to GEGL 0.4.40:
    • 4 code contributors: Øyvind Kolås, Jehan, Sam James, nikita.
    • 8 translators: Marco Ciampa, Asier Sarasua Garmendia, Enrico Nicoletto, Fran Dieguez, Jordi Mas, Luming Zh, Matheus Barbosa, Sabri Ünal.
  • ctx doesn’t have releases per-se as it is project-embedded code. In the time frame between GIMP 2.99.12 and 2.99.14, there were 247 commits by 1 contributor: Øyvind Kolås.

On the documentation repository, in the GIMP 2.99.12 to 2.99.14 timeframe, 5 people contributed:

  • Main contributor on documentation and script with 57 commits: Jacob Boerema.
  • 1 additional contributor on documentation: Tim Sabsch.
  • 4 translators: Tim Sabsch, Andre Klapper, Hugo Carvalho, Rodrigo Lledó.

On the main website repository, in the GIMP 2.99.12 to 2.99.14 timeframe, 1 contributor contributed 89 commits: Jehan.

On the macOS build repository, in the GIMP 2.99.12 to 2.99.14 timeframe, 1 contributor contributed 43 commits: Lukas Oberhuber.

On the developer website repository, since the relevant news, 1 contributor contributed 8 commits: Jehan.

Note: considering the number of parts in GIMP and around, and how we get statistics through git scripting and manual tweaking, errors may slip inside these stats. Feel free to tell us if we missed or mis-categorized some contributors or contributions because we try to acknowledge every contributor for being a part of GIMP!

Downloading GIMP 2.99.14

As usual, GIMP 2.99.14 is available on GIMP official website (gimp.org), now in 4 package formats, as we got the new macOS on Apple Silicon package:

  • Linux development flatpak
  • Windows installer
  • macOS DMG package for Intel
  • macOS DMG package for Apple Silicon

Other packages made by third-party are obviously expected to follow (Linux distributions, *BSD distributions’ packages, etc.).

What’s next

With this release, we are really approaching GIMP 3.0 release, as can be seen from the roadmap of 3.0 where most items are “nearly done” or “done”. We are clearly reaching this part of development when we start targetting specific pain points, which means a lot.

Nice milestones in this release:

  • we now have all themes we absolutely needed (neutral dark, light and middle-gray themes);
  • macOS builds are getting on-par with other builds;
  • usability is being finalized, after the multi-item selection really changed the whole paradigm of how GIMP interacts with layers changed;
  • the space invasion project is currently running strong. Even though this release doesn’t show as much consequences of it yet as we hoped, the next release should;
  • developer documentation, for onboarding of new contributors, is finally getting somewhere.

Don’t forget you can donate and personally fund GIMP developers, as a way to give back and accelerate the development of GIMP. Community commitment helps the project to grow stronger! 💪🥳

  •  

Conference “GIMP and ZeMarmot” in Vandœuvre-lès-Nancy (France)

Par :Jehan

Next Friday, the 4th of November 2022, from 6PM to 8PM CET, Aryeom (with her hats of film director of “ZeMarmot” and GIMP contributor) and myself (Jehan, with my hats of main developer/maintainer of GIMP and technical operations in “ZeMarmot”), will host a conference at the Jules Verne library in Vandœuvre-lès-Nancy (France).

Poster for the talk 'GIMP and ZeMarmot' of 4 November 2022 in Vandœuvre-lès-Nancy
Poster for the talk “GIMP and ZeMarmot” of 4 November 2022 in Vandœuvre-lès-Nancy
Location
Médiathèque Jules Verne
2 rue de Malines
54500 Vandoeuvre-lès-Nancy
France
+33 (0)3 83 54 85 53
Time
Friday, November 4, 2022 - from 6PM to 8PM (CET, French time)

The event is organized by a public body whose name could be translated as something like “the Collective Factory of the Libre Culture” (FCCL), which is a cool name, right? It’s rare enough to have public institutions funded by a city (in this case: Vandœuvre-lès-Nancy) encouraging Free Software usage, and this is why we accepted their invitation. As far as we know, ever since the global health crisis, it will be the first physical conference with contributors of GIMP. Quite strange to prepare talks again after 3 years! 🥲

We will obviously talk about GIMP and how it is developed as a community, since the concept of “Community, Free Software” is dear to me. We will also talk about “ZeMarmot”, the Free/Libre Animation Film produced by the non-profit LILA which crowd-funds our work (for the movie and GIMP development). So it will be the opportunity to discuss about various interesting topics, based on our concrete experience of running FLOSS and Libre Art projects.

We may also present some other Free/Libre movies we produced, such as the ones made on account of Framasoft: “What is Peertube?” and “What is the Fediverse?”).

So if you are in France around Vandœuvre-lès-Nancy on November 4, we hope we’ll see you there. 🤗 Otherwise, I am told that the talk will be streamed live 🖥️ (in French of course).

  •  

2021 annual report

Par :Jehan

While we are ending 2021, let’s sum up the year. For my first year as co-maintainer, I thought it would be a good idea to write this report in my name so that I can give personal impressions of how it is to work on GIMP and what it means to me.

Hello 2022 - Wilber and co. comics strip by Aryeom
“Hello 2022” by Aryeom, Creative Commons by-sa 4.0 - GIMP 2021 annual report

Statistics

In 2021, we had:

  • 4 stable releases (GIMP 2.10.24, 2.10.26, 2.10.28 and 2.10.30)
  • 2 development releases (GIMP 2.99.6 and 2.99.8).
  • 1179 commits on the unstable development branch (2.99.x, future 3.0) and 407 commits on the stable development branch (2.10.x) of the main repository.
  • 91 contributors on the main repository, including (some people belong to several categories):
    • 41 developers
    • 42 translators
    • 24 contributors to resources (icons, themes, in-code documentation) or build improvements.
  • 22 people contributed more than 10 commits in the main repository, among which 2 contributors did more than 100 commits (Jacob Boerema and myself), among which only one (myself) did more than 500.
  • 247 commits to GIMP’s website (gimp.org, i.e. right here) by 14 contributors.
  • 31 commits to babl by 6 contributors.
  • 229 commits to GEGL by 33 contributors.
  • 1179 commits to ctx by 3 contributors (mostly Øyvind Kolås).
  • 255 commits in gimp-help (our manual), whose main contributor is Jacob Boerema who is doing an awesome work reviving it.
  • 53 commits in gimp-macos-build (our repository for the macOS build) by 4 contributors (mostly by Lukas Oberhuber who took over maintainance of the macOS package).
  • 185 reports fixed in our 2021 releases and hundreds more handled, triaged, answered to, worked on…
  • Many patches contributed by GIMP contributors in various other projects we use (GLib, GTK, Cairo, GExiv2 and others… We don’t keep track) and an uncountable number of issues reported by our contributors to other projects.
  • Helping (or getting helped by) other Free Software when we can, e.g. the very nice Siril project for astronomical image processing and other software, because unlike what some think, we are not in a market or a competition! We all work together to make a better graphics work environment.
  • And more!

In the end, that’s quite a lot of work proudly brought to you by GIMP. As you may notice, we have quite some contributions, yet the core work is still actually done by a handful of people as most contributions are one-off (out of the 91 contributors, 69 contributed less than 10 commits, and among these 51 contributed a single commit).

I want to commend Jacob Boerema in particular who is the biggest contributor this year on the stable branch, while I must admit I mostly focus on the development branch and sometimes tend to neglect a bit the stable branch 😒! Thanks Jacob! 🤗

And we should never forget babl, GEGL and the new project ctx by Øyvind Kolås as these constitute the core of GIMP imaging engine and are considered as much a part of GIMP project as the interface itself.

Building a lovely team

You might have noticed a regular section for the last few news titled “Team news” where we list changes in the team, in particular new contributors who are given more access to the tracker or the source repository. I have been trying to be more and more proactive into integrating people into the core team.

Indeed as you saw in the statistics, Jacob Boerema is the only other contributor who did more than 100 commits in 2021, while I did a bit over 500. So I want to improve this ratio and increase the bus factor.

GIMP team has always been very welcoming, at least ever since I started contributing, back in 2012 and this is even why I stayed back then. I want to perpetuate this tradition. My goal is to identify faster the people to give more responsibility to (note that technical skills are important but social skills — in other words being a good person and nice to others — is my priority checkbox). Well it’s definitely an evil trick 🦹 to lessen my own burden, but I also expect this to make it way more fun 🎡 contributing to the project (based on personal experience)!

Therefore let me give special props to Jacob Boerema for his tireless work on file format support and more, Niels de Graef for his invaluable help and good expertise with GTK, Luca Bacci for his very nice work on input device support, helping on Windows and his GTK expertise, Daniel Novomesky for making HEIF/AVIF and JPEG-XL first-class formats…

Let’s not forget recurring contributors such as Massimo Valentini, Lloyd Konneker… (what would we do without these people never giving up on GIMP, years after years?!) and promising newcomers like Stanislav Grinkov.

Now let’s applaud our packagers: Jernej Simončič has been around in GIMP for as long as I could remember, flawlessly making Windows installers like a solid rock to rely on; macOS history is bumpier yet Lukas Oberhuber has been doing an outstanding work lately so I sure hope he’ll stay around; on Flatpak side, Hubert Figuière helps quite a lot too (and I secretly 🤫 hope he will end up taking over me maintaining our stable, beta and nightly flatpak-s!).

At the end of the day, GIMP is much bigger than just developers, it’s a community. What would we do without people helping for the website, bug triaging, infrastructure and more? And let’s not forget the translators, so many of them! I just love all of you! Sorry that I cannot just name everyone (in case I forgot you, don’t take it the wrong way, there are just so many awesome people around!).

What I like to tell everyone is that GIMP is both a community software and Free Software, or simply a Community, Free Software. This double concept is extremely important to me and this is why I love GIMP and why both Aryeom and I (from ZeMarmot projet, from which our heavy-lifting contributions really started) stuck with it. This is about humans meeting each others and trying to do something nice together (even though each’s personal end goal might be different). Everything works wonderfully as long as we remember to be good to each other. 🤗

Therefore to all contributors (of any specialties) who helped GIMP so far, I want to say a huge thank you! GIMP is what it is thanks to you! 🙏

GIMP 3.0 approaching

With 4 development versions released already, you know that we are working very hard on the future: GIMP 3.0.

Some features took a lot of time, mostly when we changed core logics. I am thinking in particular about the code for multi-selection of layers. It’s not that selecting multiple items in a list is hard to implement, it’s that any feature in the whole application has been forever expecting just one layer or one channel selected. So what happens when there are 2, 3 or any number of items selected? Every feature, every tool, every plug-in and filter has to be rethought for this new use case. This is a huge work and it has been 2 years I have been on and off on this one in between porting or developing other code and reviewing contributors’ code. Fortunately this change is nearing the end lately (not completely finished though). So that’s a great progress.

By the way, a part of this work has been to get rid of the “link” (chain ⛓ icon in the Layers dockable) concept in favor of multi-selection (and layer search and storage as a replacement concept for the ability to save layer links). This part is also done now. I’ll talk more about this in the GIMP 2.99.10 release news.

Linked layer concept replaced by layer search
Link concept replaced by multi-layer search, lock icons moved - GIMP dev branch

Among other blockers which I listed a year ago, we are steadily progressing on our GTK3 port and Wayland support as well as stabilizing the plug-in API. I do hope these will be considered in a good enough state soon enough so that we can consider having a release candidate.

On the other hand, the space invasion has been a bit on the slow pace in 2021 so this is definitely one topic we need to get back full-on very soon. Same for the extension platform.

GEGL, babl and ctx

The core 🫀⚙️ of modern GIMP is GEGL, a library project nearly as old as GIMP itself, by the same core of people, even though the first tentative integrations only happened in GIMP 2.6, and since then slowly making its way to be the main engine behind most pixel manipulation in the software.

GEGL development has been slowing down a bit since 2019, but mostly because it is becoming stabler by the day, which is really when things are getting good, solid and interesting. Now it would still be unfair to forget talking about the recent support of the CMYK color model in GEGL, which means we are a step closer to get some support in GIMP itself.

Another exciting thing is the new project Øyvind Kolås has been working on these days: ctx, a vector graphics library.

Now I know it may not sound as useful when you develop a raster graphics application, but there are still a lot of intersecting topics. One of these topics is the graphics interface itself which is usually rendered out of vector primitives. In GTK case, the rendering is going through Cairo. Øyvind has been working a lot to both render nicer and faster than Cairo, or similarly, on many cases. ctx also has color-management thought into the framework from the ground up as a first-class citizen.

Of course ctx is still heavily under work as can be seen by the intense commit rate so we’ll have to see where it goes, but this is for sure exciting since Øyvind is a well-proven excellent R&D developer.

There are other areas where ctx is useful, such as the few GEGL operations with vector components which have already been ported to this new library (e.g. gegl:fill-path) and text itself is usually rendered through vector shapes (so who knows what might happen when we improve text support?). GIMP is not going to refocus on vector graphics anytime soon, but we may definitely get more vector-related features as we go (anyone who follow a bit ZeMarmot‘s work knows that we are really looking into improved ways for SVG integration for instance, such as in my early, not merged yet, link layer experiment). When we do more vector work, ctx will definitely be a top contender.

I can already hear Øyvind telling me that ctx is actually much more than these few areas I summed up here. So let me be sorry in advance, Øyvind! This is why this report is in my name, taking into account my own limitations in understanding your bigger plans, and looking forward to be pleasantly surprised and amazed in the future! 🤯

Infrastructure, Documentation

In all software projects, there is a constant which is mostly invisible, yet extremely important: infrastructure.

You might have noticed we did speak a bit more than usual about this in 2021 because it has really been something which used to bother me in my early years contributing to GIMP. I always thought we needed more robust, automated and transparent builds (which is getting there for Windows, macOS and Linux with Flatpak), better download mirrors handling, better continuous integration in general, better end-user documentation (Jacob is on it! And we have plans to get a more automated release and online testing policy of GIMP manual, which should happen in 2022)…

We also had some work done in 2021 around developer documentation: Akkana Peck (well known for having written books on GIMP) and Lloyd Konneker helped set up some initial documentation to port plug-ins and script from 2.10 to 3.0. Akkana also jump-started generating API references for the Python and Javascript bindings (with g-ir-doc-tool). Then very recently Niels De Graef migrated our generic API documentation generation from gtk-doc to gi-docgen, producing much more modern web documentation for plug-in developers. None of these are online yet, only built within the source repository for the time being. Getting an online update procedure for these is also on the TODO list.

New API documentation - GIMP dev branch
New API documentation for plug-in developers - GIMP dev branch

All these topics take a lot of time and are also necessary to get a much nicer experience using GIMP. So I am already quite proud of what we did in 2021 and really excited about our 2022 plans.

Plans for 2022

You might wonder now: when will GIMP 3.0 be released?

Nope sorry, as always, we don’t answer such question. 😛 What we can say is that we are hard at work for this to happen and for sure I’d like it to be earlier rather than later.

As said above, apart from the code itself, I also want us to get our new online manual infrastructure improved before the release, but also our extension framework ready as well as a brand new developer website with documentation and more. So the plans are actually quite extensive and it’s not only within GIMP code itself (though code definitely needs more work too). We’ll see how things go from here!

Don’t forget you can donate to the project and personally fund several GIMP developers, as a way to give back and accelerate the development of GIMP. As you know, myself as maintainer of GIMP (through ZeMarmot project) and Øyvind as maintainer of GEGL are crowdfunding to be able to work full-time on free software. Any funding is appreciated to help us succeed in such endeavour.

I wish you all a nice new year eve and a wonderful year 2022. 🥳

  •  

GIMP 2.10.2 Released

It’s barely been a month since we released GIMP 2.10.0, and the first bugfix version 2.10.2 is already there! Its main purpose is fixing the various bugs and issues which were to be expected after the 2.10.0 release.

Therefore, 44 bugs have been fixed in less than a month!

We have also been relaxing the policy for new features and this is the first time we will be applying this policy with features in a stable micro release! How cool is that?

For a complete list of changes please see NEWS.

New features

Added support for HEIF image format

This release brings HEIF image support, both for loading and export!

Thanks to Dirk Farin for the HEIF plug-in.

New filters

Two new filters have been added, based off GEGL operations:

Spherize filter to wrap an image around a spherical cap, based on the gegl:spherize operation.

Spherize filter
Spherize filter in GIMP 2.10.2.
Original image CC-BY-SA by Aryeom Han.

Recursive Transform filter to create a Droste effect, based on the gegl:recursive-transform operation.

Recursive Transform filter
Recursive transform filter in GIMP 2.10.2, with a custom on-canvas interface.
Original image CC-BY by Philipp Haegi.

Noteworthy improvements

Better single-window screenshots on Windows

While the screenshot plug-in was already better in GIMP 2.10.0, we had a few issues with single-window screenshots on Windows when the target window was hidden behind other windows, partly off-screen, or when display scaling was activated.

All these issues have been fixed by our new contributor Gil Eliyahu.

Histogram computation improved

GIMP now calculates histograms in separate threads which eliminates some UI freezes. This has been implemented with some new internal APIs which may be reused later for other cases.

Working with third-parties

Packagers: set your bug tracker address

As you know, we now have a debug dialog which may pop-up when crashes occur with debug information. This dialog opens our bug tracker in a browser.

We realized that we get a lot of bugs from third-party builds, and a significant part of the bugs are package-specific. In order to relieve that burden a bit (because we are a very small team), we would appreciate if packagers could make a first triaging of bugs, reporting to us what looks like actual GIMP bugs, and taking care of their own packaging issues themselves.

This is why our configure script now has the --with-bug-report-url option, allowing you to set your own bug tracker web URL. This way, when people click the “Open Bug Tracker” button it will open the package bug tracker instead.

XCF-reader developers: format is documented

Since 2006, our work format, XCF, is documented thanks to the initial contribution of Henning Makholm. We have recently updated this document to integrate all the changes to the format since the GIMP 2.10.0 release.

Any third-party applications wishing to read XCF files can refer to this updated documentation. The git log view may actually be more interesting since you can more easily spot the changes and new features which have been documented recently.

Keep in mind that XCF is not meant to be an interchange format (unlike for instance OpenRaster) and this document is not a “specification”. The XCF reference document is the code itself. Nevertheless we are happy to help third-party applications, and if you spot any error or issues within this document feel free to open a bug report so we can fix it.

GIMP 3 is already on its way…

While GIMP 2.10.0 was still hot and barely released, our developers started working on GIMP 3. One of the main tasks is cleaning the code from the many deprecated pieces of code or data as well as from code made useless by the switch to GTK+ 3.x.

The deletion is really going full-speed with more than 200 commits made in less than a month on the gtk3-port git branch and with 5 times more lines deleted than inserted in the last few weeks.

Delete delete delete… exterminate!

Exterminate (GTK+2)!
Michael Natterer and Jehan portrayed by Aryeom.
It’s actually misses Simon Budig, a long time contributor who made a big comeback on the GTK+3 port with dozens of commits!
  •  

An Interview with Michael Schumacher, GIMP administrator

Par :Jehan

This is the second of a series of interviews of various people surrounding GIMP development and community. See also the interview of Mitch, GIMP maintainer

GIMP is made not only by hard-core developers but also through the hard work of many less technically-inclined contributors. Michael Schumacher, aka Schumaml, is a great example of an important core contributor who has been with the project for over 10 years. Mostly known as the project administrator, nowadays he takes care of everything but programming: administrative tasks, management, PR, support…

Schumaml was recently named the maintainer of the 2.8 branch, the stable version of GIMP which only receives bugfixes, showing that it does not require a developer to manage important roles successfully.

This interview was held on Saturday, February 4, 2017, at about 12:27 AM in front of a fireplace and after a day of hacking at Wilber Week. With us were several team members, including Debarshi Ray (Rishi (R)), Øyvind Kolås (pippin (P)) and Simon Budig who also asked questions.

Schumaml, the tie-bearing GIMP office manager
Schumaml, GIMP administrator (photo by antenne used by permission (cba))

Jehan: Hello Michael. You are the GIMP administrator, at least that’s what everybody says.

Schumaml: That’s what everybody says, yes.

J: How would you describe your contribution to the GIMP project?

S: I don’t do much coding. It’s just that so many people — from my perspective — do coding on GIMP already and have a better grasp of the source code and how it is made up. So I don’t think I can contribute much in that regard. I try to do administrative stuff like handling the monetary aspect of the project such as telling GNOME that we need money for events like Wilber Week or for LGM reimbursements… I also care about the bug reports we have. I try to have them categorized, have a proper status, make sure that they get replies, and that we don’t leave a bug report unattended for a long time. Also, I have administrative privileges on the GIMP web server, on mailing lists, and… what else. Do I forget anything? That’s about it, yeah.

I’ve been called the tie-wearing GIMP office manager and I even got a t-shirt with a printed tie and a “TWOM” label, because I’ve actually been wearing a proper shirt (made to measure) at one GIMP meeting during the Libre Graphics Meeting 2012 in Vienna.

Schumaml, the tie-wearing GIMP office manager
Schumaml, the tie-wearing GIMP office manager (photo by houz (cba)).

J: How long have you been contributing?

S: I think I started somewhere between 2001 and 2004. The first contributions were probably getting GIMP buildable on MSYS, the minimal GNU build system on the Windows platform. Because I was annoyed that there were only GIMP builds for releases and not for every commit in between.

J: Was it like nightly builds?

S: No it was not like nightly builds. I just wanted to be able to have a current build for the MS Windows platform and also made on the MS Windows platform, so that I could build on my Windows system I was using at the time. Just to be able to follow GIMP development more closely than using a build someone made for a development release.


J: So you mostly use GIMP on Windows?

S: Back more than 10 years ago, I did use Windows exclusively. So basically, back then I had done the porting of GIMP to the Windows platform.


J: Do you use GIMP?

S: I use GIMP. Not as much as many other people but I use it to test many things of GIMP itself. I use it to edit photos I make. I don’t publish many of the images because when I’m editing them, I print them or I use them for some documentation work, so it goes to a customer. I even still use it on MS Windows, but now my main platform is Linux.


J: What kind of job do you do?

S: I’m working for a company that used to be a part of Siemens, which had been carved out by now. We are selling communication systems - in the past, you would have called these telephony systems. Nowadays this stuff is called “Communication Enabled Business Processes”, like everything which has to do with communication: calling someone or texting someone or exchanging chats or whatever. We are providing the software, the service, and the consulting.


J: Why do you contribute to GIMP?

S: It started due to pure selfishness: being able to have the most current GIMP available to me.

Since then, a lot has changed: I believe in Free Software. I believe software should be available for everyone for every purpose. GIMP is a Free Software project. Around the time I got hooked up with GIMP, I also got hooked up with Wikipedia, which follows the same approach towards knowledge. I feel like — yeah well — I’m contributing to something that helps a lot of people all over the world. I think that’s a good thing. GIMP happens to be the the first major project I contributed to, and I like it. It’s also in-line with the topics I specialized in at university: image synthesis, image manipulation. It kind of seemed like a logical extension.


Schumaml, the tie-bearing GIMP office manager
Not the Formula One driver. (Photo by Pat David (cba))


Rishi: What do you think of Michael Schumacher?

S: (laughs) The formula one driver?

R: Yeah.

S: First thing, you know about his current condition, like probably still in the coma. I hope that he will get better. He probably won’t make it to his former self but at least to a state allowing him to live in a somewhat decent way. He got famous when I was in the so-called German “Gymnasium” (part of secondary education). It was a bit of an annoyance then - I got the same nickname - “Schumi” - as he had. I didn’t follow his career too closely, but knew about every race he won because I would be congratulated at school.

pippin: Have you ever made use of sharing the name?

S: No I haven’t. It got me an interview opportunity with a locale radio station because they were calling all people who had the name “Michael Schumacher” and they were asking them “How hard does this affect your personal life? Has it ever affected you?”. Once, I almost had an appointment canceled because someone thought I was mocking them, but that was the only incident ever.

I’ve never used it. I’ve never abused it. Nowadays, after the end of his professional racing career, it basically didn’t matter anymore.


P: Any controversial theme you wish to be asked?

S: Like the fact that I would like to kill spammers? (Maintain several mailing lists, one forum, be a recipient for “can we haz ads on gimp.org, plz?”, and you’ll know what I mean)

Simon: Not very controversial.


J: What do you want to see in GIMP?

S: Feature-wise, I’m quite OK with what GIMP is right now. I have to admit that some of the current stuff in the GIMP development version is still above my head - for example, I have no real concept yet of the difference between compositing and blending. Learning that it was 2 different things was quite useful. I hope that we can get the documentation of GIMP up-to-speed in time.

I’m more concerned about the project management. As in: how do we decide what new features go into GIMP, how they get into GIMP, and what GIMP development will look like. Particularly post-2.10. You can see it yourself: Right now, our release cycles are much too long. Even the fact that we have actual release cycles is probably bad. If you have a look at services like Twitter or similar, they are constantly releasing. They just push new features out to the people and there is a constant review “this is working, this is not working”. With our long release cycles, users get surprised by “Oh this does not work as it used to. Why have they changed it?”.

The project is still a bit old-fashioned in regard to releases. We are trailing current development models. “Development models” is the term I use because I’m not sure how to refer to this. I’m intrigued by the idea of having stable branches with continuously added new features, but I’m not quite sure if I want 2.10 to be constantly evolving. I would prefer to have 2.12. That’s details.


J: How do you see GIMP in 20 years?

S: First thing: in 20 years, I’ll be 60 (laughs). So I’m not even sure how I see myself at that point. I very much would like to still be part of the project in 20 years. I would still like to be able to see it as an image manipulation program. One of the major Free Software ones. I have no idea at all what it will look like (laughs) because there is so much that can change. Especially in the user interaction. How people interact with software might be the defining factor for how applications will look in 20 years.


J: What’s the feature you are really waiting for?

S: The feature I’m really waiting for… It’s not a feature of painting or image manipulation. It’s about organization. This thing we want to do, Plug-in or Resource Registry 2.0. Properly built and really managed. The thing we talked so much about, have so many great ideas, but always seem to lack the time to do. This is the feature I would like to see.


J: Do you contribute under influence?

S: Yeah, have a look at the 2.8.20 NEWS file. At the typos, which I totally didn’t notice. So now I prefer to not contribute under influence.

J: Indeed you are now the maintainer of the 2.8 branch, or at least the releaser. If not mistaken, you took care of 2.8.18 and 2.8.20 releases. What can you say about this?

S: I guess I should start at why I am doing more 2.8 releases. As I explained before, I’m not interested in coding that much but more engaged in user support and maintenance. Approximately one month before the release of 2.8.18, we had received a report about a security issue in the XCF loading code. It was fixed quickly, for both the development and 2.8 branches, but there was no plan to do a 2.8 release. We have instructions for this, and mitch replied “Just do it!” when I asked about it.

It still felt like flying blind. Had I done the version changes - to 2.8.18, and afterwards advancing to 2.8.19 - correctly? Was the tarball made correctly? Would it build on any other system than mine? It did, but I had still missed two action: the release tag is supposed to be signed (i.e. git tag -s) and the GNOME translations teams should be notified about planned releases with a string freeze be put in place until the release to make it easy for them to complete translations. 2.8.20 was much better prepared and even had an extra long string freeze. I had planned to do it in October 2016, but had to delay it to February 2017, during Wilber Week.

Releasing is definitely something you want to do right, and this means taking a moment of uninterrupted time to do it. My approach towards bug handling has changed a bit, too. I pay much more attention to bugs with attached patches, and try to apply and test those (we really neglected to do this) in order to get them into a stable release.


J: This was a good interview.

S: Thank you for doing it.

  •  

An Interview with Michael Natterer, GIMP maintainer

Par :Jehan

GIMP is Free Software, but even before this, it is people: the ones who create it, the ones who create with it… We don’t have accurate statistics and we take pride on not gathering your data. Yet we know (through other websites that have logged partial statistics over the years) that this is a widely used piece of software, by millions of people around the world. So wouldn’t it be neat to meet some of the individuals who make this project come alive?

Some people think there’s a huge company behind GIMP. This is not the case. GIMP has always been developed by a handful of random people scattered around the world. Most of them are volunteers and none of them work on it full-time. As an insider myself, I’ve wanted to launch a series of interviews with the many awesome people I’ve met since I started contributing. So who better to start with than our own benevolent dictator, GIMP maintainer, and the biggest code contributor: Michael Natterer, aka “mitch”.

This interview was held on Friday, February 3, 2017 at around 3AM in front of a fireplace and after a day of hacking at Wilber Week. With us were several team members, including Michael Schumacher (schumaml (S)) and Øyvind Kolås (pippin (P)), who also asked questions.

Mitch, the man, the myth, the legend
Mitch. The man. The myth. The legend.
The reason your commit probably got reverted.

Jehan: Hello Mitch! In a few words, what’s the close future of GIMP?

Mitch: In 2.10, there is the GEGL port. Then the GTK+3 port immediately after, which will go as fast as possible. We don’t plan many features during the GTK+3 port.


J: What are your preferred features of 2.10?

M: High bit depth, on-canvas filter previews… I don’t actually remember the features of 2.8 [to compare] because I never use it.

J: You use 2.10 instead?

M: Yes.

J: Do you use GIMP often?

M: Mostly for testing what I implement, and also for making postcards I sell in my family business. That’s the only thing I use it for.

A maintainer

J: How did you start hacking GIMP?

M: There was this code that saved the user-assigned keyboard shortcuts for menu actions. The code had an escaping bug where you couldn’t have a hyphen as an accelerator. So I wrote code for escaping the string. That was my first GIMP patch in 1997 or 1998.


J: How did you become the maintainer?

M: I killed the previous maintainer. He is now in my cave in boxes.


Schumaml: Have you ever met the original authors (Spencer Kimball and Peter Mattis)?

M: No. Has anyone?

S: Have they ever contacted you?

M: Yes, they sent me a few plugins which I pushed. Neon, photocopy and cartoon. It was around 10 years after they left the project, one of them comes to me and says “Hey Mitch, I coded 3 plugins, here they are”. Everything looked perfect so I just pushed them as-is, and they still exist.

These days, they’ve been reimplemented in GEGL, but the new versions give different results, so the old plugins are still in the menu.


J: Why do you continue working on GIMP?

M: That’s a good question. (laughs) I don’t know. You guys, perhaps? It can be really annoying sometimes. Why do you guys continue?

J: Me? It’s fun.

M: It’s fun yes but sometimes it’s not fun and you do it anyway.

GIMPers at Montserrat, España
GIMPers at Montserrat.


J: Where do you see GIMP 20 years from now?

M: It will probably end up in a pile of bits rotting in some corner. I may have been thinking the same thing twenty years ago, though, so you never know.

A hacker

J: What do you think of Free Software?

M: It’s the way to go, but you need to use the software which is available for a task, so for some tasks you have no choice but to use something that’s not exactly free.

For example: [pointing to nomis trying to make a label printer work on a GNU/Linux distribution] if you were using the closed-source driver for that, it would work.

*: (laughs)


J: What’s your operating system, distribution, desktop…?

M: Debian Unstable, GNOME 3.

J: You often complain about all these though.

M: Because it’s all shit. Just because you have the least shitty [software] doesn’t mean it’s not all shit. Like autotools. They are shit, but it’s the best shit we have. There is no software that isn’t shit, except perhaps the most simple of software which does one task.


J: What’s your development environment or text editor of choice?

M: Terminal & emacs.


J: How do you like to hack?

M: It depends. Sometimes I need silence and sometimes a crowded room.


J: You are your own boss in a shop. But we see commits from you all the time. Are you hacking in your bookstore when you get free time and don’t have to take care of your employees or customers?

M: Sometimes, but very rarely. I’m mostly hacking in the evenings, or I commit something during the daytime that I worked on the night before until 2AM. If I think “I better go to sleep before I push this”, then I’ll wait until the next day when I’m awake to check it once more before I do.

But I don’t have time to do 5-hour long patches during working hours.

J: You don’t sleep?

M: I don’t really sleep, no.


S: What channels do you use to communicate on behalf or in the project?

M: IRC, and IRC.


pippin: What was the first computer you programmed?

M: It was a Schneider CPC, a variation of the Amstrad. At 15 or 16?


S: How did you write your first hello world?

M: In BASIC of course. My programming languages were BASIC, Assembly, Pascal, Modula-2, C, in that weird order. :) Plus some others at university nobody cares about. :)


J: Do you code under the influence?

M: Always! That’s the only way to code.

XKCD Ballmer Peak
Obligatory XKCD, by Randall Munroe (Creative Commons By-NC 2.5).

GIMP: present

J: So all software is shit, but in the list of shitty software, is GIMP not so bad?

M: I hope so, but of course it’s shitty. We’re just a handful of volunteers doing what companies with hundreds of (paid) people do.

J: But sometimes we do things not so bad, right?

M: Yes, but there is nobody to make sure of it. It’s not often that someone spends the time and effort to make a plugin perfect. Sometimes it happens, but usually it gets dumped on us and that’s it. Ten years later, we look at the code again and say “oh my god, this is complete garbage”. Very rarely do people maintain their code long term and we cannot seriously expect that to happen with everyone being a volunteer here.


S: Is there something you’d like to do much more in the project, apart from coding?

M: In the project? No, coding is fun. I’m happy that I don’t have to do that much administrative work.


S: When will 2.10 be released?

M: Oh go away! The answer is “go away!”. Read my lips: “go away”. When it’s ready.

S: Do you expect it to be this year?

M: Yes of course.

J: So we have a promise!

*: (laughs)

GIMP: future

S: There was this thing that the UI should use Python and the core should use C.

M: Python for the user interface. Horrible! Why?

S: This is something we had discussed.

M: Yes but in the past people wanted to use JavaScript. The year before they wanted to use Java, the year before they wanted to use this, and the year after they want to use that. Now they’re all gone.

Everyone who ever said “I want to use this or that”, and “It’s all shit, let’s use JavaScript”, none of them are still in the project, so…

S: So you don’t see any big changes regarding GIMP in the near future?

M: In the near future definitely not because we need to get some releases out. Unless, of course, there is a well-done patch that doesn’t need weeks of discussion and back-and-forth negotiations on how things should be done.

About using other languages: why not? There is Rust. There is maybe simpler stuff for doing user interfaces, but making such decisions for a codebase the size of GIMP is not something we can decide based on “the latest hot stuff”.

I mean, look at this javascript mess. Is that really better? Just because it’s easier? Easier just means that more clueless people can write code, and they are clueless enough already. So making it easier doesn’t make it better. Arrogant but true.


S: Anything else you want to change?

M: Yes a lot of stuff as long as I don’t have to do all the changes, because I really have enough things to do already (laughs).

You can be the maintainer of whatever subpart, please. Please. Take away the work from me. All contributors need to realize that if they do something really well, they will be in charge of that part.

J: That’s a very good point.

M: If you do it right, then you’ll be in charge of the part you are doing right. It always works like that.

S: They don’t need a blessing from you, right?

M: I don’t do blessings. (laughs)


J: GTK+ comes from GIMP. What do you think of GTK+ now?

M: They lost their minds, but they are also doing really good work. I don’t really understand some of their decisions.

On the other hand, look at the mails we get. People say exactly the same about GIMP: “Have the GIMP devs lost their minds?!?”. I was involved with GTK+ for a long time and people thought that I had lost my mind, which was (and is) probably true. Bottom line is that all is fine between GTK+ and GIMP, I just reserve the right to complain for myself.


S: So we will release GIMP 3 with GTK+3 or 4?

M: They just branched for GTK+ 4.x, so that’s not going to happen overnight.

P: It won’t hurt to suddenly have GIMP 4 instead of 3.

M: No it wouldn’t. If they are done in a few weeks, we’d go for GIMP 4 right away. So why not. That would be cool. (laughs) Or GIMP 5!

J: GIMP 10?

M: GIMP X!

Various rants

S: If you happen to be in a conversation with people talking about GIMP, but they don’t know that you are involved, do you come out as the GIMP principal developer?

M: Only if they start talking utter bullshit, or if things simply need clarification. It has happened, of course. A guy wanted to convert me to GIMP once and I had to tell him: yeah you don’t need to. It was in a non-hacker situation.


J: Who is Wilber?

M: Nobody knows. Wilber is a GIMP.


S: What special device would you like to see GIMP on?

M: This cool Microsoft thing (Surface Studio PC) where they have this hyped video online, and it looks super slick with touch and everything. It’s an ad like Apple used to do in the past and now Microsoft does it, which is a bit weird. The official Microsoft YouTube video makes you want to have one of these things.


S: What advice you would like to give to someone who would want to contribute? What to do and what not to do?

M: Listen to advice and be persistent.

Don’t give up because somebody says “this patch isn’t quite right”, most of the time it won’t be. My first commit to GIMP was reverted immediately.

S: I think you also reverted my first.

M: Yes, that’s kind of a tradition. Everybody fucks up on their first commit and it gets reverted. That’s a good standard.

S: So do not be afraid of errors?

M: Yes exactly. Unless they jeopardize the fate of humanity or something. That’s unlikely.


*: Thanks for the interview.

M: You are welcome!

Mitch at work

Images in this post are courtesy of antenne and used by permission (cba).

  •  
❌