Crowdfunding Proposal for Symmetry/Mirror Painting in GIMP

Hello all,

as you know, I am a GIMP developer. And I am proposing to crowdfund a feature that many people seems to wait, and which interests me too: Symmetry Painting, aka Mirror Painting.


Many people brought up the idea lately of crowdfunding to improve GIMP. Well I decided to give it a try. This funding initiative is an experiment for me to verify the viability of crowdfunding for features in Free Software.

I am a capable developer, with an experience track (see below), part of GIMP’s core team. If this is funded, I will implement this feature and make it to the GIMP main code.

Symmetry Painting crowdfunding - Promo Poster

The Feature

implementing a mirror/symmetry painting feature into GIMP.
GIMP is one of the main multi-usage, multi-platform (Windows, OSX, Linux, BSD…) image processing tool. On the painting side though, it lacks some common features. One of them is the ability to draw in symmetry mode in real time.
In order to have a drawing with perfect symmetry, currently the painter needs to either draw very simple forms, use some filter/plugin, or duplicate/flip layers. These are by far less practical and intuitive than seeing one’s symmetrical drawing coming to life in real time as you draw.
I have met some artist who uses vertical mirrors in other software for instance to quickly sketch characters at first stages of design when time is worth more than arts. I could also easily imagine it would greatly simplify creation of symmetrical designs (logos, etc.) using complicated forms and drawing.
And probably many more example. For instance the original drawing in the below video. The painter Aryeom Han used my first (unstable and far from perfect) implementation test to draw a lake reflection, later modified with scaling, gradient and the warp tool to give it a watery feel.
The crowdfunding starts on Monday, 16th of September. I hope it to be finished in about a month. Once I will finally start on the feature, I am planning for the implementation to be finished in a few weeks (the feature will need to be reviewed by peers to hit the branch, which may take more time, but I will attend to it being released eventually).


Idea 1
my latter implementation had symmetry modes as tool options. I am testing other possible implementations as well though. For instance it may make more sense to tie symmetry axis to an image. Not fixed yet.
Idea 2
there should be actions (shortcuts) to enable/disable symmetry fast.
Idea 3
the basic idea is to have at least, and easily available, the basic 3 symmetry modes (horizontal, vertical, central), which you can use separately or in any combination. Lately I have been wondering if I could not go even more generic by allowing to rotate symmetry axis into any angle. I may not implement it (I may though if the funding has a huge success), but if possible I will at least try to make a generic system which would allow this in the future.
Idea 4
the symmetry axis or center could be displayed (or hidden).
Idea 5
axis/center can be moved across the canvas by simple drag’n drop in the same way as guides are.

I have a current usable work in progress as shown by the video and the screenshots. But now the real work will begin to make it solid and reliable.

Testing GIMP Symmetry Mode (early implementation test)
Testing GIMP Symmetry Mode (early implementation test)

Disclaimers about what to expect

  • I will listen to comments.
  • It is planned for main GIMP integration. This won’t be againsome new fork, doomed to be unmaintained and disappear after a few years. This is “lasting, durable and solid” feature.
  • The current proposition may change in the course of the development. I can’t promise how the finale version will be *exactly* because it requires discussion and approval from my peer developers from the GIMP team. I am not alone to decide.
  • Being a whole new feature, it won’t be expected to be released until GIMP 2.10 gets out (no release date yet from our team), and even later if the project could not be funded or for any other reason I don’t control. Nevertheless as soon as patches will be out, everyone is welcome to compile the project from the development branch in advance. Note that if some people are really waiting for such a feature and the project gets an awesome funding, I may try and provide unofficial binaries, so that you don’t need to compile yourself.
  • Depending on the success of the funding, I may implement more advanced options related to this feature.
    I will give news on the advancement of the feature on the Studio Girin page.
  • I will give news on the advancement of the feature on the Studio Girin news page (basically this blog where you are right now! :-)).

Edit of 8 of October 2013: Status Update of the feature design

About Me

I am a core GIMP developer, freelance, working mostly with a specific painter. I have been part of the last 2 bugfix versions (2.8.4 and 2.8.6) and an active part of the next big release too (2.10). You can have a look at my current GIMP involvement at Ohloh or on GIMP bug tracker.

Non exhaustive list of features/bug fixes I already developped for GIMP:

  • XDG support of GIMP in the incoming version (config files under $XDG_CONFIG_HOME);
  • Configuration now saved in the Roaming Application Data folder on Windows;
  • support of Freedesktop’s Thumbnail Management Standard;
  • several UI improvements and UI bug fixes;
  • several bad crash fixes (notably the annoying crash when you unplug a graphic tablet! Since GTK+ 2.24.19, this should not be a problem anymore!);
  • improvement of the language list for localization (all language name are self-localized);
  • several improvements already integrated to the Animation Playback plugin (ability to scroll and zoom, refresh, frame disposal selection, step-back, shortcuts…);
  • even more work in progress on the Animation Playback plugin (which I now maintain) to make it a really useful plugin for 2D animators out there;
  • etc.

I contribute to various other projects, as you can see on this Ohloh page (though some are not listed, in particular all those which still use CVS or svn, hence patch authorship is lost. For instance I had a few bug fixes for blender, etc.).

And After?

If the funding is successful, I will continue to propose other features, for GIMP mainly, but probably also for other software I use. I currently work as freelance, and working as a “crowd-freelancer” would be an awesome position if possible. I would love being able to live by working on Free Software and make the world a nicer place. Wouldn’t you?

So even if this feature request is not your favorite, I would say that you may still gain from a successful funding if it makes me continue to work on advanced features for GIMP, maybe even full time? Of course I will continue to contribute in the core team anyway even with a failed funding, but there is just so much you can do when you are unemployed.

A non-exhaustive list of features I am interested in (and might propose to develop in the future as crowd-funded projects) are for instance: make the animation-playback an awesome tool for all-purpose animation makers, macros, unlimited-sized layers, “linking” external images as layers (close to the Smart Object concept, but closer to Blender’s linked objects, which is, I think, more powerful), non-destructive editing, select several layers at once to do bulk changes, improve export options (for instance down-scale at export time without touching the original), and many more.

Also if this works well, this would be a good precedent for other freelance developers to attempt to work this way and improve GIMP (or other Free and Open Source Software) even more. I think that’s win-win! 😀

Finally know that I don’t only work on GIMP, but also with GIMP, or in particular with the nice painter who drew the “rabbit near a lake” in the video, and we aim at producing comics and animations, all using Free Software, and under Free Art licenses (CC by-sa). So funding me is also funding Free Art, just in case you need more incentives!

Not clicked yet? Crowdfund Symmetry Painting in GIMP!