GIMP team released another development version with a bunch of new stuff again. How could we possibly resist reviewing it?

This is the first development release of GIMP since June 2010. One would be absolutely right to expect a huge amount of changes. I do not intend to cover every single change; if you need full list of changes, please read the NEWS page. Instead, let's focus on what's most important.

Cage transform tool

One of the most noticeable changes in this version is a new tool called Cage transform. It was implemented by Michael Muré during Google Summer of Code 2010 and is based on Green Coordinates paper.

The use of the tool is best explained by the video that Michael recently created to demonstrate some new features of the tool:

As you can easily spot, the tool allows doing things similar to what you can do with Puppet Warp in Photoshop CS5, but in a rather different way. Instead of "skeletal" approach Cage transform applies transformation to an area inside a user-defined cage. Once again: the transformation always happens inside the cage. For that the tool uses a backend which is, essentially, a GEGL operation.

A future version of that operation that works outside the cage would make it possible to implement a version of iWarp filter (similar to Photoshop's Liquify filter) that would work right on canvas. In fact it's a Google Summer of Code 2011 project proposed by Michael who wants to rejoin the team for this summer. Let's hope he'll be accepted :)

Cage transform is the first real GEGL based interactive tool. The team now has a ban for inclusion of new tools that do not rely on GEGL so that transition to GEGL was faster.

Cairofication

One thing you couldn't miss in the video above is that the Cage transform looks differently on canvas. This is because the on-canvas drawing of all GIMP tools has been ported to Cairo to get rid of dated XOR. The result is an up-to-date look. Here is an example of the Path tool.

Note the slick antialiased graphics with semi-transparence. Now, you are probably wondering how non-XOR stuff renders on backgrounds with different fills. I dare say it renders rather nicely. Here is a simple example of a path rendered against different backgrounds:

Apart from tools more parts of GIMP have been ported to Cairo, including various filters and even display filters that got broken after 2.7.1. The team has a new member, Mikael Magnusson, who works on cairofication of filters since recently, so we should expect even more parts of GIMP updated to use modern antialiased graphics.

On-canvas text editing

The Text tool also benefitted from being ported over to Cairo: away is the ugly aliased selection rendering:

But the text tool also got two new features along the way: choosing color for selection and a unit switch, so you can use px or pt or whatever you like.

What it does mean for web designers is that you can finally do proper hyperlinks in your mockups:

Some formatting options like lines spacing and letter spacing are still available from tools options dockable dialog only. This might change in the future, but my overall feeling is that the new text tool is already complete.

Tool presets

For years and years tools presets were under radar for most GIMP users, as far as I can tell. I guess the GIMP Paint Studio project was first to promote this feature by making an extensive use of it. I don't mind telling you it wasn't until G-P-S was first released when I discovered tools presets, and that's some 9 or 10 years after I first saw GIMP. Talk about experience :)

Even so tools presets were not exactly easy to use. If you needed a tool with particular options, you had to switch to that tool first, then select a preset, which also wasn't as easy, especially if just like me you disabled bottom toolbar in the tools options dockable dialog to save some precious space.

Now the new implementation brings a major fix to usability. If you want to switch to a tool preset without changing to that tool first, just go to Tools Presets dockable dialog and click on the tool:

GIMP will switch to that tool automatically and load the preset. The feature is very well known to Photoshop users, so coincidentally that's another migration helper. All tools presets can be tagged, so if you need just transformation tools related presets, you can tag them with "transformation" and later filter presets by this tag. Or if you only need painting presets, tag them with "painting" and filter them by that tag at any time later.

The preset editor you see above allows you to choose which options should be saved to a preset. The upper option, for storing foreground and background colors, is off by default, because very often you want changing size of brush and dynamics but keeping paints intact.

One important thing to note is that the new tools presets have a different storage format, so you will have to redo your existing presets or try a converter that is expected to be shipped with final v2.8.

New slider widget

We already covered that in an earlier news article, but it's quite worth repeating: GIMP now extensively uses a new widget that combines a slider, a label and a numeric input.

