Same as last year, we will be present at the Libre Graphics Meeting, 2014 edition. This time, the event will be held at Leipzig, in Germany, from April 2 to 5, and once again, we are sponsored by GIMP to be present.
GIMP is one of the main sponsors, but for the event to continue to exist, it needs you. I would advise anyone in capacity to help to participate to the crowdfunding. Basically let’s say it this way: if you use any Free Software for graphics, be it blender, FontForge, GIMP, Inkscape, Krita, LibreOffice, MyPaint, Scribus… anything which has a graphics component, well if you have the nickel to spare, helping the Libre Graphics Meeting helps you back. This awesome meeting allows contributors of all these incredible Free Software to gather, discuss the future of graphics and Free Software, coordinate, and release awesomeness.
Also if you are around, don’t hesitate to come in. Participation is free of charge, and this year again, the program definitely looks promising again. We may update more later! 🙂
Three weeks ago, we announced GIMP 2.8.8 and today we are announcing already a new version 2.8.10!
A few major issues, in particular on OSX, were the reason for this quick bugfix rate. Though personally I hope we’ll keep a fast pace, at least faster than it used to be! 🙂
P.S.: if you don’t understand the joke in the small comic above, maybe that means you have not seen the old Karate Kid movie, the one from 1984. Yes that’s a joke for elderlies, I know. 😛
Actual coding has not started yet. But the design and the implementation has been discussed quite a bit with various people of the GIMP team, and outside the team. Here is the evolution.
Destructive “Multi-Brush” or Non-Destructive Filter Layer?
On IRC, we discussed if it could not make sense to use the GEGL mirror operation for this non-destructive real time mirroring. Well it does, but I believe it is a different workflow. This too will be definitely possible when we will achieve our GEGL port, which should be followed soon by the implementation of effect layers (a topic I am also highly interested in and will probably work on as well soon if this funding succeeds). But that would be for a workflow where we want perfect symmetry all the time on the layer, since we can’t deactivate mirroring temporarily on a layer (or rather: we can, but then we lose the whole mirroring result). Thus if we want to add asymmetrical imperfections, it means to either paint them on separate layers (which may be considered very inconvenient and ugly workflow by many painters), or apply the layer, which in the end is the same, but is also a worflow breaker. So I prefer to stay on a simple destructive workflow, made for painters.
Also it would be a problem for my generic code design (see below). But of course, my position may still evolve if I can find a good easy workflow by still using GEGL operations.
In some (hopefully close) future, users will have likely both options though. And that’s good!
Generic Design: tiling, “multi-brush”, etc.
Many people asked me about tiling. I also heard about, and tested, the multi-brush feature in Krita, mandalas and such, which is basically a generic evolution of mirroring.
Some mathematician even asked me about more complicated mathematical transformations: hyperbolic, homographic, and whatever else you want. Well it all made me think a lot.
I wanted to do something generic from the start, but it is always very enlightening to hear all the crazy — yet incredible — ideas that users have. Ideas you never thought about when you first imagine the tool. So I have decided I will try to go even more generic than my initial idea. If I get funded, I will work on a good design to propose a very good level of genericness, at least in the plugin API. That means that the tip of the iceberg, in the UI, will likely only be mirrors. But I want to propose an API for people to write down their own transformations, that you will be able to share as plugins. This way, it should be possible to do easy tiling, “multi-brush” (multi-rotations at regular intervals of your drawing) or whatever complicated mathematical transformation you have in mind. Not sure yet how easy it will be, and maybe there will be complications. But I will do my best.
Usability and UI Design
I am more and more interested into tying the transformations to an image, rather than only to the tool, like you saw in the demo. Tying to the tool is a nice simple idea, but is very limited in terms of features, I believe.
One of the main issues I see with the tool option implementation, is that when you close your image, you lose your mirror axis. It is ok if the mirror is basic horizontal/vertical at the image median, or if you do one-shot speed-painted images. But what about long term projects with some mirror at a specific angle and specific coordinates?
Also what if you want more than 2 mirrors at a time? You will want to be able to manage them, maybe even name them, use one on some layer, but a different one on another, and such. So we could imagine a small dock for transformations, similar to what we have for layers, channels, etc.
The following is a design that someone showed me for guides. Well that would be different, but you can get an idea of what I mean:
And since we want a generic design, you may want to manage also your homebrew transformations (tiling, etc.). Such could be done in this dock too.
Of course we still want to be able to easily create, move, rotate and destroy these transformations for basic or one-shot usage, without ever opening the dock. I believe both use case could be handled beautifully.
Moreover lately we heard rumors that our UI guru may be back very soon. If so, the GUI may benefit from his input and designs.
Funding
Funding started extremely well, with about 20% in the first day or so. But now, 3 weeks later, we are only at 52% of the amount required.
On one hand, I am a little disappointed. Some people ask us to crowdfund all the time and assure us that GIMP would fund millions of dollar if they wanted, but I can’t even fund 2000 EUR. Anyway it’s not finished just yet. I have about 10 more days in my planning, so let’s hope I make it! 🙂
On the other hand, I also blame myself because I definitely suck at marketing. I did quite well the first week, following many discussions everywhere, but it was also so exhausting that I kind of tried to do anything but promote my project afterwards! So now, after a few people asked me, here was my status report.
Interested by the feature? You can still fund the project if you like it! 🙂
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.
The Feature
Proposition
implementing a mirror/symmetry painting feature into GIMP.
Description
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.
Usage
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.
Schedule
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).
Implementation
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.
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! :-)).
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!