GIMP and GEGL in 2015

We hope you are having great holidays. Here is our annual report about project activities in 2015.

It’s been an interesting year for GIMP. For the most part, we focused on completing the GEGL port which involved rewriting all the source code related to color management. The vast majority of this work was done by Michael Natterer between April and November. The new implementation is much cleaner and is built right into the core of GIMP. Here are some of the new features:

  • pasting an image into another image that has a different color space just works now;
  • GIMP detects color space defined in Exif 2.21/DCF 2.0 option files;
  • greyscale images are finally color-managed;
  • layer and image previews are color managed too now.

The few missing features are color management for the color picker tool and color selection dialogs. This will be completed before the final v2.10 release.

Michael Natterer also resurrected Intelligent Scissors selection tool—the last one that wasn’t ported to GEGL—and added undo support for selections in progress.

Elle Stone added decomposition and composition of images to/from CIE LCH, a perceptually uniform color space that includes all perceivable colors and thus has a gamut larger than color spaces based on RGB and CMYK color models.

Rupert Weber, Jörn Meier, Massimo Valentini, Elle Stone, Thomas Manni, and Michael Natterer introduced a few improvements to the blending modes:

  • The Overlay mode is not identical to Soft Light mode anymore and relies on a widely used formula from both PDF AND W3C’s “Compositing and Blending Level 1” specification now.
  • There are CIE LCH based version of Hue, Chroma, Color, and Lightness blending modes available now in addition to their HSV based versions. See an explanation by Elle Stone for details.

Another development focus was on painting features. As requested by people using GIMP for digital painting, Jehan Pagès and Michael Natterer added the automatic saving of used colors into a new Color History palette. The palette is also part of the color selection dialog and the FG/BG dockable dialog.

In early 2015, Michael Natterer added a quick first version of MyPaint Brush tool that used MyPaint’s brush engine available separately. Daniel Sabo, Alexia, and Jehan Pagès revisited this mini-project in December and vastly improved it by making its performance comparable to GIMP’s own brush engine and adding support for smoothing brush strokes. Michael also made it possible to tag and filter MyPaint brushes. The tool is now very stable enough and will be enabled by default in future releases of GIMP.

MyPaint Brush tool in action
MyPaint Brush tool in action. Painting courtesy by Alexia

Additionally, Michael Natterer added canvas flipping that nicely complements canvas rotation and is intended to help painters evaluate their work mirrored horizontally or vertically without having to undo the transformation. Thanks to Simon Budig you can map shortcuts to various commands related to both canvas rotation and flipping to speed up your workflow.

Rotating and flipping the canvas
Rotating and flipping the canvas. Painting courtesy by Evelyne Schulz

We also improved support for various file formats:

  • Tobias Ellinghaus from the darktable team made the EXR loading color-managed by generating an ICC profile from the embedded white point and chromaticities on the fly, assuming linear gamma images.
  • ShadowKyogre, Massimo Valentini, and Michael Natterer fixed several existing bugs in the PSD plugin and improved support for PSD files with greater than 8-bit depth precision.
  • Mukund Sivaraman and Tobias Ellinghaus added the reading and writing of PFM (portable floatmap) files commonly used in HDR imaging.
  • Joao S. O. Bueno implemented exporting and loading group layers in OpenRaster files—a new feature in upcoming MyPaint 1.2.0.
Adjusting exposure of a 32-bit float PFM file
Adjusting exposure of a 32-bit float PFM file

The next development focus was on GIMP’s visual identity.

Benoit Touchette, Michael Natterer, and Jehan Pagès added the ability to switch between icon themes. GIMP now ships with an optional symbolic icon theme originally created by Barbara Muraus with contributions from Jakub Steiner, and Klaus Staedtler.

Benoit Touchette also added an experimental dark theme that should work better for people who work on hi-color images. GIMP also ships a negative version of the symbolic icon theme to go with the dark theme.