The widget is nothing new: some free applications like Ardour and Blender have been using similar widgets since early 2000s. However in this particular case GIMP triggered similar changes in other applications: darktable team redid their widget to put the label inside the slider as well, and both Krita (advanced painting app for KDE) and upcoming new version of Kdenlive (non-linear video editor for KDE) are featuring a very similar solution.

The implementation is not finished yet and is still to be to reviewed by Peter Sikking who is GIMP's usability architect, but the core work is done.

On-canvas progress

This little new feature originally came with the Cage transform tool which required a bit of time for calculations and hence needed some kind of in-place progress indication.

The implementation was most recently propagated to all GIMP's transformation tools, so if you are doing scaling or perspective correction on canvas and it takes a while, the progress will be right in front of you, not somewhere below in the status bar — and that's something that users of high resolution displays will grow to appreciate.

Simple PDF exporting

PDF exporting is one of the long anticipated features that turned out to be easily implemented. The work was done by Barak Itkin, new GIMP's contributor.

The plug-in will save text as text, embedding fonts into PDF, and will attempt to save all flat fills it can find to filled vector objects. The plug-in uses Cairo for exporting both graphics and text and thus is currently limited to RGB color space.

As you can see from the screenshot above, there are also some problems with exporting text, and you can also run into fonts embedding issues. Hopefully those will be fixed in the final v2.8.

API changes

This is going to annoy many third-party scripts and plug-in developers, but since 2.7.1 there have been lots of changes in various APIs. Most or all bundled Script-Fu scripts have been updated to match the changes, but C and Python-Fu plug-ins are still to be updated.

In general, this is a huge cleanup: most changes are related to new item and selection APIs that simplify things a lot. Some of the past API features have been moved to context API. When v2.8 is out, there will be a migration guide for developers.

Downloading and building

An installer for Windows will be available shortly. If you intend to compile GIMP yourself, the new version introduces a requirements bump. You now need GTK+ >= 2.24.3, Cairo >= 1.20.1, gdk-pixbuf >= 2.22.1 and GLib >= 2.28.1. The source code archive is available here. As usual, Ubuntu users can simply rely on the unofficial PPA with nightly builds.

Overall impression

I've been using Git builds of my own ever since work on 2.7.x started, so the changes between actual versions look a bit blurred to me. However even from the list above it's easy to see that v2.7.2 is a major step towards final v2.8 that brings both new unique features and some cleanup that was long overdue.

There are still loose ends all around, with unfinished optional single-window mode being the most notorious one. The current estimation for v2.8 release is end of November, and you can track it at TaskTaste — a new web service created by Martin Nordholts, one of GIMP's core developers.

With layer groups, on-canvas text editing, better-than-Photoshop paint dynamics and all kinds of usability fixes the final v2.8 is going to be a revelation for many users who didn't need hi-end features, but were annoyed by this or that GIMP's shortcoming.

What's next

Since recently the team has a feature roadmap that makes it crystal clear: the mistake of trying to fit as much as possible into 2.8 with too few actual developers is already addressed, and the team now is going to release new versions faster. There are no time-wise estimations for releases past 2.8 yet, but here is something for you to muse over.

First of all, the GTK+3 port that is planned for GIMP 3.0 already started last winter, and a lot of work has already been done. Which means that by the time work on 3.0 starts, the port will probably be complete, so the team is likely to focus on high bit depths support solely.

The GTK+3 port itself is not exactly something purely technical you can skip. Apparently with deeper integration of Cairo the GTK+ team fixed some major unpleasantness regarding rendering performance. Early tests of GIMP's GTK+3 port reveal that it's possible to paint with 500 to 1000px large brushes on canvases as large as 5000×5000px with barely any delays.

The next important thing is that some of the GIMP 3.x features are on the project ideas list for this Google Summer of Code, and there have been proposals for some of them. Whether proposals will become actual projects, and whether projects succeed — it's something we'll just have to wait and see.

Meanwhile if you feel like contributing to the project, have a look at what can be done in both programming and non-programming ways. As community project GIMP relies on you.