Hacking:GSoC/Future/Ideas

From GIMP Developer Wiki
Revision as of 01:02, 30 March 2012 by Prokoudine (Talk | contribs)

Jump to: navigation, search

It is too early to start working on projects listed here.

Contents

Implementing an infrastructure to run GIMP plugins on GEGL

Category: Plug-Ins

The current way of accessing pixel data will be deprecated in GIMP 3.0, so it was suggested to implemnt an infrastructre to manipulate pixels with GIMP's existing API over GEGL. this will make porting plugins easier to GIMP 3.0.

Port UI code to a non-low level language

Category: User Interface, Future

Hacking UI code in C is a resource eater for us, we should use C for quick and efficient pixel processing but not for creating buttons. It would be interesting to make changes to the GIMP codebase that would allow us for example write the Pointer Information Dialog in JavaScript, Python or probably most preferable: Vala.

Scripting line-by-line debugging support

Category: Plug-Ins/Scripts

There are no debuggers for scripting in GIMP, and only tracing is supported. Support should be added to allow one to single-step line-by-line in a JavaScript script for example (if we take the JS scripting project) and if not, integrating a debugger for tinyscheme is also going to be very helpful as a massive part of GIMP's scripting is done in tinyscheme.

Implement the combined selection tool

Category: Tools, User Interface

The combined selection tool should be an all-in-one tool for selecting regions based on a research made by Voralberg students in 2010.

Minimal Student Requirements:

  • Good C knowledge
  • Gtk+/GObject basic knowledge and/or at least some interest in User Interface programming

Dynamically resized layers

Category: Tools, User Interface, Core

Potential Mentor: Martin Nordholts

Allow layers to be resized dynamically as the user paints on them, and save the user the burden of managing layer sizes

Right now layers have to be manually resized, which is unefficient and non-useable. The first and most common problem is painting and discovering that you reached the end of the layer in the middle of your brush stroke. Another common inefficiency is simply saving large layers which is a waste of memory (RAM and disk space). No need to mention it's annoying to manage the layer size manually, and trying to crop one layer which results cropping the whole image if you don't notice the UI options correctly.

Minimal Student Requirements:

  • Good C knowledge
  • Highly recommended - some knowledge of GIMP's internals (core/tools/etc.)
  • Being a bit familiar with GIMP as a user, as this project touches several areas

Support writing JavaScript plug-ins

Category: Plug-Ins/Scripts

Potential Mentor: Kevin Cozens

GIMP scripts and plug-ins can be written in Scheme, Perl, Python, Ruby, and C. Scheme is always available, but limited in its application in regard on image manipulation. Additionally, as a list-processing language, it may appear as weird to most users. Its main purpose is scripting workflows for repetitive work.

The Perl binding is currently the least supported one and not available on platforms other than Unix. The Python binding and the C libraries are currently the most powerful ones. The Ruby binding should be just as capable as the Python binding but it hasn't seen a lot of use and not many people may be aware of its existence.

Javascript could take over Scheme's role as the general purpose scripting language for GIMP. It should be based on GNOME Java Script infrastructure (GJS).

Minimal Student Requirements:

  • Good C knowledge
  • Good JavaScript knowledge
  • Good gObject knowlege
  • Some basic experience with GIMP's PDB (as a plugin/script writer)
Personal tools