Vous vous le rappelez peut-être que l’année dernière, Graham Nelson, le créateur d’Inform, avait parlé du futur de ce système. Nous n’avions pas eu de nouvelles depuis mais, à la convention NarraScope la semaine dernière, il a enfin annoncé ce que beaucoup attendait : Inform 7 devrait devenir open source d’ici la fin de l’année.

Voici donc un résumé de sa présentation, réalisé à partir de ses notes publiées ici. Elle est un peu plus technique que la dernière.

Pour les anglophones qui désirent lire la version originale, libre à vous d’aller directement à la page liée dans le paragraphe précédent. Pour les autres, allez quand même regarder si vous voulez voir les diapos.

Une drôle de métaphore

Graham Nelson commence par présenter Inform brièvement, pour ceux qui ne seraient pas familiers avec le langage.

Il enchaîne ensuite avec une réflexion sur les gros projets tels qu’Inform. Il dit qu’on utilise souvent la métaphore de l’architecture : avec un simple éditeur de texte, on peut faire des constructions parfaites, du plan au bâtiment achevé. Mais la conception d’un logiciel ne se déroule pas vraiment comme cela : on commence par des choses, on continue, on ajoute, on modifie ou on supprime, les gens l’utilisent même s’il n’est pas terminé, les besoins changent au fil du temps…

Pour corriger cette métaphore, il prend l’exemple de la Sagrada Família, une basilique en construction depuis 1882 et censée être terminée en 2032. Il s’étend un peu sur ce sujet avant de revenir à Inform.

Le plan original (2001-2015) était d’ajouter de nouvelles fonctionnalités, de corriger les bugs et, une fois par an, d’identifier la chose qui a été le moins bien implantée pour la refaire d’une meilleure façon. Pourtant, Graham Nelson dit que des maintenances de routine ne suffisent plus pour les vieux bâtiments, qu’il faut alors les fermer temporairement. Selon lui, cela est arrivé à Inform en 2015.

Après cette rénovation, Inform va devenir open source.

« Open source », cela signifie grosso modo que le code des programmes composant Inform 7 sera rendu public et que n’importe qui pourra y contribuer, le distribuer, l’utiliser pour créer un logiciel dérivé…

De quoi est fait Inform

Graham Nelson continue en parlant des composants d’Inform, qui est maintenant développé sur GitHub. Inform est écrit en C, en utilisant du literate programming. Cela a été expliqué la dernière fois ; rapidement, il s’agit d’une façon d’écrire sa source en mélangeant le code avec des explications afin qu’on puisse le lire comme un livre.

Cependant, cette façon de programmer n’est pas très commune aujourd’hui alors Nelson a développé sa propre solution, inweb. Celui-ci permet aussi de coller des modules ensemble. L’un d’eux, foundation, regroupe les fonction bas niveau qui faisaient partie du compilateur d’Inform. Maintenant, tous les outils Inform utilisent foundation.

Une autre chose qui a été réécrite est intest, l’outil pour tester Inform lors de sa conception. Ce qui était autrefois un script bricolé est maintenant un outil générique pouvant tester n’importe quel programme en ligne de commande. Un nouveau langage, Delia, a été conçu pour intest. Une des fonctionnalité d’intest est de pouvoir exécuter les 2000 tests d’Inform en parallèle pour que ce soit rapide (chaque test prend 3 secondes, ce serait trop long s’ils étaient effectués les uns à la suite).

Comment rendre Inform plus utile ?

C’est la question que s’est posée Graham Nelson.

Une façon est de généraliser les entrées du logiciel. Pour Inform, cela revient à autoriser d’autres langues que l’anglais pour écrire sa source. Cela a déjà été commencé (on peut déjà utiliser un peu de français avec Inform 7 6L38), mais il reste beaucoup de choses à faire. Rendre Inform open source permettra à des personnes (au hasard, moi :p) de travailler sur cet aspect.

Ensuite, on peut généraliser les sorties du logiciel. Jusqu’à maintenant, une source I7 était traduite en Inform 6, qui est compilé en un fichier jouable. Maintenant, la source sera compilée en une description intermédiaire, inter, qui pourra être traduite en I6, ou en tout autre langage.

Inter permet également de mieux pouvoir optimiser le produit de la compilation, en enlevant ce qui n’est pas nécessaire avant la traduction en I6 (ou autre).

(Pour ceux qui s’y connaissent un peu, tout cela a été en partie inspiré par LLVM.)

Avant, chaque morceau d’une source I7 était traduit en une fonction I6 parmi 91. Il fallait adapter tout cela pour inter, et ça a été long, et c’est pour cela qu’inter contenait parfois directement des extraits I6 (ce qui pose problème si on veut générer autre chose que de l’I6).

Mais ce n’est plus le cas ! Depuis le 6 mai dernier, inter ne contient plus de code I6.

Inter est très verbeux : une source I7 de 1000 mots est compilée en 285 000 intructions inter, qui généreront 80 000 lignes d’I6 ! Après avoir parlé du fonctionnement d’inter (c’est un peu technique alors je saute), Graham Nelson mentionne un problème : beaucoup d’extensions (dont les Standard Rules) incluent des extraits d’I6, et une grosse partie d’Inform 7 (les templates) est écrite en I6. Que faire si on veut générer de l’inter avec ça ?

On pourrait réécrire tout cela en inter, mais ça poserait problème aux auteurs des extensions. À la place, ce code Inform 6 est maintenant décompilé en inter, qui sera ironiquement retraduit en Inform 6 (ou en tout autre chose, d’où l’utilité de cette manipulation).

Inform open source

Enfin, la présentation se termine avec les conséquences qu’aura le fait de rendre Inform open source, sous l’Artistic License 2.0 pour être plus précis.

Il faudrait résoudre les problèmes de gestion : comment s’occupera-t-on des rapports du bug, des suggestions, des contributions ? Concernant les droits d’Inform, pour le moment, c’est Graham Nelson qui les garde.

La dernière sujet de la présentation est des suggestions de contribution que les gens pourront faire.

Parmi elles, un gestionnaire d’extensions, pour que l’on puisse choisir quelle version des extensions utiliser pour chacun de ses projets, au cas par cas ; un programme permettant de traduire inter en C# pour utiliser Inform avec le moteur de jeu Unity ; la même chose, mais pour compiler inter en JavaScript, pour qu’on n’ait pas à utiliser un interpréteur Glulx écrit en JavaScript (comme Quixe), mais plutôt que sa FI soit directement compilée en JavaScript, ce qui le rendrait plus rapide ; une application iOS pour pouvoir écrire ses FI sur mobile.

Et c’est la fin du survol de cette présentation. J’ai vraiment hâte que la nouvelle version d’Inform sorte, car tout cela a quand même l’air excitant. Et tout ce qui nous rapproche d’un Inform en français me rend assez heureux !