GIMP 2.9.4 and our vision for GIMP future

So you may have heard the news: we recently released a new development version of GIMP, version 2.9.4 (as well as a bugfix release 2.8.18, but this is not as awesome).

Small edit: I realized that my blog post has been linked on many major news website. I didn’t expect this! Therefore I just want to make clear that whatever I wrote below is my view of GIMP future. It may not be shared by other developers who have their own priorities and this post has not be written with the other devs. In other word, anything here is not written as anything official from the GIMP project itself, but from me only, a single contributor to GIMP.

GIMP 2.9.4

I am not going to rewrite all of the official news, because you may as well read it on gimp.org. Anyway I co-wrote the news with the rest of the team and provided several screenshots. So reading there is also partly same as reading here. 😉

I’ll just illustrate with this cool picture of the live preview of operations (here a gaussian blur) directly on canvas, split for comparison, implemented by Mitch, our own benevolent dictator (or are we all his dictators?). The image on canvas is by Aryeom, ZeMarmot‘s director.

GIMP 2.9.4 screenshot. Image on canvas is by Aryeom Han under Creative Commons by-sa.
GIMP 2.9.4 screenshot. Canvas image by Aryeom Han (Creative Commons by-sa).

Pretty cool feature, uh?

GIMP & ZeMarmot project

As you can read on gimp.org, ZeMarmot is a contributor to GIMP through my own contributions (which amounts to about 14% of commits for this specific release. Commits number is not always the most perfect metrics but as good as any).

Painting

So what did we bring to the table? Well there are the stuff which we like most first: painting. So I developed symmetry painting last year. Here are some symmetrical doodles drawn by Aryeom in just a few seconds, thanks to the symmetry modes:

Symmetrical doodles by Aryeom Han (Creative Commons by-sa).
Symmetrical doodles by Aryeom (Creative Commons by-sa).

I also helped on the integration of the MyPaint brushes, and in particular contributed upstream on a whole build system rework which, as a side effect improved the codebases of libmypaint and MyPaint (quote from Mypaint’s blog post):

Development of MyPaint will continue of course; in fact making this split happen has improved a lot of things in the codebases of both projects ☺ Big thanks to @Jehan for making this all work so well!

Internationalization

Also the fact that Aryeom is Korean, that we both lived in several countries in Europe, Asia and Oceania, that we speak English, French, Japanese, Korean (well my Korean is lacking!), and that I love languages and am a grammar geek made us good targets to notice anything wrong with GIMP’s support of non Western languages. So I have fixed some bugs and even crashes related to Input Methods and made the text tool finally compliant with input method engines (it used to have an ugly overlay box, not integrated at all in the input box, and without any standard formating).

Writing Korean (left) or Japanese (right) in GIMP 2.9.4's text tool.
Writing Korean (left) or Japanese (right) in GIMP 2.9.4’s text tool.

Of course, I did several other fixes related to languages since I contribute to GIMP like each language translated in itself in the list of language in the preference, or bugs with GUI with right-to-left languages, like Arabic (did I say I was a language geek? I love all these differences and particularities).
Other than this, both Aryeom and I are trying to build a more diverse community by engaging FLOSS and GIMP enthusiasts in Japan, South Korea (some tutorial videos in Korean even) or other countries in their native languages. A hard and long job but we are trying. 🙂

Code review and code maintenance

Well I code a lot of other stuff, smaller features (like the email plugin in GIMP 2.9.4, using xdg-email, implemented a few weeks ago) and bug fixes since I like GIMP hard-rock solid and as stable as possible but that’s obviously less visible. I am also trying to step up more and more for code review and maintenance of small pieces of the software, since Mitch really needs the help (apparently the whip is not enough help! Go figure!). Well this is still work in progress and I wish I could make time to bring more cool code into GIMP, but it still allowed the action search (equivalent to the space-menu of Blender), which I think is one of the coolest feature of GIMP 2.9/2.10 and making menus so old school. This was originally contributed by Srihari, then I reviewed, rewrote and fixed parts of it to fit our high standards on code quality. Well I think that’s one of the features I am the most proud as a reviewer (instead of as the original author). This is also very rewarding to work with other coders, especially when talented and with interesting ideas.