Editing a photo in GIMP with a dark theme enabled
Editing a photo in GIMP with a dark theme enabled. Photo courtesy by Pat David

Michael Natterer revisited the screenshot plug-in’s source code. It is now easier to add support for new screenshooting backends (Windows, Wayland etc.).

Michael Henning and Massimo Valentini fixed several bugs in the image ruler code that affected performance during painting. This vastly improved painting experience on Linux, but we hear that Windows users still experience issues, so we’d appreciate a wider testing and code contributions. For now, you can temporarily disable the ruler for your painting sessions.

Johannes Matschke contributed an experimental Handle Transform tool that allows scaling, rotation, shearing, and adjusting perspective with handles placed by a user on the canvas. Michael Natterer further improved the tool’s usability.

Michael also merged, improved, and marked as experimental another new tool, N-Point Deformation, contributed by Marek Dvoroznak a few years ago as the main objective of his Google Summer of Code project. The tool makes it possible to apply rubber-like transformation to objects.

GEGL 0.3.0, released in June, featured over 70 new filters/operations, as well as experimental multithreading and mipmaps support. We do not extensively use mipmaps in GIMP yet, but this will change in the coming releases. Further GEGL updates released this year reintroduced the loading and saving of video frames via FFmpeg, various optimizations, and more new operations, such as libraw based operation for loading RAW images (not yet exposed in GIMP).

Most of the work we did this year is available in v2.9.2, the first development release in 2.9.x series made in late November. Improved MyPaint Brush tool and visual changes (icon themes, dark theme) will be available in upcoming v2.9.4 release.

We expect to continue finalizing the GEGL port and the existing feature set in 2016. There are two branches with new features to review, but other than that we do not expect any major changes in the 2.9.x series of releases.

Last but not least, we owe a great debt to Pat David for redesigning and launching our new website for the 20th anniversary of the project that we celebrated in November.

Libre Graphics Meeting 2016 Calls For Participation

On April 15—18, the Libre Graphics Meeting 2016 conference is taking place in London.
We invite you to attend and meet developers of free graphics software, lead a workshop, or participate in one.

The GIMP team and Libre Graphics Meeting (LGM) go way back.
In 2005, annual meetings of GIMP developers branched out to a new conference that embraced developers of free software, graphic and type designers, photographers, and 3D artists. That conference was LGM.

Ever since then we attend the event every year to hold project meetings, talk to fellow developers from other libre projects, and get inspired by the work that you, our end-users, present.

If you are a GIMP user with outstanding skills in graphic design, painting, illustration, or photography, we encourage you to attend LGM 2016 and do a GIMP workshop.
Please use this submission form to send a proposal.
Submission deadline is January 10, 2016.

There are, of course, more formats for active participation: longer and shorter talks, hackathons, Bird of a Feather meetings, etc.
You can learn more about those from the press release.

We’ll be excited to meet you in person!

GIMP 2.9.2 Released

We are excited to announce the first development release of GIMP in the 2.9.x series. It is another major milestone towards making GIMP a state-of-the art image editing application for graphic designers, photographers, illustrators, and scientists.

The new version is already available in the Downloads section.

GEGL Port

GEGL is GIMP’s new image processing engine. The GEGL project was originally launched in 2000 by several developers from visual effects company Rhythm&Hues who needed a versatile image editor for movie production.

From the very beginning, GEGL was a challenging project, since no general image editing software at the time was built on top of the node compositions concept, and GEGL had to be designed with just that in mind.

In 2007, GIMP developers Sven Neumann, Michael Natterer, and Øyvind Kolås started porting GIMP to use GEGL. However, this process had to be broken up into several stages, because GIMP’s source code was already huge at the time.

So GIMP 2.6 (released in 2008) featured optional use of GEGL-based color grading tools and an experimental tool to use GEGL “filters”. Then GIMP 2.8 (released in 2012) featured GEGL-based projection—flattened representation of stacked layers.

