GEGL 0.3.6 Released

Last weekend, we released a new version of GEGL, graph based image processing framework used by GIMP and other free/libre graphics applications. Here are some of the most important changes.

There are two new operations: Saturation (works in both CIE LAB and CIE LCH color spaces) and the port of GIMP’s Selective Gaussian Blur filter. The operations for loading and saving video frames have been updated to work with FFmpeg 3.0. We also disabled the dcraw-based operation for loading raw images by default: the LibRaw-based operation does the job just as well and provides a better API.

Additionally, there have been some improvements in the ‘gegl’ binary: now you can change graph composition (namely, connect buffers to aux and other input pads) via the command line, and when a project is loaded for viewing, you can zoom in/out at cursor position on scroll wheel events. Moreover, you can now specify properties of operations on the command line, e.g.:

$ gegl input.png -o output.png -- threshold value=0.23

Among general improvements, copy-on-write handling for the gegl_buffer_clear function is now available. This should make clearing of buffers an initially cheaper and faster operation, with the actual allocation of tile memory (copying) amortised over subsequent pixel data writes to the buffer.

GEGL 0.3.6 is available at download.gimp.org.

There are still many GIMP filters to be rewritten as GEGL operations. Contributions are welcome!

StreamComputing launches GEGL-OpenCL project

This week, StreamComputing launches an educational initiative that aims to get more developers to study and use OpenCL in their projects. Within this project, up to 20 collaborators will port as many GEGL operations to OpenCL as possible.

Vincent Hindriksen and Adel Johar who organize this project seek a way for the group to educate themselves. One of the ways is to gamify the porting by benchmarking the kernels and defining winners, and another way is to optimize kernels within StreamComputing to push the limits. Victor Oliveira, who wrote most of the OpenCL code in GEGL, joined the GEGL-OpenCL project to advise.

So far 7 participants have joined the project, so if you are interested in learning OpenCL and helping GEGL and GIMP get hardware acceleration for more of their features, email Vincent.

All work is being done on GitHub (check out the project’s description there for information on porting and benchmarking). The communication between participants is taking place in a dedicated Slack channel (request an invite from Vincent or Adel).

StreamComputing is a Dutch software development company that provides training and consulting services in the area of GPU programming and parallel processing.

GEGL is a free/libre graph based image processing framework used by GIMP, GNOME Photos, and other free software projects.

Libre Graphics Meeting 2016

Click here to lend your support to: Libre Graphics Meeting 2016 - London and make a donation at pledgie.com !
Join us April 15-18 at the 11th annual Libre Graphics Meeting (LGM) hosted by the Westminster School of Media Arts and Design, University of Westminster, in London, UK.
Come and meet developers of free graphics software, participate in a workshop, or collaborate with other visual artists who choose to work in free software.


LGM2016 glitch banner

LGM is an amazing opportunity for developers, contributors, visual artists, and supporters of free software projects to come together to work, discuss, and learn from each other.
The meeting will have multiple days of presentations, birds of a feather meetings, and many types of wonderful workshops.
There’s also an opportunity to meet some of the GIMP team as well!

This year the host is the Westminster School of Media Arts and Design, University of Westminster at their Harrow Campus:


University of Westminster Logo

Harrow Campus
Watford Road
Northwick Park
Middlesex
HA1 3TP

If you are unable to join us at the meeting, please consider donating something to help offset the costs of project participants to make the trip out to collaborate with so many other awesome projects!
LGM has a Pledgie campaign running to assist with travel costs for participants:

Click here to lend your support to: Libre Graphics Meeting 2016 - London and make a donation at pledgie.com !

Funds from their Pledgie go towards helping contributors from all around the world converge at the meeting to share and present their work with others.

Special Focus: Other Dimensions

For the 2016 edition of LGM, they are looking at a different aspect of Libre Graphics, Other Dimensions:

