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.

Introduction

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

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.

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! :-D

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!

49 thoughts on “Crowdfunding Proposal for Symmetry/Mirror Painting in GIMP

  1. would love to support you, but at the moment I get an “unknown server error” when I try to submit an amount of money.

    btw, have you considered also proposing your work on the feature in question at freedomsponsors.org?

    regards,
    Bastian

  2. Damn, I’ll check with the OpenFunding people.

    I have considered freedomsponsors.org too, yes. But I don’t think I should spread out now that I already started at OpenFunding. They are also high on Free Software.

  3. Please consider not just a corwdfunding for this feature but a long term improvement goal.

    Trust me a lot of artist would give you a lot of money to see Gimp become much better and to have an alternative to the awful creative cloud.

    Trust me I think Gimp could easily reach 1 million dollars on crowdfunding if you guys just ask for it. (crappy games have gotten much more( the gimp is a tool we all use so I don’t see why it shouldn’t be succesful.

  4. Pingback: Crowdfunding Proposal for Symmetry/Mirror Painting in GIMP – IzaakNews

  5. Pingback: Crowdfunding Proposal for Symmetry/Mirror Painting in GIMP | Rocketboom

  6. Hello Abraham,

    I answered to someone something similar on GIMP’s mailing list. I see what you mean. There are several reasons why I did so.

    1/ First of all, I don’t represent GIMP all by myself. There is actually no official “GIMP” entity, and all contributors are currently volunteers. I allow myself to be considered a core GIMP developer because I am an active and regular contributor, I have write rights on the code repositories, my patch up to now were accepted, it seems that my opinion was considered interesting, and such. But I can’t speak on behalf of everyone for a “long term improvement goal”. This would be intellectually dishonest to pretend I can.

    For this to happen, I would have to discuss with the rest of the team, they would have to agree it is a good idea, and to endorse my project, and maybe come up with a plan, some structure (maybe I could be some kind of “community-funded employee” of the GNOME foundation (which is kind of our proxy as an official entity)). That’s another level of involvement.

    I don’t say it won’t happen. Actually I would be clearly thrilled by the idea of doing such a thing. Probably I could actually discuss this with the GIMP team if this first smaller funding is a real success. I mean, if it fails with a miserable funding, what kind of proof do I have a bigger funding would make it? I can’t just say “people told me they would give millions, but when I asked 2000, they did not give” :p.

    2/ “let’s do all” projects are good in some way. For instance there is a lot less waste of time. If for every feature I want to do, I have to wait 1 month for funding, that is obviously a lot of time wasted. Therefore big projects are good because by giving freedom to the developers, they can give efficiency.
    But I also saw many cases of “fund, start a little, then give no news and run with the money”. A lot of projects on the big crowdfunding platforms did this.
    This is not very nice. At least 1-by-1 feature projects are good on the fact that you can’t trick users. And I think that for a first project, it is a good way for me to test the crowdfunding system (this is the first time ever I raise money this way); and for users to know me and know they can trust the project to be fulfilled.

    But yes definitely big projects would be a lot more efficient for long term. I agree.
    As I said, maybe that could happen some day, who knows? I’ll definitely study the question if this one works well.

  7. Very good initiative. I hope to see more and more success for these free software improvement projects. When I see some crowdfunding success story, I think people enjoy more and more to play the game of “donating” to projects who fit to their needs and hope it could definitly be a viable economic model to free software side of existings dual licencing and service support.

  8. Would you be able to do tiling with your planned feature? Ideally I’d want to keep same “symmetry” but have that symmetry replicated forming a 3×3 grid with the original in the middle.

      • Oh I see, so a real-time translation basically.

        Well this is just another type of mathematical transformation. I only planned 2 types of transformations: central and mirror symmetries. So originally no plan to have translation too, but once the framework for the feature is there, which I will want to make very generic, a real-time translation like this could be added extremely easily.

        Actually you are the second person who asked me about tiling (though I did not understand the first time, and realize now I answered him something else! :p). So if I get founded, after the main feature is there, I would likely make an additional patch for such a tiling support.

    • Ahahah! :-)

      Yeah I saw your crowdfunding (not the result report you link, but the actual crowdfunding on Indiegogo). And that was indeed a good inspiration (even though I had the crowdfunding idea before I saw it). Does it look alike? It is indeed true that my promotion pitch has a good part of inspiration from yours. :-)
      Good continuation too with your projects!

  9. Yeah I could see hints of my campaign in your promotion. ” This funding initiative is an experiment for me to verify the viability of crowdfunding for features in Free Software.” was the real give away but also the About Me section links to Ohloh, etc.

    Don’t get me wrong I think its great. I stumbled out of the gate a bit and it took a week or so to get my proposal to a state where people we happy with the information provided. I think its really great to see the template I used evolving, and I think you have done an excellent job. You should have no trouble reaching your goal. I’m looking forward to seeing more and more of these type of campaigns.

  10. Hello Jehan,

    I was thinking about sponsoring your project. But for sponsoring I have to register and with registering “You acknowledge having read and accepted the terms and conditions by registering.”
    But I can’t read this terms and conditions because its in French. :(
    Is there anywhere an English or German version?

    Regards,
    Tobias

    • Hi again Tobias,

      so after asking to OpenFunding, they told me that Terms and Conditions are a difficult matter by nature. They are currently working on this, but said a legal translation would not be completed before at least 1 or 2 months, so after my crowdfunding is finished.

      I think the obvious reason is that legal text are not that easy to translate in a legal way (many Free Software and Open Source license for instance are in English as only “legal” version, and translations are for convenience only).

      Nevertheless they said I should redirect you and anyone else who wants if you have any question about the legal side. They would gladly answer anything. I can confirm they are pretty reactive (actually they answered my email relaying your question nearly immediately, but I failed to relay back here the answer as fast :p).
      You can get their email here: http://funding.openinitiative.com/contact (well I can as well copy it here: contact (at) open-initiative.com).

  11. Hello Jehan,

    First of all, BEST of luck for your project! :-)

    I have tried to register myself as a new user in order to make a donation.
    At present, the web-site “Open Funding” is acting a bit weird (yes, I am aware it is still a beta…).
    For instance:
    1) it looks like it is not possible to register yourself by writing your name with same spaces included on it.
    E.g “silvio grosso” doesn’t work. You are forced to register yourself as “silvio_grosso” (underscore).
    2) IMHO, the web-site should show the deadline for your project. In essence, how long you can sponsor it in order to have it “accepted” by you :-)
    This information migh elicit some users to donate some money “as fast as possible” in order to have your project started.

    This being said, I have two questions for you myself :-)
    1) In what differs your project as features implemented as regards the options already available with Krita (the ones implemented by Lukáš Tvrdý)?
    No offense here, but IMHO if the features implemented by you on Gimp are the same compared of those available for Krita it is a bit less interesting to sponsor them… :-(
    2) I am 100% aware it does *not* depend on you BUT I think it would be really useful for your donors to have an estimation about the “rough” date for the release of Gimp 2.10…
    At present, in case you sponsor your project you are not able to know when you might be able to use these options with Gimp :-)
    For instance, the daily builds for Windows are very unstable (http://nightly.darkrefraction.com/gimp/).
    It is pretty easy to crash them (e.g. it suffices to open two jpg images in a row to make it occurs on Windows 7 – 64 bit) :-(
    As a consequence, I suppose it might take *quite* a lot of time in order to have the Gimp 2.10 stable release available for everyone.
    Please do not take this as a criticism. I am 100% aware the Gimp team is extremely *small* compared to the *huge* amount of things to work with and fix) :-(

    My best regards,

    Silvio Grosso

    • Hi Sylvio,

      I have relayed your remarks about the platform to OpenFunding, and I agree showing a deadline would be better. For my own, I hope this to be funded in a month, because I don’t intend on waiting all my life for this. ;-)

      Now to answer the other questions:

      1) Well the base feature would obviously be similar to what Krita has, which is mirroring and such. Note that I personally think that it would still be useful even though the feature were (not saying it will be) exactly the same, because some people still draw in GIMP. So unless you want to switch back and forth from one software to another for a same drawing (and for some projects, some people do so), I don’t see a problem to have feature duplication.

      This being said, after reading a lot of people’s comments these days, and thinking about the right implementation, I’ve come to imagine a very generic “painting transformation” system where you could plug any kind of real-time transformation of the input.
      For instance some people asked about tiling (see above in another comment for instance), which basically is a multiple-translation transformation; other were asking me about drawing a scaled version of a drawing (pantograph style); a Mathematician asked me about hyperbolic, homographic, and what’s not, transformations, and so on. Also someone told about the “multibrush” feature from Krita, so I had a look and that’s nice (as far as I could see, that’s basically a multi rotation transformations feature).
      So I think that I could as well make a nice generic system, with an API call for anyone to create its own transformations (and then distribute them as plugins, if someone needs tiling, etc.). Symmetries would therefore just be particular examples of these transformations that would be in the base software.
      So what do I propose to bring? Genericity to the system. Mirrors and central symmetries would likely only be the visible part of the iceberg.
      Now let’s see how I can make this so. :-) I have not made this system yet, but I will likely make a blog post if I see it works well (and I think it will).
      Also that’s a UI detail, but I think that’s nicer if you can see the symmetry axis/centers, and last time I tried with Krita (just 5 min ago), I was not able to get them to show (other than when temporarily move the axis). Of course no doubt that if not already implemented and I failed to see it, it could easily be done in Krita too. :-)

      2) I am really sorry, but the release date does depend on nobody really. Or rather it depends on everybody: if we had more hands to help us, it could be done very very quickly. But right now, as you say, the team is very small. There is not much of a choice. You said it too: the master build are quite unstable (in particular for Windows, we have nearly no developer. I am actually one of the only developer who sometimes patches GIMP for Windows, even though I am not even a Windows user! But since I have a Windows user licence, I might as well use it and test/fix for Windows), so we just can’t rush the release unless you want a half-baked version, crashing and bugging, yet falsely labelled as “stable”. I think none wants this, right? :-)

      All this to say I can *definitely* not give any date, even though by not doing so, it might hurt my funding if some people were to refuse to donate because of this. Doing it would just be lying (or “guessing” and hoping it won’t bite me back) for personal gain, and I can’t do it. I know it is common marketing practice in many companies to just say yes to and tell whatever the “customer” wishes. But this is not the usual practice in Free Software, and certainly not mine (and I don’t think anyone really wants to be in a “customer/company” relationship there).
      I hope you can understand. If really because of this, you or someone else won’t fund me, well I am a little sad, but everyone is free. :-) Do consider funding me if you think this is an acceptable condition though. ;-)

      P.S.: you say you have a crash case of GIMP under Windows easily reproducible. Has anyone already reported this same bug in our bugtracker? If not, I would suggest you to report it. :-)
      https://bugzilla.gnome.org/enter_bug.cgi?product=GIMP

  12. Hello Jehan,

    I have just sponsored your project through (I even sent you personally an email to inform you about this) :-)

    I am not an artist but I DO appreciate your work on Gimp (keep rocking!)

    Strangely enough, I have received an email by the Open Funding “administrator” to thank me for having donated *0* euros…
    This is quite weird because if you take a look at the current amount in the web-page and to the list of the recent donours my donation is correct (that is, not zero…) :-)

    > I don’t see a problem to have feature duplication.

    I totally agree! :-)
    At present, I have read most painters use the .ora format to switch back and forth from Gimp to Krita. ith this feature of yours Gimp might become more and more powerful.

    > Also that’s a UI detail, but I think that’s nicer if you can see the symmetry axis/centers, and last time I tried with Krita (just 5 min ago), I was not able to get them to show

    To my knowledge (*but* I may be wrong) this feature has never been suggested in the Krita forum (Lukas would have surely implemented it…) even though I agree it might be useful.
    IMHO, the best might be to have it as an option because when you record some screencasts (for YouTube and alike) you usually do not want such an obtrusive line to be always visible :-)
    BTW, Lukáš Tvrdý has just implement for Krita a first *unstable* version of a new back-end [0] for the G’MIC filters [1]. Among these filters there is for instance the recolorize filter which is a quite useful for painters [2].
    This back-end should be available (fingers crossed…) for the “upcoming” next version of Krita (the 2.8 one).

    My best regards and *THANKS* again indeed for your work on Gimp: it is highly appreciated!

    Silvio Grosso

    [0] http://mail.kde.org/pipermail/kimageshop/2013-September/012037.html
    [1] http://gmic.sourceforge.net/
    [2] http://gimpchat.com/viewtopic.php?f=28&t=6207&start=20

    • First of all, as I already said by email, thanks a lot. :-)

      I have relayed this bug report about the 0 EUR funded email. But as you say, I can see your funding, so I think all is good. I think that’s just an email bug. An ugly one, and not very nice to a funder, that’s for sure! I hope they’ll fix it soon. :-)

      For seeing the symetry axis/center, yes that was an option in my mind already (and even in the small demo hack that I use in the video actually, it was already possible to show it or not! But I did not emphasize this point in my video). I agree that some people may want or not to see it (or depending on conditions, sometimes they want, sometimes not).

      > My best regards and *THANKS* again indeed for your work on Gimp: it is highly appreciated!

      You are welcome and *THANKS* to *YOU* for the funding. :-)

      Jehan

  13. As soon as I saw your initiative I clicked the link for giving my donation but then I stopped because I saw I have to register for donating. I have already enough accounts in my life and I don’t need a new one. Could you provide details on how to send you money through bank transfer?

  14. This is the worst fucking piece of shit. I havent ever seen anything as unintuitive as this motherfucker… Why the fuck “Move Tool” doesnt move selection ?!?!?!?!?! I even searched for GIMP TUTORIAL MOVE SELECTION … .what the fuck? why do you even need tutorial for something as basic as moving?! and … IT DOESNT WORK EVEN AFTER READING THE TUTORIAL !!! FUCK THIS SHIT IM BUYING PHOTOSHOP

    • Wow. I am hesitating to delete your message just for the bad language, the upper-casing, and the contents completely irrelevant to the discussion on this post. The only *barely relevant* point is that you speak about GIMP, which is the only reason why I don’t remove this message straight away. But any further message of the sort will be deleted.

      Anyway: if you don’t like GIMP, fine by me. Everyone is free to like or not something, and to use something else (and if you want to buy Photoshop instead, good for you!). I just definitely don’t see the point of making this filthy message. Do you have so much free time that you use it to insult every project you don’t like on various websites which talk about it?

      Also just so you know, to move a selection, just check the tool options, and you’ll see the option there. Alternatively you can just click “alt” while you move, which is the usual shortcut for “alternative” (thus “alt”) behaviour for a tool.
      But whatever. You may not like it, no need to be insulting, please. Thanks.

  15. Pingback: How to Build Websites » How to Used GIMP

  16. Pingback: How to Build Websites » How to Use GIMP

  17. Having just reloaded my PC, I went to download GIMP to reinstall it. There I saw this news article. And I thought, that name looks familiar. Turns out you live in the same house as me.

    • Hi,

      thanks for this.
      I am a little unsure how to find your book on this issuu.com website. It displays a lot of publications, but I could not find a book for GIMP there (there was GIMP magazine though).

      I checked your website though, and found the book. I skimmed through the first pages on Amazon. Looks very nice. I see also that you are the one sponsoring gimpusers.com for a contest with this book. :-)
      In any case, thanks for any promotion you could do!

  18. Maybe I’m not getting this right, but I don’t really get the purpose of symmetrical drawing that much. It seems pretty simple for an artist to draw one side of an image, get it right, and then flip it afterwards to get the final result. I appreciate your work, but to be honest this new tool only seems to be useful to a very small audience.

    • Hi,

      You could say that for most tools. The painter I work with don’t use a lot of the tools or filters that many users would use all the time. And in reverse, I’m sure she uses some tools ways that probably many users don’t. GIMP is not made for just 1 single user, but for a wide range with various needs.

      And in particular, there is clearly 2 kind of flows, some more filter-oriented, and some more realtime-oriented.
      The filter guys have some already done work and usually want to modify it. Basically a lot of photographers would do like this: they have a base photo and would add effects, remove/clean some parts, mix photos, etc.
      The realtime guys are creating from nothing and in this case, you like to see your creation under your eyes while you make it. Not working for hours and “hoping” that it will work ok after you apply some filter to get a finale effect. That’s like painters, part of designers (I guess there are several kinds of design work, so they can be one side or another), etc.

      Also about this part:

      > It seems pretty simple for an artist to draw one side of an image, get it right, and then flip it afterwards to get the final result.

      Well if you draw simple forms, yes (and even though, it’s not *that* easy. There is a reason why artists train to do proper lines all their life, over again and again: because it is not that easy!). But now try to draw only half of a proper symmetrical complicated object, and flip it afterwards. It’s definitely *not* easy when you don’t have the realtime feedback.

  19. Interesting….
    I was wondering if the work needed for converting all filters, operations and itens for releasing the next Gimp version with high resolution could be crowdfunded the same way new features.
    What you thing?

    • Ahah. Yeah well I’d love to see governments sponsor Free Software as a whole (not just for people doing it, but for the sake of government independence too), but unfortunately it seems most governments are keener on making commercial deals with huge corporations, and give away their own freedom, as well as the citizen’s.

  20. Amazing blog! Do you have any recommendations for aspiring writers?
    I’m hoping to start my own site soon but I’m a little lost on everything.
    Would you recommend starting with a free platform like WordPress or go
    for a paid option? There are so many options out
    there that I’m completely overwhelmed .. Any recommendations?
    Appreciate it!

    • Hi,

      Thanks. If you see the short video, you’ll see why there is no boat mirrored picture. :-)
      Basically this is real time mirroring, and you can activate/deactivate it at will.
      So the artist just deactivated the mirror when painting the boat. That was a small mistake because she obviously should have moved the mirror axis under the boat and activate the mirroring. But well, she did this speed-painting in like 20 min as a favor for me. :-)
      We noticed the error after we uploaded the video but decided it was not worth redoing it. The feature is already well demonstrated. ;-)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>