SummerOfCode2008ideas

GSoC2008 Project Ideas

Please note that, although you are welcome to look at what is here, this is a workspace for mentors to write down and modify their ideas, and suggestions here should not be taken as necessarily viable projects until they have been finalized. Also, the fact that something appears here does not necessarily mean that anybody has volunteered to mentor it.

Note to people who add stuff here: Please try to add information about a proposal's overall complexity and experience that could be helpful. E.G. experience with GTK+, image manipulation algorithms, web application development, ...

Tagging of GIMP resources

Mentor: Sven Neumann

Currently resources such as brushes, gradients etc are shown to the user in an unstructured way, only sorted alphabetically. This greatly limits the number of items a user can deal with.

People love to make collections of things and think of them by names for these collections, like "sprinf flower brushes" or "fancy fonts". However, one resource can belong to more than one set, and there can be sets which are determined by other means than the content, maybe even without the user having to do anything manually - think "Favorites", "Most recently used" and "Most frequently used". It has been suggested that this should not be a finite set of categories, bug rather done by assigning tags.

The tasks in this project include:

Apart from that, a related task which can be integrated here, or expanded on its own:

On-canvas text editing

Right now, the text tool opens a dialog window where the text has to be put, thereby creating a new text layer. Nearly every other option of the text tool - font, font size, color, line height, ... - is available in the text tool options dialog, so it would be nice to get rid of this dialog as well. There have been feature requests about being able to edit text directly on the image, like for example Inkscape does it.

It may be that getting to the point where editing text on the image canvas is possible isn't that much of work, actually. But this is where the interesting challenges do begin: eventually, we do also want multiple styles in one text layer. This is not so straight forward anymore if your enter text in the image. Not present right now, so not having it isn't exactly a showstopper, but making it hard to ever get there is.

And you will have to consider support for GTK+ input methods. They may be used to enter characters from languages (or, more precisely, scripts) beyond the simple Western scripts which define how our common keyboards are layed out. This is supported right now in any GTK+ text entry, not having it for on-canvas editing would be a regression.

Tasks for this project include:

GIMP Python

mentors: Yosh or João

With version 2.4, python becomes the preferred method of scripting plug-ins for GIMP. Python is an universal multipurpose cross-platform language, adopted as scripting language by several applicatives, easy to understand, with a feature rich set of standard libraries.

GIMP python scripting is possible since 1999, before version 1.2 and it allows access either to GIMP's procedural database and to internal image pixel data, just like plug-ins written in C.

However there are points that can be greatly improved. Things that can be done for a Google Summer of Code project:

Properly map Gimp Widgets and objects to Python

Wrap all libgimpwidgets to be accessible from python, so python plug-ins can have the same presentation as gimp components written in C (that is gradient and palette selectors, scale entries). Additionally map all remaining gimp objects to proper python objects, just as layers and images are already: palettes, gradients, brushes, patterns, fonts.

The best way to do this is making sure that GIMP widgets are GtkBuildable. The GtkBuildableIface interface contains method that are necessary to allow GtkBuilder to construct an object from a GtkBuilder UI definition. This would make it a lot easier to write GIMP plug-ins for other languages as well, as developers would have less hassle with UI code.

Enhance the interface builder, add plug-in previews

Add optional parameters to the automatic interface builder in python-fu, to allow gtk+ expanders, parameter groups, different layouts and plug-in previews.

Enhance the python console

Add some GUI controls allowing more things to be done from the python prompt with less typing. That could involve creating a utility python module to allow for practical "CAD like" drawing from the python console, by typing short drawing commands.

Work on GEGL

mentor: pippin

SVG brushes

UFRaw

mentor: Udi Fuchs

UFRaw is the GIMP plug-in responsible for opening raw files from digital cameras. There are several possible projects for enhancing UFRaw.

100% Zoom

Currently, when previewing the image to be converted, the maximal zoom is 50%. Simply generating the full 100% image will not work, because it take too much time for an interactive process. To implement this option one has to modify UFRaw to generate the 100% image in tiles. Later this feature could be used to multithread the process of generating the image.

User presets

The settings for image conversion can be saves in UFRaw ID files. Later those ID files can be used as presets for converting other images through the use of the command-line. The idea is to allow the user to switch between presets in the GUI. The GUI should give a natural way to modify and apply settings.

Multi-image workflow

Currently UFRaw is concentrated on the workflow for converting a single image. A multi-image workflow would show the user all the images in the directory, let him edit single images or apply presets to a group of images. The actual conversion would be applied in the background with feedback to the user on its progress.

The first two projects would involve substantial changes to the core code of UFRaw and require programming in C, C++. For the third project one might be able to work with a scripting language, such as Python.

All three projects are complicated. I don't think that any of them can be completely finished during the given time frame. Still, it should be possible to make enough progress that will give substantial improvement to UFRaw.

Enhancing Painting with parameter curves

Search-based menu browser

Your own proposal

Unified UI for scripting

Unit testing framework & Plug-in stability effort

Tests have shown that it is possible to crash plug-ins when feeding them bogus data via the PDB API, for example when calling them from scripts (another interesting approach might be to run file loader plug-ins with [WWW] zzuf). Needed: a test framework to find the bugs, and then time to fix them.

Benchmarking

Font Selector Widget

Additional file format plug-ins

There is a number of file formats that GIMP should support, but doesn't or at least doesn't support fully. One thing to keep in mind is that the more useful the format is for a large audience, the more likely a project proposal will be accepted. Some interesting examples are MNG and APNG.

Tasks for these types of project include:

Filetype registration

On every major platform, there is a way for the user to configure which application should handle which types of files. Many file managers will then allow the user to open the file in this application - Text files are opened within a text editor, rich text will open a word processor, and image files in an image viewer or image editor.

Unfortunately, some platforms (like Microsoft Windows) make it rather hard to configure this in a reasonable way. Therefore, many applications have chosen to offer file type association in their own user interface, by providing a list of formats which can be handled. This is done in the installer right now, but is limited to install time and has some other shortcomings. Furthermore, it is quite common for them to steal the types from other applications. It would really be nice to do this in GIMP.

Tasks for this project include:

Unpaper

Currently, it's not possible with free software to digitalize a book (with text) oneself and to publish the results... because the collection of digitalized pages will be not clean. You can scan it but it's not possible to make automatically basic treatments to beautify the result, i.e :

This piece of software is necessary to make from every scanner owner a potential part of the global book digitalization effort. Projects like [WWW] wikisource would love such a plugin in GIMP.

One software has already this purpose : [WWW] unpaper ... Unfortunately, it's really complicated to use it, and the result is not perfect : I'm absolutely not convinced by it.

last edited 2008-04-14 15:20:53 by VinceL