Now upcoming GIMP 2.10 is going to use GEGL for pretty much everything under the hood, and v2.9.2 is the first technical preview release on the way towards v2.10.

While a few advanced features of GEGL such as non-destructive editing are planned to be exposed in GIMP at a later development stage (v3.2 and onwards), with 2.9.2, you can already benefit from certain aspects of the new engine, such as:

  • 16/32bit per color channel processing
  • Basic OpenEXR support
  • On-canvas preview for many filters
  • Experimental hardware-accelerated rendering and processing via OpenCL
  • Higher-quality downscaling

Additionally, native support for PNG, TIFF, PSD, and FITS files in GIMP has been upgraded to read and write 16/32bit per color channel data.

32bit float OpenEXR file in GIMP
GIMP loads simple 32bit float OpenEXR files and automatically switches to the respective precision mode (featuring a Cornell box reference file).

New and Improved Tools

All tools in GIMP are now GEGL-based and fully functional in up to 32bit per color channel precision mode.

GIMP 2.9.2 also introduced two new tools that we consider mostly complete:

  • Unified Transform, designed by Peter Sikking and implemented by Mikael Magnusson, combines rotation, scaling, skewing, and adjusting perspective in a single tool.
  • Warp Transform, implemented by Michael Muré, replaces the old iWarp plugin and provides its features in a tool that works directly on images, without a preview window.

We have also improved several existing tools:

  • Blend tool, worked on by Michael Henning, is now more interactive. After drawing with the tool to define the beginning and the end of the gradient fill, you can adjust start/end positions and change colors.
  • Align tool now features vertical and horizontal fill modes thanks to João S. O. Bueno.
  • Foreground Select tool can finally make subpixel selections in complex cases such as strays of hair on textured background. Two new masking methods for that were added by Jan Rüegg and Daniel Sabo, and the user interface was updated by Michael Natterer.

Several new experimental tools can be enabled on the Playground page of Preferences dialog:

  • N-Point Deformation, by Marek Dvorožňák, implements a new way to bend objects while preserving a natural look.
  • Handle Transform, by Johannes Matschke, is an interesting approach at applying scaling, rotating, and perspective correction using handles placed on the canvas.
  • Seamless Clone, by Barak Itkin, simplifies merging one image into another by adjusting brightness and colors of the pasted image to match the look of the image it is pasted to.
  • MyPaint Brush tool is our first shot at using more brush engines in GIMP. The code was written by Michael Natterer.

All the experimental tools are subject to performance optimizations, bugfixes, user interface redesign etc. We do not guarantee that they will be enabled in v2.10 by default.

File Format Support

Thanks to Mukund Sivamaran, Rasmus Hahn, and Øyvind Kolås, GIMP now features basic support for OpenEXR files, both loading and exporting. It’s currently missing advanced features such as layered or multiresolution EXR files, or unpremultiplication when exporting etc., but you should be able to load, process, and export a “regular” floating point EXR file just fine.

Additionally, GIMP 2.9.2 features initial support for WebP images, also both loading and exporting. Missing features so far are ICC profiles, metadata, and animation.

Color Management

The color management plugin has been replaced with completely new code by Michael Natterer to provide a more complete set of features, as well as better color fidelity preservation. E.g. GIMP can finally handle cases, when one image is pasted into another, and color spaces don’t match.

GIMP now uses LittleCMS v2 which minimizes color fidelity loss during conversions between 8, 16, 32, and 64bit per channel data, and provides support for ICC v4 color profiles.

Displaying ICC color profiles metadata
Displaying ICC color profiles metadata

There are still some parts of GIMP like color choosers that need to become color-managed. We expect to complete this in time for v2.10.

Layers Blending

We have introduced some important changes to blending modes.

Overlay mode is not identical to Soft Light mode anymore and finally relies on a widely used formula from both PDF specification, as well as W3C’s “Compositing and Blending Level 1” spec.