Searching an operation in GIMP with the action search.
Searching an operation in GIMP with the action search.

There are more code I reviewed and integrated, like lately the cool command line’s batch processing macro or even the whole revamping of the user interface (new themes and icons). Arguably this is less “useful”. Well it depends. I met some people who claimed it will change their life, while others would hate the new design direction (though note that old icons and theme are still available in preferences). But anyway this was an idea hanging around on mailing list for years, so I took on myself to attend to new contributors willing to help on the matter (Klaus Staedtler for the icons and Benoit Touchette for the themes). This is also an interesting adventure, I think.

New themes by Benoit Touchette and icons originally by Barbara Muraus and Jakub Steiner, heavily updated and completed by Klaus Staedtler.
New themes by Benoit Touchette and icons originally by Barbara Muraus and Jakub Steiner, heavily updated and completed by Klaus Staedtler.

In the end working on all these fronts is very cool but also exhausting. Hopefully the more time goes, the more I will be able to do! 🙂

Future of GIMP

GEGL everywhere?

I see a lot of good things happening around GIMP. And not just from me, but from all the awesome people in GIMP team and projects around. GEGL for one is a hell of a cool project and I think it could be the future of Free and Open Source image processing. I want to imagine a future where most big graphics program integrates GEGL, where Blender for instance would have GEGL as the new implementation of nodes, with image processing graphs which can be exchanged between programs, where darktable would share buffers with GIMP so that images can be edited in one program and updated in real time in the other, and so on.
Well of course the short/mid-term improvements will be non-destructive editing with live preview on high bit depth images, and that’s already awesomely cool right?

Painting again, better UI, export and much more…

Of course we want to go further for painting features and workflow improvement, but also the UI which really needs some reworking here and there (which is also why I created the gimp-gui mailing list, meant to discuss all sort of topics UI and UX related). That also includes improving support for graphics tablet and alike.
I also have a lot of ideas, some may come to be implemented in a form or another, or not (the export process for instance is still untouched for now). Even when this happens, it’s ok: contributing to Free Software is not just adding any random feature, that’s also about discussing, discovering others’ workflow, comparing, sometimes even compromising or realizing that our ideas are not always perfect. This is part of the process and actually a pretty good mental builder. In any case we will work hard for a better GIMP. 🙂
Among the many other features we are really keen on are the ability to select many layers at once (this is often a pain for Aryeom, since she usually works with many dozens of layers when animating), macros, improving the API to be able to customize the GUI (and not only adding menu items) and the behavior of GIMP, get more communication between GIMP and plugins and in general reacting to hooks, and much much more.
Now there are stuff which are also cool, like better HiDPI support but since we don’t own a HiDPI screen anyway, this is harder to test.

Also I like GIMP for being generic. While other programs choose to be specialized, which is a valid choice, we can notice most graphics programs end up with the same features in the end anyway. Indeed brushes and other painting features are actually very useful to photographers as well. On the other hand, painters regularly use filters and transformation tools originally thought for photographers. Designers use everything as well. So I think the approach of a program which aims to do everything well is quite acceptable too.

Well you see, we have a lot of plans about GIMP, that seems nearly impossible but that’s exciting. And of course, there are the plugins for animation that I am working on, on a good pace. I think I will be able to present the main GIMP plugin for animation quite soon on this website. Stay tuned! 🙂

Help us by helping ZeMarmot?

As often, I will conclude by promoting our permanent monthly funding of ZeMarmot. I know this is very annoying! We want to make a difference, something cool: a Libre animation film together with Free Software code. And trying to make this into more than just a hobby. Right now we are barely there.
I regularly talk about the more “artistic” side here, not often enough about the “technical” coding side. So I decided to use the opportunity of GIMP 2.9.4 release to make this small (non exhaustive) report of stuff I had been doing these last months and what are our goals on the software side (GIMP in particular). If you like what you read here about my contributions, then you like what ZeMarmot is doing, because this is all the same project. And therefore if ever you can afford it, we would welcome financial help so that we can continue software development as well as the production of the animation film.

