2016 in review

When we released GIMP 2.9.2 in late 2015 and stepped over into 2016, we already knew that we’d be doing mostly polishing. This turned out to be true to a larger extent, and most of the work we did was under-the-hood changes.

But quite a few new features slipped in. So, what are the big user-visible changes for GIMP in 2016?

Better Handling of Layers, Channels, Masks, and Paths

Michael Natterer eliminated one of the big issues with the clipboard: not having an easy way to copy/paste layers and layer groups from one project to another. Now you can just select a layer or a layer group in the ”Layers” dialog, press ”’Ctrl+C”’, switch to a different project and press ”’Ctrl+V”’.

The ”Layer Attributes” dialog, which hasn’t been very useful, now provides the single UI for setting layer’s name, changing blending mode and opacity setting offset in X/Y, toggling visibility, link status, various locks.

Newly added color tags improve layers management and can be set via ”Layers” menu, ”Layer Attributes” dialog. They are also accessible via shortcuts and available for channels and paths (we don’t expect people to use it a lot, but it was too easy to implement).

The color tags feature is currently not very useful without multiple layers selection. This is something we’ve been meaning to do for quite a while. Last year we did a basic research on that, but we don’t expect to accomplish this task in time for GIMP 2.10, unless someone contributes a very good patch. If you are interested in helping out, please talk to us.

Moreover, for people who use a lot of masks, the workflow has been streamlined. Now GIMP remembers the last type of mask initialization, and you can use key modifiers + mouse click on layer previews to create, apply, or remove masks. Additionally, there’s a new button for that as well.

Remembering Defaults Across Sessions, Improved Configurability

We had to figure out a sane way for GIMP to remember last mask initialization settings, so we devised a whole new infrastructure to remember settings of various dialogs. The user interface to adjust those settings is now live on the new ”Interface -> Dialog Defaults” page in the ”Preferences” dialog. See the Making settings persistent in GIMP post for more details.

We also made various GIMP settings resettable in the ”Preferences” dialog. And since GIMP is a huge app, where settings tend to accumulate over the years, we added a vertical scrollbar to keep the height of the dialog sensible. Additionally, we reorganized some of the settings, e.g. on the ”Color Management” page.

Color Management

We already introduced a handful of changes to the color management implementation in 2015, when the code was rewritten by Michael Natterer pretty much from scratch become a core feature rather than a plug-in. But there was more to follow.

Now everything is color-managed in GIMP: all sorts of previews, the Color Picker tool, the painting tools etc. The only missing bit is the on-canvas preview for GEGL-based filters. Color transforms are extremely slow with LittleCMS, so we shall need more time to figure this out.

On a related matter, the Color Management section of the Preferences dialog now features new options to toggle color transforms optimization, so that you could choose between performance and color fidelity.

Additionally, toggling soft-proofing is just a few clicks away in the ‘View -> Color Management’ submenu now, along with rendering intent settings.

Better Tools

While we didn’t intend to work on tools a lot, there have been several interesting updates:

  • The ”Align” tool now has vertical offset setting (contributed by Jonathan Tait).
  • The ”Move” tool shows relative coordinates when moving guides and sample points (bug #770911).
  • The ”Text” tool got improved support for languages using Input Method Engines (contributed by Jehan Pages).
  • Both the ”Bucket Fill” and the ”Fuzzy Select” tool have a new ”Diagonal neighbors” option to select diagonally neighboring pixels (contributed by Ell).
  • The ”Intelligent Scissors” tool now allows to remove the last added segment with the ”’Backspace”’ key.

Split preview for GEGL-based filters

Michael Natterer added a new on-canvas preview feature for GEGL-based filters: splitting the view to compare the image before and after applying the filter. You can drag the ‘curtain’ to adjust the view and use key modifiers to swap before/after sides and the direction of the split (horizontal/vertical).

darktable

Tobias Ellinghaus of the darktable project contributed a new plug-in to load raw files into GIMP by having them developed in darktable. This is only available on platforms supported by darktable, i.e. Linux and macOS.

Since there is more than one raw processing plug-in out there, we intend to eventually add a way to set preferred raw plug-in. You can contribute a patch for that.

WebP support

Pascal Massimino and Benoit Touchette contributed a new WebP plug-in that supports loading/exporting of WebP files, along with ICC profiles, Exif and XMP metadata. The plug-in also supports animation.

Painting

In early 2016, we finally merged the branch by Jehan Pagès that introduces symmetric painting to all painting tools (Paintbrush, MyPaint Brush, Eraser etc.). The feature is available via a dedicated dockable dialog on per-image basis. Modes: Mirror, Tiling, Mandala (Kaleidoscope). The work on this feature was directly sponsored by the part of the community that uses GIMP for digital painting.

For bitmap brushes, GIMP now caches hardness and disables dynamic change of hardness to improve painting performance. Bitmap brushes also don’t get clipped anymore, when hardness is less than 100.

User Interfaces Changes

One of the most visible changes in GIMP is the new user interface themes along with new icon themes, available since v2.9.4 released last summer. We now ship GIMP with “Dark” theme and “Symbolic” icon theme enabled by default.

GIMP ships with 5 new themes (lighter, light, gray, dark, darker) overall. For users who prefer the old UI, we still ship the old default UI theme along with old colorful icons. There’s also some ongoing work on vector-based icons for better Hi-DPI displays compatibility.

We also fixed a number of usability issues. E.g. toolbox buttons do not grab focus anymore, which used to break the use of the ”’Tab”’ key and other canvas-related shortcuts after changing tools with a pointing device click.

GEGL and babl

GEGL and babl got their fair share of development focus. We only added a handful of new operations (”Saturation”, ”Gaussian Selective Blur” etc.), because most work on GEGL was performance improvements, house cleaning etc.

One interesting change, though, is the new ”gegl_operation_progress” function to report processing progress. It’s useful for reporting processing progress to a GEGL-based editor such as GIMP. For now, we use it in ”cartoon” and ”distance-transform” operations, but expect to use it in many more ops.

For babl, most changes were about improving performance (creating fast pixel data conversion paths and caching them) and fixing bugs.

What’s Next for GIMP

There are still many bugs to fix before we can release 2.10. In the mean time, we are planning to hold a week long developers meet-up in Barcelona at end of January. One of the topics will be cleaning up libgimp to get it into the releasable state for 2.10. We shall soon announce the full agenda for the Wilberweek.

Another upcoming major change is how linear/gamma-corrected workflows are implemented in GIMP. Since early January, Michael Natterer and Øyvind Kolås have been hacking on GIMP to make layer modes work on both linear and gamma-corrected image data correctly. This involved a lot of source code reorganization, and a major part of that work is already done.

Additional changes currently live in the ‘pippin/linear-is-the-new-black’ Git branch soon to be merged, and we hear good reports about it from some of our most sceptical users already.

Some other exciting news deserve a separate announcement.

We expect to ship GIMP 2.10 with 16/32-bit per color channel support, new color management implementation, and a great many improvements overall later this year. Our next focus will be completing the GTK+3 port to make the graphic tablets support fully functional on all supported platforms again and prepare GIMP for even more long overdue changes such as non-destructive image editing.