When opening legacy XCF files, GIMP will automatically map the old Overlay mode to the Soft Light during compositing to preserve the rendering of your old artwork. For all newly created layers with Overlay mode the new formula will be used instead.

In addition to HSV-based Hue, Saturation, Chroma, and Value modes GIMP now features their CIE LCH based counterparts: Hue, Chroma, Color, and Lightness. Elle Stone provided a nice example of using them to post-process photos.

Contributors are Rupert Weber, Jörn Meier, Massimo Valentini, Elle Stone, Thomas Manni.

Metadata

GIMP 2.9.2 features an experimental dialog to view Exif, XMP, and IPTC metadata—something that we’ve been meaning to provide photographers for quite a while. It doesn’t yet support adding or editing existing metadata—this will be addressed at a later stage of development.

Just like the new color management implementation, metadata support is an integral part of GIMP now.

Digital Painting

Apart from the newly added experimental MyPaint Brush tool, there are several major and minor changes:

  • Canvas rotation and flipping have been added to facilitate users who need to paint from a different angle or check composition for errors.
  • You can optionally lock brush size to zoom.
  • All tools that use GIMP’s brush engine now have hardness and force sliders.

The final v2.10 release is expected to feature configurable mirror painting implemented by Jehan Pagès thanks to GIMP users who supported his crowdfunding campaign. The code is mostly complete and will undergo review in the coming weeks.

Configurability

To help interested users test experimental features, we added a new Playground page to the Preferences dialog. In v2.9.2, it serves to enable experimental tools that we mentioned earlier in the news.

Behaviour, another new page in the Preferences dialog, helps configuring default snapping in normal and fullscreen modes.

Behaviour page in the Preferences dialog
Behaviour page in the Preferences dialog

Finally, the user interface to enable and disable tools in the toolbox has moved to the Toolbox page in the Preferences dialog.

Known Issues

At this stage, GIMP 2.9.x is mostly very stable and is known to be used in production by some brave users. However, certain image processing operations are currently slow. This has been partially remedied by rendering changes in the viewport first. We expect to do a lot of optimization work later on.

Further Plans

We are not planning any epic changes in the next 2.9.x releases. We want to release it as fast as we can, so we will be focusing on wrapping up what we have already started any maybe merging a few feature branches we have.

When GIMP 2.10 is out, we shall focus on the GTK+3 port to provide a more up-to-date user interface and restore rock-solid Wacom support on Windows and OS X.

Following GIMP 3.0 release, we shall start working on non-destructive editing and other much anticipated features.

GEGL 0.3.0, babl 0.1.12 Released

We have just released new versions of GEGL and babl, the libraries that take all the heavy lifting for color space conversion and image processing in GIMP. Both releases are considered a pre-requisite for doing a first 2.9 (development series) GIMP release.

The babl library got floating point conversions optimized. Additionally, HSV and HSL color models were added, CIE LAB conversions were fixed.

Most exciting improvements, however, are in the new GEGL release. A total of 71 new image processing operations were added: mostly these are ports of existing GIMP filters. Some of the existing operations were improved, and some got OpenCL versions.

Another focus of this release was performance: OpenCL support is now enabled by default when detected, there’s experimental multithreading support (use GEGL_THREADS= environment variable) and experimental mipmap rendering (use GEGL_MIPMAP_RENDERING=true environment variable). There’s also a new default tile backend that writes to disk in a separate thread.

The Grid project contributed several major improvements: support for using URIs in image loaders and the loading of meta-operations in JSON, created with imgflo’s online graph editor.

GEGL’s website now features a gallery of available operations and an API browser.

This release of GEGL was brought to you through contributions from 92 people.
Respective source code downloads are available on gimp.org: babl 0.1.12, GEGL 0.3.0.

There is still a lot of work to be done. If you are interested to contribute ports of GIMP filters to GEGL or entirely new GEGL operations, please visit our wiki and join #gegl on irc.gimp.net.