We are on 2 platforms allowing monthly subscription (which you can stop anytime, as soon as you don’t like us anymore!): Tipeee where you can contribute in EUR (€) and Patreon where you can contribute in USD ($). Note that our pitch is written in French on Tipeee but that’s the same project anyway. Just read the official website in English or the Patreon page.

ZeMarmot on Tipeee (EUR).
Support ZeMarmot on Tipeee (EUR) »
ZeMarmot on Patreon.
Support ZeMarmot on Patreon »

That’s it for today! I hope you enjoyed my coding report on GIMP. Enjoy your week-end everyone! 🙂

Timing your movie…

A big question when you write a scenario is: how do you time your movie?

CIMA museum's clock, by Rama (CC by-sa)
CIMA museum’s clock, by Rama (CC by-sa 2.0).

From the scenario

You can already do so from your written script. It is usually admitted that 1 page is roughly equivalent to 1 minute of movie. Of course to reach such a standard, you have to format your file appropriately. I have searched the web to find what were these format rules. What I gathered:

Format

  • Pages are A4.
  • Font is 12-point Courier.
  • Margins are 2.5 cm on every side but the left margin which is 3.5 cm.
  • Add 5,5 cm of margin before speaker names in dialogues.
  • Add 2,5 cm of margin before actual dialogue.
  • No justification (left-align).
  • No line indentation at start of paragraphs.
  • …

I won’t list more because there are dozen of resources out there which does it in details, with sometimes even examples. For instance, this page was helpful and for French-speaking reader, this one also (and it uses international metric system rather than imperial units), or even Wikipedia.
It would seem that the whole point of all these rules is to have a script with the less possible randomness. A movie script is not meant to be beautiful as an object, but to be as square as possible. Thus exits any kind of justification (which stretches or compresses spaces), as well as any line indentation (which does not happen every line) because they don’t have a behavior set in stone. They were made only so that your document “looks nice” which a script-writer cares less than in the end than being able to say how long will the movie last by just counting the pages.

Free Fonts

Some people may have noted that 12-point Courier is a Microsoft fonts. For GNU/Linux users out there, you can get these with a package called msttcorefonts. On Debian, or Ubuntu, the real package is “ttf-mscorefonts-installer” and it does not look like it is in Fedora repositories. That’s ok because I really don’t care. I use personally Liberation Mono (Liberation is a font family created by RedHat in 2007, under a Free license). FreeMono is also another alternative, but the Liberation fonts work well for me.

You may have noticed that these are all monospace fonts, which means that every character occupy the same horizontal space, i.e. ‘i’ and ‘W’ for instance uses up the same width (adding spaces around the ‘i’ for instance), which opposes to proportional fonts (more common on the web). Once again, proportional fonts are meant to be pretty whereas monospace fonts are meant to be consistent. It all comes back to consistent text-to-timing conversion.
Not sure why Courier ever became a standard in script-writing, but I don’t think that any other font would be much of a problem. Just use any metrically-compatible monospace font.

Side note: I read 3 scenarios in the last year (other than mine) and none of them were using Courier, nor actually most of the rules here. So really I am not sure how much this rule is enforced, at least in France. Maybe in other countries, this is more an hard-on rule?

Writing with LibreOffice

Right now, I simply write with LibreOffice. Now I am not going to make a tutorial about using LibreOffice, because this will diverge too much but my one advice is: use styles! Do not “hardcode” text formatting: don’t increase indents manually, don’t use bold, nor underline your titles…
Instead create styles for “Text body” (default texts), “Dialogue speaker”, “Dialogue”, “Scene title”… Then save a template and reuse it every time you write a new scenario.

While writing this post and looking for reference, I read weird stuff like “use a dedicated software because you don’t want scene titles ending a page”. Seriously? Of course, if you make scene titles by just making your text bold, that happens. But if you use styles, this won’t (option “Keep with next paragraph” in “Text flow” tab which is a default for any Header style). So once again, use styles.