For the 2016 edition of LGM we continue speculating and will expand Libre Graphics into Other Dimensions.
We are looking for presentations and workshops that explore the dimensions of space and material: 3D modelling and animation, Libre architecture, Open Source product design and other fields of digital making and manufacture.
We are also seeking contributions that offer reflections on the ‘other dimensions’ of open source communities and that engage with FLOSS tools in various contexts including but not limited to teaching, learning, practice and co-production.
This represents a desire to address the future sustainability of the Libre Graphics movement, through a growth of the core projects and topics that will, we hope, allow us to welcome more and more FLOSS projects and participants to our community.

A History of GIMP + LGM

Over 10 years ago the annual meetings of GIMP developers branched out to LGM, and we have been attending the event every year since.
It’s an opportunity to hold project meetings, talk to fellow contributors to other libre projects, and to get inspired by the work that you, our users, create.

At the 2014 LGM in Leipzig, Germany, members of the GIMP team were cornered for a few moments to capture some portraits.
Here are just some of the faces you might get to see at LGM 2016!

GIMP team montage image by Pat David
Bring this image along as a reference when you want to buy a round of drinks!
For complaints, see this guy.

If you’d like an opportunity to show off your work, come check out others awesome results, or are just curious what’s new and interesting in the world of free software, graphics, and visual art – then we encourage you to come attend LGM2016.

We’ll be excited to meet you in person!

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.

20 Years of GIMP, release of GIMP 2.8.16

This week the GIMP project celebrates its 20th anniversary.

Back in 1995, University of California students, Peter Mattis and Spencer Kimball, were members of the eXperimental Computing Facility, a Berkeley campus organization of undergraduate students enthusiastic about computers and programming. In June of that year, the two hinted at their intentions to write a free graphical image manipulation program as a means of giving back to the free software community.

On November 21st, 20 years ago today, Peter Mattis announced the availability of the “General Image Manipulation Program” on Usenet (later on, the acronym would be redefined to stand for the “GNU Image Manipulation Program”).

Wilber Birthday Strip

Since its public release the project has been evolving in many ways as a testbed for new ideas, which was considerably assisted by adding plug-in architecture. Over the years, GIMP amassed a huge amount of new features designed for all kinds of users and practical applications: general image editing, retouching and color grading, digital painting, graphic design, science imaging etc.

Between 2006 and 2012, the team collaborated with Peter Sikking of man+machine works to define product vision and improve user experience. Thanks to this collaboration GIMP’s user interface has become more conventional for professional users, and various tools have become more powerful and easy to use. But more importantly, we got a much better idea how to design good interfaces.

In the past several years we’ve been working hard on porting GIMP to a newer image processing engine called GEGL. The switch to GEGL made us rewrite or at least tweak pretty much every part of GIMP’s source code. Fortunately, this work is nearing completion, and you’ll soon be able to benefit from all the changes that it’s bringing.

New Releases and The Future

To celebrate the 20th anniversary, we released an update of the current stable version of GIMP. Newly released GIMP 2.8.16 features support for layer groups in OpenRaster files, fixes for layer groups support in PSD, various user inrterface improvements, OSX build system fixes, translation updates, and more changes.

Our immediate future plans are to release first public version in the unstable 2.9.x series that will feature fully functional GEGL port, 16/32bit per channel processing, basic OpenEXR support, vastly improved color management implementation, new tools, on-canvas preview for many filters, and more. This release will encompass over three years of work and become the first milestone towards 2.10.

Following v2.10 release, we shall complete the GTK+3 port that is required to bring back state of the art Wacom support for Windows users. When it’s done and GIMP 3.0 is out, we shall finally be able to get started on some very exciting and much anticipated features like non-destructive editing. Please refer to Roadmap for more details.

New website

In conjunction with the 20th anniversary we have updated and revamped the website.
The vast majority of the work on the new website was done by Pat David.

The update (finally) includes some much needed improvements such as news items with permalinks and full RSS/Atom feeds.
The site is also now responsive to adapt to various screen sizes.
Try it on a mobile device or tablet!

Wilber Birthday Snapshot


Wilber & Co. comics courtesy of Aryeom & Jehan.

GEGL 0.3.0, babl 0.1.2 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=<number of 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.2, 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.

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.