ZeMarmot, Libre Movie to be Made with GIMP, Blender, Ardour

During Libre Graphics Meeting 2015 last week in Toronto our very own Jehan Pagès announced a new open animated movie project, ZeMarmot. It’s a road movie with a marmot as protagonist.

The team will be using just free/libre applications for the production: GIMP, Blender, Ardour, and a few others. Jehan will also resume his work on animation features in GIMP, extend OpenRaster file format to support animation, and improve Blender’s non-linear video editor as much as he can.

You can support the campaign at IndieGoGo.

GIMP and GEGL in 2014

In 2014, we spent most of the time on improving GIMP’s usability and finalizing the GEGL port of GIMP to lay the foundation for various advanced features in demand by professionals. Some of the 2014 highlights are:

  • Redesigned Blend tool, now you can tweak end points before applying the gradient fill;
  • Improved foreground selection tool that handles fine details like hair;
  • Finer control over painting dynamics;
  • Up to 64bit per color channel processing;
  • Improved file formats support, including 32bit TIFF loading/saving.

A far more detailed report has been posted to project’s mailing lists.

What we did in 2013

Before you leave for the holidays, we thought you’d like an overview of what we did this year to improve GIMP for you.

Most of the time was spent on improving the GEGL-based version of GIMP (to be released as v2.10) and porting GIMP plugins to GEGL, so that you could benefit from 32bit float precision per color channel as much as possible.

We also successfully participated in Google Summer of Code 2013 and merged more code from GSoC2012 into the main development branch, namely Seamless Clone and Warp Transform tools.

You can find out a lot more in this detailed report. We wish you to have a great time with your family and friends!

GIMP 2.8.10 released

We just released GIMP 2.8.10 ! This is a release in the stable GIMP 2.8 series. This release fixes a bug that prevented older GIMP versions from running on OS X Mavericks. We also did some small adjustments to the Save/Export code in order to make things a bit easier. For the complete list of changes please see the NEWS file.

Google Summer of Code 2013 Results

GSoC2013 program is over now, and 3 out of 4 students successfully completed it.

Carlos Zubieta ported 13 GEGL operations to use GPU via OpenCL, and the gegl-random module used by noise generation operations, then made noise-hsv and noise-cie-lch operations use it. You can read his report.

Simon Lui ported the PSD plug-in to use GEGL. GIMP is now capable of loading 16bit and 32bit per color channel PSD files, saving those is a work in progress. The updated plug-in also reads additional data from PSD files (text, slicing information, layer effects), but cannot use it yet: text support needs the relevant API in GIMP, and layer effects and slicing aren’t implemented in GIMP yet, so there’s nothing to map the information to as of now. His public report is here.

Marek Dvorožňák implemented a new N-Point deformation tool that makes it possible to deform objects while preserve shapes consistency. You can watch a video demonstration of the tool on YouTube. The work is based on a “As-Rigid-As-Possible Image Registration for Hand-drawn Cartoon Animations” paper by Daniel Sykora et al.

Finally, Ajay Ramanathan attempted to merge selection tools into a single tool selection with modes (rectangular, ellipse, single row/column, N-side polygon selection modes).

All the source code created by our students is available in respective Git branches. We will review it and make sure we use the most of it. We thank Carlos, Simon, Marek, and Ajay for working with us over the summer and we are looking forward to working with them in the future!

Sponsoring symmetric painting mode

Jehan Pagès, one of our active contributors, started a personal crowdfunding campaign to sponsor his work on symmetric painting in GIMP. You can find more information in his blog, and there’s a video of a proof-of-concept implementation on YouTube. If you care about GIMP as a tool for digital painting, supporting this project is likely to benefit your workflow.

While we are not ready for a full-fledged crowdfunding campaign for GIMP yet, we think that this kind of focused campaigns, tailored for particular audiences, definitely have merit.