Note: dedicated software are much more than just this basic issue, and they would have a lot more features making a scenarist life easier. I was also planning on developing such a software myself, so clearly I’m not telling you not to use one! I’m just saying that for now, if you can’t afford a dedicated software, LibreOffice is just fine, and styling issues like “scenes titles should not end a page” are just lack of knowledge on how to properly use a word processing software.

So that’s it? I just follow these rules and I get my timing?

Of course, real life hits back. First of all, every language may be more or less verbose. For instance German and French are more verbose than English, which in turn is more than Japanese. So using the same formatting, your page in French would be less than a minute on screen whereas a page in Japanese would be longer than a minute.

There is also the writer’s style. Not everyone writes as concisely and you may write the same scenario with a different timing than your colleague.

As a consequence, writers evaluate their scripts. You can try to act them out for instance. Try to see how long your text really lasts. And then I guess, you can either create a custom text-to-length conversion or adapt the text formatting to end up with the “1 page = 1 minute” approximation. If your scripts are usually going faster, then you need more text in one page. Make smaller margins or use a smaller font maybe?

Of course, it may also be that you use a much too verbose style. A scenario is not a novel: you should not try to make a beautiful text with carefully crafted metaphors and imaging. You are writing a text for actors to read and understand (and in our case, for painters and animators to draw).

ZeMarmot’s case

Moreover the 1 min = 1 page rule is not consistent in the same script either: a page with no dialogue could last several minutes (descriptions and actions are much more condensed than dialogues) whereas a page with only dialogue could be worth a few seconds of screen. But that’s ok, since this is all about average. The timing from scenario is not meant to be perfect. It gives us an approximation.

Yet ZeMarmot is particular since we have no dialogue at all. So are we going to have only 5-minute pages? That was a big question, especially since this is my first scenario. Aryeom helped a lot with her animation experience, and we tried to time several scenes by imagining them or acting them out. This is a good example which shows that no rule is ever made to be universal. And in our case, it took a longer time to accurately calibrate our own page-time rule.

Animatics

This is more animation-specifics: the next step after storyboarding (or before more accurate storyboarding starts) is creating an animatic, which is basically compiling all the storyboard’s images into a single video. From there, we can have a full video, and we will try to time each “image”. Should this action be faster or last longer? This requires some imagination since we may end up with some images lasting a few seconds and we have to imagine all in-between images to get the full idea. But in the end, this is the ultimate timing. We are able to tell quite accurately how long the movie will last once we agree on an animatic.

Should timing lead the writer?

The big question: should the timing lead us? You can get a different timing than you expect, and there are 2 cases: longer or shorter.

The shorter one is easy. Unless you are really really too short (and you don’t qualify anymore as a feature-length for instance), I don’t think it is a problem to have a shorter-than-average movie. I’d prefer 100 times a short but well timed and interesting movie than a boring long movie.

Longer is more difficult because the trend nowadays seem to have longer and longer movies. Now 2h30, sometimes up to 3h, seems to be a standard for big movies (and they manage to lengthen them in the “director cut” edition!). I have seen several movies these last years which were long and boring. I am not even talking of contemplative art movie, but about hard action-packed movies. No, superhero battling for 3 hours, this is just too much.
So my advice if your movie is longer than expected, ask yourself: is it really necessary? Won’t it be boring? Of course, I am not the one to make the rule. If you work in Hollywood, well first you probably don’t read me, and second you don’t care whatever I say. You will make a 2h30 movie and people will go and watch it anyway. Why not. I’m just saying this as a viewer. And since I think this is really not enjoyable, I don’t want to have our own viewer experience be boring (well at least by movie length!).

And so that’s it for my small insight about timing a movie. Of course, as I already told, I am mostly a beginner on the topic. Everything I say here is a mix of my searches these last months, my own experiments, Aryeom’s experience… So don’t take my word as is, and don’t hesitate to react in comments if you have better knowledge or just ideas on the topic.

By the way: ZeMarmot‘s pilote (not the finale movie) has been timed to be about 8 minutes long. 🙂

Reminder: if you want to support our animation film, made with Free
Software, for which we also contribute back a lot of code, and
released under Creative Commons by-sa 4.0 international, you can
support it in USD on Patreon or in EUR on Tipeee.