From GIMP Developer Wiki
Jump to: navigation, search

For this year's Google Summer of Code program we are deliberately focusing on core features with little-to-zero involvement of programming user interfaces. Here are some project ideas to get inspired from.

For history of GIMP and GSoC, along with past ideas, see Hacking:GSOC_Archive, and for details about applications see Hacking:GSOC‎

The GSoC timeline for this year can be found at http://www.google-melange.com/gsoc/events/google/gsoc2015.

Improve on-canvas interaction for editing tools and selected GEGL operations

With upcoming v2.10, GIMP is moving towards tools that rely more on on-canvas interaction and less on numeric inputs. However there is a lot of room for further improvements.

One such case is feathering which used to make smooth rather than sharp selections. Currently GIMP doesn't visualize the feathering of a selection, hence understanding its impact is only done by trial and error. GIMP needs an on-canvas cue to show exactly where the feathering ends and provide a simple control to drag for adjusting that feathering value visually. Both cue and control should be available for all selection tools.

Another example is providing better user experience for creative image manipulation. Right now in GIMP most GEGL operations are controlled numerically from a floating dialog with various settings. However some of these operations would benefit from having on-canvas controls to help users make direct visual decisions on adjustment of the content. The on-canvas widgets would complement rather than replace numeric input to preserve the ability to make precise adjustments.

Here are some examples:

  • Vignette operation could have on-canvas ellipse-shaped (or rectangle-shaped — depending on custom settings) widgets to control size and softness of the darkening effect (see darktable for a reference);
  • Lighting Effects operation (the existing filter is yet to be ported to GEGL) could have on-canvas widgets to show where the light should fall on, and what the distance from the source of the light is.
  • Motion Blur operations could have draggable on-canvas controls for setting the center of the blur and the angle.

Minimal Student Requirements:

  • Good C knowledge
  • Highly recommended — some knowledge of GIMP's internals (core/tools/etc.) and basic Cairo programming.

Completing the GEGL port

One of the primary reasons why GIMP 2.10 hasn't been released yet is that file plugins (loaders/exporter) have to be ported to GEGL and GIO. Focusing a GSoC project on either of those tasks would immensely benefit the project.

Please refer to the Hacking:Porting_file_plugins_to_GEGL_and_GIO page for status of file plugins.

Minimal Student Requirements:

  • Good C knowledge
  • Highly recommended — some knowledge of GIMP's internals (core/tools/etc.)
  • Highly recommended — being familiar with GIO

Improving GIMP for VFX and production of movies

Thanks to Mukund Sivamaran, GIMP 2.10 will be shipping with a very basic OpenEXR loader. But much more could be done:

  • adding more user-accessible settings for the importer of EXR:
    • exposure and gamma (reusable GEGL op is ready)
    • un-premultiply option
    • reading layers
  • writing the currently missing code for exporting EXR with settings:
    • format and type
    • compression
    • handling alpha channel
    • storage type
    • image region
    • exporting layers
  • adding support for OpenEXR v2 specific features

Additionally it would be useful to lay the foundation for OpenColorIO support as complementary to LittleCMS-based color management support. OCIO is commonly used in the VFX industry.

Minimal Student Requirements:

  • Good C knowledge
  • Highly recommended — some knowledge of GIMP's internals (core/tools/etc.)
  • Highly recommended — being familiar with VFX workflows, OpenEXR

Name your own idea

We are looking for students who are passionate about GIMP and, therefore, have a good understanding of what it's capable of and what it's sorely missing. Therefore, we are mostly interested in working with students who can come up with a project idea of their own that matches GIMP's product vision.

It could be implementing interesting new image processing algorithms or improving support for various file formats. Have a look at a past GSoC ideas list for inspiration, think of what you really want GIMP to be able to do, figure out if you have the skills and the stamina to make it real, then talk to us.