October 16, 2006

The GIMP's next-generation imaging core demonstrated

Author: Nathan Willis

GIMP developer Øyvind Kolås gave a public demonstration of the Generic Graphical Library (GEGL) on Friday at the Piksel 06 festival in Bergen, Norway. GEGL has long been slated to replace the core image processing framework of the GIMP, bringing with it entirely new data models and operations -- but development had languished to the point where many critics had written the project off entirely.
Click to enlarge

GEGL was first proposed in 1999, but the GIMP's existing code base has remained in place over several revision cycles since then. As recently as summer 2005, GEGL appeared for all practical purposes dead in the water. Then Kolås took a determined interest in resurrecting the project, and over the next few months he, Sven Neumann, and Michael Natterer studied the code base and got it into working shape again. Kolås presented their work at the 2006 Libre Graphics Meeting in March.

At that time, the only way to experiment with GEGL first-hand was through a command-line demo package with limited functionality. Friday's demonstration showcased a new graphical interface written by Kolås and available in the current CVS snapshot. The GUI does not implement editing functions, but rather enables the user to test out all of the core operations of GEGL on a live image. This version of the GUI tool implements 87 operations in all.

The GUI's left window contains a operation selection box and a tree view of the active operations. To add another operation to the tree, you right-click anywhere in the tree view, adding the new operation as either a "sibling" at the current level of the tree, or as a "child" of another operation.

Click to enlarge

The right window displays the image resulting from the tree view, updated instantaneously as you add, remove, and rearrange operations in the tree view, or adjust the parameters of the operations.

This live compositing illustrates one of GEGL's unusual design parameters: rather than representing image data as simple pixel arrays, every image in GEGL is a directed acyclic graph -- an ordered, connected set of nodes, where each node consists of an input, an operation, and an output.

Thus all operations are, in a sense, equal -- they can be applied to any graph from a single node up to a complex, multi-level tree, and they can be rearranged arbitrarily, as seen in the GUI demo. Loading an image file and displaying an image on screen are simply two of many possible nodes in the graph.

In order to build GEGL, Kolås suggests users follow the bootstrap instructions at his personal GEGL Web page. The GUI tool is still experimental code -- not useful for editing, prone to crashes, and undocumented. Kolås expects it to attract interest from other developers, who now have a way to explore GEGL's architecture and capabilities.

In spite of these limitations, to fans of the GIMP, the appearance a working implementation of GEGL is a milestone. For seven years, users have been told GEGL was coming, but the existing GIMP core remained in place. Now there is a light at the end of that tunnel.

Click Here!