Page vérifiée Created at April 4, 2016 Contact

Animation and software report for June/July 2019

- 0
  • [ English — français plus bas ]

    Hey all!

    When it comes to reports, we definitely procrastinate… a lot! We know we need to communicate more. Fortunately you are all awesome, so thanks for understanding!

    When it comes to animation and code though, we are definitely not procrastinating (actually our way of procrastinating away from communication is to work more!). So here is a quick'n dirty report of what happened in the last months.


    The video above shows some extracts of animation work by Aryeom. We are sorry for the video quality. These are actually concatenated videos we posted on social networks and most of the time, end of day, we'd just take a quick phone video of the screen (yeah no kidding! It's not like these are finale renders so we kind of take the ugly shortcut) to publish while on the bus.

    Anyway that's a lot of work here, hundreds of images, redone animations, experiments, hair tearing, and so on. And as you can see, she even worked with some basic 3D (in Blender) for a broken glass effect. I don't know, if ever you like what she does, don't hesitate to tell Aryeom. It's really a hard work! She even got some small tendinitis on the left shoulder recently and has to see the physiotherapist again. Send her some love!

    GIMP development

    On coding side, so much has happened since we last talked that it would take a novel to tell it all:

    Recently we ported the GIMP API for plug-ins to GObject Introspection. In less technical terms, it means that GIMP 3 will support plug-ins in Python 3. But even more, it should be possible to make plug-ins in any language with a GObject Introspection binding. Who knows if we'll soon see plug-ins in JavaScript, Go, Objective Caml or any other fancy script language in the future?

    As a general rule, the work on making GIMP 3 a reality is really really going strong lately. Don't ask us for a date! We won't give any. Not because we don't want, but simply committing to a deadline is just not possible (or would be a lie). Nevertheless even in our studio, we are discussing of maybe moving to using the development branch for the production of ZeMarmot. We are that much confident that GIMP 3 dev code is getting very good.

    We worked with our macOS contributor to set up a public repository on GNOME infrastructure for the macOS package of GIMP in order for the package creation and continuous integration to be as transparent as possible. The ultimate goal is to come up with a set of rules for proper packaging, for the sake of security with a building chain of trust. We have been discussing with other third party packagers, for instance the AppImage one (we met him during Libre Graphics Meeting), and we are talking of applying such rules to welcome more packages as "official". Of course, it takes time, and since we are kind of juggling with so much (and since we don't need packaging ourselves; working on this is purely for the sake of the community), it still happens a bit too slowly.

    ‣ There are also the other projects we started and kind of left hanging. For one, we have wanted to get touch support in GIMP 3. We started some development, but nothing advanced enough to be pushed yet. Hopefully we can continue working on this soon.

    The other thing I worked on was multi-selection of layers, especially for organization purpose (when you work with several dozen of layers and want to reorganize half of them in layer groups or such, this is just so tedious you want to cry!). Unfortunately this is also one of these projects which I had to leave in a completely unusable state after several days of work. It will definitely need some dedication if we want to make this happen (we welcome contributions by the way!).

    Still in the main development branch, we contributed quite a bit to port file support plug-ins in particular for the "space invasion" project, quite a long-term project now (we were already talking about this at the GIMP 2.10.8 release news, 8 months ago), whose goal is to better handle color profiles. So that's mostly for people needing some advanced color support, as you can imagine.

    We also improved the interaction with the Free Select tool: when you do a quick copy or cut, with alt+shift or alt+ctrl respectively, you won't have to commit the selection anymore (Free Selection is a tool which Aryeom uses a lot so these kinds of productivity details matter quite a lot to us).

    There are much more which either is not worth listing (many bug fixes, some minor features in TIFF and HEIF support, etc.) or simply I don't remember. This is still the gist of it.

    But really the major big project I have been working on in the last few weeks (I haven't mentioned it above because it's just not to be put on same value for us) is that I am redoing from scratch our animation support in GIMP. Yep, you read it well! I am not crazy either!

    Actually I started to hate my own plug-in and code. It was very advanced and huge. But it was becoming harder and harder to maintain. It was a bit depressing even. You might have wondered why the plug-in had never been released officially in GIMP so far. This is because I just never thought we reached a quality level where it was releasable material. We had never been really happy about what we did. As simple as that.

    Instead we are now going (hard)core! Animation will become a native feature! This will be 100 times better as we will bring new concepts to images making file organization a lot more manageable too. And we already have a lot of code facilities in GIMP to deal with complex code, such as multi-threading (this was one of the problem in the plug-in as I had to reimplement a lot of multi-threading helper code which we already had in GIMP itself), or management of huge memory. The fact that plug-in communication with GIMP core is one-sided is also a terrible efficiency issue. I think with our plug-ins needing such advanced features, we just reached the limits of what the GIMP plug-in API can provide (a long term project would really be to improve this API drastically!).

    In just a few weeks, I am actually already pretty happy of what I got so far (even though still not releasable). Hopefully it will continue this way!

    So yeah, dropping years of code was a very huge decision, but I am very happy we did it. Sometimes it's just better to know when you made something wrong and drop it.

    And here it is! I hope you like what you are seeing/reading, because it's the result of a lot of sweat and hard work. We love Free Software, we love Libre animation, we love marmots (free marmots!), and we love you for supporting us!

    Thanks all!

    Jehan, on behalf of ZeMarmot team


    [ Français ]

    Bonjour à tous!

    Vous le savez depuis le temps: on procrastine nos rapports pas-toujours-si-mensuels à mort! On sait: on devrait communiquer plus, mais c'est dur. On vous remercie d'ailleurs de tout cœur pour être compréhensifs et nous soutenir!

    Par contre, quand il s'agit d'animation ou de développement, là on ne procrastine plus (c'est plutôt l'inverse: c'est ainsi qu'on procrastine pour ne pas avoir à fare nos rapports!). Voici donc notre rapport rapide pour les 2 derniers mois.

    ZeMarmot: animation

    La vidéo plus haut montre des extraits du travail d'animation par Aryeom. Désolé de la qualité vidéo. Ce sont en fait des vidéos prises avec un téléphone et concaténées. Sans rire, quand on veut juste publier un extrait sur les réseaux sociaux en fin de journée, on fait juste une vidéo vite fait de l'écran (c'est pas comme si c'était un rendu final!) en partant pour ensuite publier dans notre trajet en bus. Ne nous en veuillez pas trop! 😛

    Quoiqu'il en soit, ces quelques images représentent un travail assez énorme. Des centaines d'images, pour certaines faites et refaites de nombreuses fois, des expériences gardées ou jetées, des cheveux arrachés. Y a de tout ça dans ces images! Dernièrement elle a même travaillé un peu avec de la 3D simple (dans Blender) pour intégrer quelques effets. D'ailleurs si vous aimez ce que fait Aryeom, ne pas hésiter à lui dire! C'est vraiment un travail de monstre et de fourmi à la fois qu'elle abat. Ce n'est pas facile tous les jours. Dernièrement elle a même eu à nouveau une tendinite qui s'est réveillée dans l'épaule gauche et voit un kiné. Envoyez lui vos encouragements!

    GIMP: développement logiciel

    Côté code, énormément a bougé aussi. Voici une petite liste non-exhaustive:

    Récemment nous portons l'API pour greffons dans GIMP pour le système GObject Introspection. En terme moins technique, ça signifie juste que GIMP 3 prendra en charge les plug-ins écrits en Python 3. Encore mieux, il devrait être possible de faire des plug-ins dans tout langage qui a un module GObject Introspection. Qui sait, on verra peut-être apparaître des plug-ins JavaScript, Go, Objective Caml ou dans d'autres langages très bientôt?

    Le travail pour faire de GIMP 3 une réalité bat son plein de manière générale. Bon, nous demandez pas une date, on n'en donne pas. On ne sait pas. Par contre on hésite même dernièrement à se mettre à utiliser la branche de développement pour la production de ZeMarmot. Eh oui, on est à ce point confiant dans la qualité croissante du code en développement.

    On a travaillé avec notre contributeur macOS pour faire un dépôt public sur l'infrastructure GNOME pour le paquet macOS, permettant ainsi plus de transparence et une intégration continue publique. Le but final est de mettre au point des règles claires pour assurer la chaîne de confiance de création d'un paquet binaire. Nous discutons d'ailleurs aussi avec d'autres mainteneurs de paquets tiers, comme celui qui fait un AppImage (nous l'avons aussi rencontré à Libre Graphics Meeting), et espérons à terme pouvoir accueillir plus de paquets comme étant "officiels". Bon, tout cela prend du temps et comme on jongle avec les priorités (et aussi que nous n'avons pas besoin de paquets de notre côté; c'est essentiellement pour la communauté), ça arrive tout doucement. Mais ça arrive…

    J'ai commencé d'autres petits projets de fonctionnalités que j'ai pour le moment mis de côté. Par exemple, on voulait la prise en charge tactile pour GIMP 3. J'ai commencé un peu à coder dans ce sens, mais ai dû mettre en pause. J'espère pouvoir bientôt reprendre.

    Une autre fonctionnalité sur laquelle j'ai essayé de m'atteler est la multi-sélection de calques, en particulier pour l'organisation (imaginez: vous travaillez avec des dizaines de calques et avez besoin de déplacer une moitié d'entre eux dans des groupes de calques mais devez le faire un par un… de quoi pleurer!). Malheureusement je n'ai pas pu finir ce projet non plus pour l'instant. J'espère pouvoir le reprendre (à moins que quelqu'un veuille contribuer! Nous acceptons les patchs avec joie!).

    Toujours dans la branche de développement, nous avons amélioré pas mal de plug-ins de prise en charge de formats d'image dans le cadre du projet "space invasion". Maintenant presque un projet long terme puisqu'on en parlait déjà à la sortie de GIMP 2.10.8, il y a 8 mois. Heureusement ce projet arrive proche de la fin. Le but est une meilleure prise en charge des profils de couleurs, donc pour les personne avec des besoins un peu avancés.

    Nous avons aussi amélioré l'interaction de l'outil de sélection à main levée: quand vous faites une copie ou coupe rapide (avec alt+shift ou alt+ctrl respectivement), il n'est plus nécessaire de valider la sélection. Étant donné qu'Aryeom utilise énormément cet outil de sélection à main levée, ces détails de productivité sont particulièrement importants pour nous.

    Il y a bien sûr plus (pas tout ne mérite son paragraphe; on a aussi quelques micro-fonctionnalités dans des prises en charge de fichiers TIFF ou HEIF par exemple, et bien sûr de nombreuses corrections de bugs; j'ai sûrement aussi oublié des choses…). C'est toutefois le gros de notre travail récent.

    Mais en vrai, le project majeur du moment, c'est que j'ai décidé de refaire la prise en charge de l'animation de zéro! Oui vous avez bien lu. Non je ne suis pas fou! Pour résumer, mon plug-in était vraiment un énorme travail, très avancé, des milliers de ligne de code et il était pas si mal. Mais il devenait inmaintenable. Je pense qu'on atteignait les limites de l'interface de plug-ins de GIMP. Sincèrement j'en était arrivé à détester travailler sur ce plug-in et presque à déprimer. C'est pour cela qu'il n'est jamais sorti dans les versions stables de GIMP. On n'a jamais trouvé qu'il était suffisamment bon.

    Alors des fois, il faut savoir quand on doit faire demi-tour. Depuis quelques semaines, j'implémente la prise en charge de l'animation native dans GIMP. Cela va ouvrir énormément de portes, va énormément simplifier l'organisation des fichiers (puisque les concepts d'animation seront intégrés), et permettre un code plus efficace. L'un des problèmes par exemple était que je devais réimplémenter la gestion multi-thread (alors que le cœur de GIMP a des utilitaires très poussés pour la gestion des threads, et mon plug-in en faisait un gros usage!); un autre est que la communication entre les plug-ins et le cœur de GIMP est dans une seule direction. Tout cela rendait le développement inefficace et frustrant (un projet futur que j'ai est justement d'améliorer un jour tout cela drastiquement).

    Quoiqu'il en soit, en à peine quelques semaines, je suis plutôt content des avancées. Espérons que cela continue dans cette lancée. Et oui, clairement jeter des années de code ainsi fait peine, mais des fois, c'est juste nécessaire, et je regrette pas une seconde de l'avoir fait.

    Voilà! J'espère donc que vous aurez aimé notre petit rapport. C'est le résultat de beaucoup de sueur et de travail. On aime le logiciel et l'animation Libres, les marmottes (libres aussi!), et on vous aime, vous qui soutenez nos efforts et notre projet!

    Merci à tous!

    Jehan, au nom de l'équipe ZeMarmot