Hacking:GSoC/2012/Ideas
From GIMP Developer Wiki
WORK IN PROGRESS!
This page is the official ideas list for GIMP (and GEGL's) application to Google Summer of Code 2012.
GIMP is the Gnu Image Manipulation Program, and GEGL is a Graph based Image Processing Library. GEGL is being designed (mainly, but not only) to be GIMP's new core which will allow better parallelism, better memory management, non-destructive editing and higher bit depths.
For more GEGL ideas, see gegl.org/contribute.html
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: www.google-melange.com/document/show/gsoc_program/google/gsoc2012/timeline
Contents
|
Recommended
Ideas which are generally considered as good for GSoC this year, and are recommended for students. Note that students are strongly encouraged to come up with their own project - this list is not exhaustive. A submission to gsoc which is just a copy-and paste job of one of these suggestions is not likely to be accepted.
Note about mentors: Some projects have mentors listed for them. These are projects where a specific mentor has already agreed to work with a student if the project is accepted. However, this does not mean that other projects have no mentor! In case projects other than the ones who have a mentor listed here will be accepted, a mentor will be assigned for them.
Note about tasks: Some ideas here may already be claimed by a potential student. If a claim is listed here it's solid enough that, unless the person claiming it gives it up, it wont go to another.
Implement GEGL ops that GIMP need
Category: GEGL, image processing
The migration of GIMP to use GEGL has accelerated - for some GIMP functionality the main hurdle to migrate is having GEGL ops that can act as drop in replacement for the core processing functionality (some ops would be desired directly in GIMP others could likely go directly into GEGL.).
For most code involved, porting to GEGL involves understanding what the current code does; and port or reimplement it as a floating point processing operation (floating point math often ends up shorter and more readable than the 8bit equivalents.)
A list of currently missing :
- Implementations of layer modes - that behave exactly like the old ones.
- Stretch HSV
- Decompose/Compose
- Alien map
- Gradient map (needs gradient support)
- Palette map
- Rotate colors
- sample colorize
- channel mixer
- Motion blur
- ... and many other things that currently exist in the Filters menu of GIMP.
Implement the free transform tool
Category: Tools, User Interface
This task is already claimed
The free-transform tool should a all-in-one transformation tool that will allow fast and easy transformation of images, with all kinds of affine transformations at once. For exact specifications, reasons which make this tool needed and more, see: gui.gimp.org/index.php/Transformation_tool_specification
Minimal Student Requirements:
- Good C knowledge
- Gtk+/GObject basic knowledge and/or at least some interest in User Interface programming
Initial implementation is available in Mikael Magnusson's Git branch.
Slicing tool
Potential mentor: João S. O. Bueno, Alexia Death
Category: Tools, User-Interface
Note: this project, although very essential, requires complete UI specs which are not yet present, and therefore is considered less likely to be done, at least untill we have decent UI specs.
One of the most requested features by web designers and/or interface designers, is the addition of a slice tool. Currently slicing images inside GIMP can only be done in grids (using guides and the guillotine action) and you can't split just one rectangle in the middle.
For example, the following slice can not be achieved:
----------------------------------- | | | | | | | |--------------------| | | | -------------| | | | | -----------------------------------
A more advanced version will take the slicing idea to a new place, allowing to create general rectangles:
------------------------------------- | --------------- ---- | | | | | | | | | | ---- | | --------------- | | +---+--+ | | | | --------------------------------+---- | +------+
And why stop at rectangles? Maybe allow custom shapes using custom paths? Further ideas were suggested in the mailing list, at this post..
Minimal Student Requirements:
- Good C knowledge
- Gtk+/GObject knowledge in high level and experience in User Interface programming