It has now been 3 weeks since I started my crowdfunding experiment for symmetry painting in GIMP (see also the blog post), and I wish to give some status of the project.
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 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.