LibFR inform6: Licence et nouvelle version

Bonjour tout le monde,

Comme je l’avais annoncé il y a quelques mois, le passage officiel d’Inform 6 sous la licence Artistic 2.0 ouvre la voie à son packaging dans les distributions Linux, ainsi du coup qu’au packaging de jeux I6.

J’ai packagé les dernières versions du compilateur (github.com/DavidGriffith/inform6unix) et utilisant le compilateur et la bibliothèque, mais il attend la prochaine version upstream, et je fais de même.

Voilà pour le contexte. Maintenant j’aimerais packager nos bibliothèques francophones pour I6. Cela soulève néanmoins plusieurs questions :

Licence : Il ne semble pas y avoir de licence pour nos bibliothèques, en tout cas ni dans la version 2.3, ni dans la version 2.4dev. Pas de licence veut dire propriétaire, ce qui est pas cool :slight_smile: Je propose d’utiliser l’Artistic License 2.0 comme le reste d’Inform 6 et de la lib d’origine. Il faudrait a priori pour cela avoir l’accord de tous les auteurs de la traduction.

Nouvelle version : Il y a pas mal de développements dans la branche trunk par rapport à la dernière version stable 2.3. Par ailleurs, il y a sûrement un peu de boulot à faire pour se mettre à jour avec la version 6/12 des bibliothèques anglophones (qui date de Décembre 2015). Je proposerais donc de relancer un peu le développement pour que l’on puisse sortir une version 2.4 (avec la licence qui va bien, comme indiqué ci-dessus).

Migration sur Git ? Les bibliothèques francophones pour I6 et I7 sont toutes deux hébergées sur notre dépôt SVN de TuxFamily. Ça marche bien a priori, et on apprécie tous la simplicité de SVN, mais ça n’est pas très propice au travail collaboratif en 2016. Pour faire des modifications, il faut soit faire un commit sans demander son reste, soit envoyer des patches sur le forum et voir ce que d’autres en disent. Utiliser une plateforme du style GitLab ou GitHub pourrait nous permettre de travailler de façon plus dynamique, avec des pull requests, un suivi des bugs, etc. Et ça donnerait aussi une plus grande visibilité à notre code pour la communauté IF dans son ensemble. On pourrait avoir une organisation GitHub « IFictionFR » pour héberger nos projets communs.

Edit: Aussi une petite question sur le format de ces fichiers. Actuellement ils sont au format DOS et encodés en ISO-8859. Pour le développement de code source multiplateforme, la convention est souvent d’utiliser le format UNIX et l’encodage UTF-8. Est-ce qu’il serait possible de passer sur ce format, ou est-ce que DOS/ISO-8859 sont nécessaire pour Inform ?

Edit 2: Si on fait une nouvelle version pour être synchro avec la bibliothèque 6/12, il serait peut être bien de calquer notre numéro de version sur la bibliothèque upstream ? Par exemple 6.12.0 (utiliser un backslash dans un numéro de version est une hérésie :stuck_out_tongue:), et si on a des correctifs à faire 6.12.1, etc.

Qu’est-ce que vous en pensez ?

Ce qui est faux, au moins pour I7. Le dépôt I7 est sur BitBucket, et Mule a une version mise à jour de la bibli I6 sur son compte (mais pour I6, je ne sais pas quelle est la bilbi « officielle », celle qu’un nouvel utilisateur devrait utiliser). La page sur tuxfamily n’est plus du tout à jour, et j’en avais parlé lors des problèmes à corriger lors de la refonte du site.

Pour ce qui est de la licence de l’extension I7, rien n’est spécifié, mais les extensions I7 hébergées sur le site d’Inform sont en Creative Commons Attribution, donc à terme la licence sera sûrement ça (sauf si des gens sont contre).

Coucou ! Super initiative ! :slight_smile:

En effet, j’ai fait comme qui dirait une sorte de fork des biblis I6 (notamment parce que je me rappelait plus de SVN ni des identifiants là-bas), que tu peux trouver sur Bitbucket, avec aussi un changelog. Je crois que ce que j’ai forké c’était la version 2.4dev du trunk, même si j’ai un doute là comme ça. En tout cas c’est stable et je recommande à tout le monde de s’en servir :wink: J’ai aussi une quinzaine d’idées / rapports de bugs qui traînent, que je devrais transformer en vrais rapport de bugs sur bitbucket… je l’ai pas fait parce que j’étais tout seul et j’avais la flemme, mais si quelqu’un est motivé pour aider, ça me motivera aussi :slight_smile:
(Enfin, pour clarifier, tu proposes ton aide pour relancer le développement des biblis, c’est ça ? )
Sachant que c’est un dépôt git et qu’on peut le migrer sur github si tu préfères… Je me suis mis sur bitbucket parce qu’il y a un nombre illimité de repos privés alors que pas sur github (ou quelque chose comme ça ? ou est-ce que c’était sur la taille des équipes ? rah je sais plus). Ça changera pas grand-chose pour moi, ça reste du git en ligne de commande pour moi :wink:

Pour ce qui est de la 6/12, c’est vrai qu’il y a plein de bugs corrigés et ça serait vraiment cool, mais il faudrait qu’on traduise French et FrenchG pour avoir les mêmes features qu’en anglais (enfin, c’est vrai qu’on pourrait ne pas s’embêter et ne pas le faire, peut-être ?), surtout les narrative voices, qui vont demander un boulot assez gros. Mais la fonctionnalité est cool : il suffit de mettre des flags à jour et le jeu dit « Le détective pouvait voir X et Y » ou « Je verrai X ou Y » au lieu de « Vous pouvez voir X ou Y ». Ça implique donc de réécrire tous les messages de la lib, avec du code un peu pourri vu que chaque « vous » doit être remplacé par un appel à une fonction qui affiche le bon pronom, et ensuite il faut faire toutes les conjugaisons… C’est faisable, hein, c’est juste du travail de fourmi, et c’est pas forcément ma priorité personnellement ; par contre, encore une fois, si t’es motivé je veux bien bosser en tandem et ça serait une très bonne chose de faite :slight_smile:

Je ne résiste pas à proposer mes autres extensions (cf mon dépôt) pour inclusion dans le package, par exemple FrenchGAugmented, mais bon, je dis juste ça comme ça :slight_smile:

Les mois passés, voilà ce qui s’est passé en I6:

Bref, ça peut être une bonne idée d’attendre qu’ils aient fini de corriger les bugs de la lib avant de les inclure quelque part ? Je sais pas hein.

Sinon, en vrac : pour la licence, Artistic 2.0 ça me va ; pour les numéros de version pourquoi pas (mais est-ce que ça nous limite à attendre qu’ils changent de numéro de version avant de pouvoir faire une version nous-mêmes ?) ; pour l’encodage Inform ne pouvait faire que du Latin-1 jusqu’à 2011-2012 je crois, et ils ont rajouté un flag Unicode (-Cu) pour accepter les sources en Unicode, donc ça devrait marcher (mais je crois pas que ça ait beaucoup été utilisé alors c’est peut-être dangereux. Ça permettrait de mettre des espaces insécables aux bons endroits :wink: bref, c’est un bug report à faire, quoi).

Pour la conjugaison automatique des verbes, ça marche comment ? Il faut écrire à la main la conjugaison de chaque verbe, avec un switch pour chaque personne ? Dans ce style:[ prends personne; switch(personne) { 1: print "vois"; 2: print "vois"; 3: print "voit"; 4: print "voyons"; 5: print "voyez"; 6: print "voient"; } ];(avec un autre switch par-dessus pour chaque temps.)

Si c’est ça, on pourrait peut-être prendre et adapter le code autogénéré par Inform 7, puisque le travail y est déjà fait.

D’ailleurs, j’y pense, ça ne risque pas d’alourdir le jeu final ? Je sais qu’il y en a qui aiment I6 parce qu’on toujours y faire des Z-codes. Sûrement que ce n’est pas important.

Pour relancer, oui, dans le sens d’aider à mettre les choses au clair, avoir un dépôt upstream officiel sur lequel tout le monde puisse travailler facilement, clarifier la licence, etc.
Pour ce qui est de faire du développement en soi, je donnerai volontiers un coup de main par-ci par-là pour corriger des bugs, mais je ne peux pas promettre de faire de développement soutenu. Je suis déjà pas mal occupé par les divers projets auxquels je contribue (en particulier Godot Engine dernièrement, mais bon ça sort du cadre de l’IF :wink:).

Je suis content de voir qu’il y a déjà de nouveaux dépôts Git pour les bibliothèques I6 et I7. Je n’ai pas beaucoup d’expérience avec Bitbucket, mais je ne suis pas contre l’utiliser ; j’ai une préférence pour GitHub que j’utilise pour de très nombreux projets (et Bitbucket a tendance à générer des archives avec des noms absurdes), mais ça ne change pas grand chose au final. L’idéal serait de transférer le dépôt de Mule hollandaise dans le domaine informfr qui existe déjà pour la bibliothèque I7. Mieux vaut garder les différents projets de la communauté informfr au même endroit. Si Otto et Natrium sont d’accord (ils sont les deux members de l’organisation sur Bitbucket actuellement), il faudrait rajouter au moins Mule hollandaise à l’organisation pour qu’il puisse maintenant le dépôt I6, et probablement Stormi s’il est intéressé (et moi éventuellement, même si je travaillerai surtout à base de pull requests plutôt qu’avec des commits directs - une relecture par un autre dev ne fait jamais de mal.

Une fois cela fait, il faudra vraiment clarifier la licence pour les deux bibliothèques. Cela implique d’avoir l’approbation de tous les co-auteurs, donc c’est toujours un peu pénible, mais la plupart sont toujours plus ou moins actifs dans la communauté si je ne m’abuse (à part peut être Jibé, mais il doit être contactable).

Ensuite on pourra réfléchir à comment ces bibliothèques doivent évoluer (je ne peux pas trop dire pour I7, je n’y connais rien, mais pour I6 il faudra au moins assurer la compatibilité avec la lib 6/12 - pour l’instant ça ne compile pas chez moi). On pourra faire un usage extensif de rapports de bugs sur Bitbucket ou autre pour définir les objectifs et tâches à réaliser j’imagine.

Il faudrait aussi bien évidemment mettre à jour la page officielle sur TuxFamily qui pointe toujours vers les dépôts SVN… :slight_smile:

Présent !

Pour mes propres contributions, c’est compatible avec la licence que vous choisirez, quelle qu’elle soit, donc pourquoi pas la Artistic.

Je pense que tu veux dire JL.

Pour être précis, le dépôt I7 est un dépôt Mercurial, pas Git (je ne sais pas trop ce que ça change, mais je pense qu’Otto préfère Mercurial). Sinon pas de problème pour intégrer I6 dans le projet (qui s’appelle d’ailleurs Untitled project pour le moment), ça me paraît être la chose à faire.

Pour l’évolution de l’extension I7, c’est pour l’instant Graham Nelson qui décide ; il est en train de réformer beaucoup de choses dans le langage pour améliorer les support des langues autres que l’anglais.

Pour l’évolution globale, je dirais d’essayer de synchroniser le plus possible I6 et I7. Dans le meilleur des mondes, on ne devrait pas pouvoir différencier des FI faites avec I6 et I7 mis à part pour la version sous la bannière et les fonctionnalités propres à I7.

(et oui, si on ne veut rien payer, Bitbucket autorise un nombre illimité de dépôts privés, mais un nombre limité d’utilisateurs sur ces dépôts. L’inverse sur GitHub : nombre limité de dépôts privés, mais nombre illimité d’utilisateurs.)

Quelle est la limite du nombre d’utilisateur sur Bitbucket ? J’ai surtout l’expérience de GitHub, qui est parfait tant qu’on veut faire du logiciel libre (ce qui est le cas ici pour les extensions I6 et I7 a priori) - ne pas pouvoir faire de dépôts privés n’est pas un problème quand on veut de toute façon faire des développements publics :slight_smile:

Noter qu’il existe aussi le français et tenu par des gens sympathiques framagit.org

C’est basé sur Gitlab, donc derrière c’est du git, et il n’y a aucune restriction à ma connaissance.

Quelques infos, notamment sur le pourquoi framagit plutôt que gitlab : framablog.org/2016/04/19/notre-g … -efficace/

Pour le reste je serais favorable à ce que les libs I6 et I7 soient gérées au même endroit, avec les mêmes comptes, et via git qui a largement gagné la bataille de la popularité contre mercurial, quelques soient les qualités techniques de ce dernier. En d’autres termes : qui veut élargir sa base de contributeurs, ou rendre la contribution plus aisée, favorisera git plutôt que mercurial (noter que le même argument favorisera gitlab plutôt que framagit ou bitbucket, même si dans le lot framagit a l’avantage d’être tenu par une association qui fait beaucoup pour promouvoir la décentralisation du web et les logiciels libres, contrairement aux deux autres. Mais si le même argument est utilisable que pour git vs mercurial, la situation n’est pas la même : git et mercurial sont des outils libres. Gitlab, framagit et bitbucket sont des services, avec la centralisation et/ou la dépendance que cela entraîne de la part des utilisateurs. Récemment github a eu une panne, de nombreuses entreprises qui ont basé leurs process de développement dessus ont été impactées… Mais cela nous concerne peu pour les libs inform…).

Je pense que le nombre d’utilisateurs est illimité pour les dépôts publics, donc il n’y a pas de problèmes, en fait.

Pour ce qui est de Mercurial vs Git, disons que ça ne change rien pour moi qui utilise une interface graphique (ça doit être différent en ligne de commande). J’ai quand même trouvé Mercurial plus facile à utiliser.

Ça me semble un bon plan d’attaque :slight_smile: par contre je préfère (re-)prévenir avant, 6/12 c’est un gros morceau et si c’est l’objectif le package ne sera pas pour tout de suite :wink:

Y’a-t-il moyen en git de scinder un dépôt, ou copier qu’une partie du dépôt et de son historique? Mon dépôt actiuel a des extensions en plus de la lib francophone, donc faudrait un dépôt avec uniquement la lib… même si au pire, copier-coller et tant pis pour l’historique des commits, après tout c’est ce qui s’est passé en pratique quand j’ai commencé mon dépôt ^^

Qui est admin de ifictionfr sue bitbucket? Otto, Natrium?

Les deux.

Cool ! Tu/vous m’ajoutez ? Niveau nom du dépôt, celui d’i7 est « i7-french-language » c’est ça ? Je fais le même nom mais avec i6 ?

Hugo, je viens de te rajouter en tant qu’admin du groupe inform-fr sur bitbutcket (ainsi que Rémi, j’ai trouvé ton login qui est le même qu’ici :slight_smile:). Par rapport à github / bitbucket, je préfère bitbucket parce qu’il propose le choix entre mercurial et git, et c’est une alternative à github qui devient un peu trop gros / incontournable et ça représente un risque à terme au même titre que google, facebook, twitter et compagnie : carlchenet.com/2016/01/22/le-danger-github/

Mercurial est bien pour les utilisateurs de windows parce que l’interface graphique fonctionne bien, mais peut-être que git s’est amélioré depuis le temps… Après, pour ce que j’utilise de mercurial (pull, update, commit, push etc), que ça soit git ou mercurial, ça ne change pas grand chose pour mon usage.

Au niveau des noms de fichiers dans Bitbucket, c’est un mauvais choix à mon sens d’avoir mis le checksum vers la version courante, alors que généralement les gens veulent présenter la dernière version. C’est discuté ici :
bitbucket.org/site/master/issue … file-using

Je crois qu’il faut remplacer cette valeur par « master » pour avoir la dernière version, par exemple :

https://bitbucket.org/hlabrand/extensions-i6/src/956c3a73e0a9ca589d4d49439dbb528382f88d1a/French.h?at=master&fileviewer=file-view-default devient :

https://bitbucket.org/hlabrand/extensions-i6/src/master/French.h

Après, je ne suis pas contre utiliser framagit ou gitlab non plus.

Pour la licence des bibliothèques française, vous pouvez utiliser mon travail passé sous la licence qui vous arrange, même si je préfère les Creative Commons parce que c’est plus clair ce que l’on peut faire avec, en tout cas l’Artistic License 2.0 est sans doute adapté pour ces bibliothèques, et ça suit ce qui se fait par ailleurs avec Inform donc ça sera plus cohérent.

Rajouter les diverses conjugaisons ne devrait pas trop surcharger les fichiers zcode, au pire des cas z8 a pas mal d’espace déjà.

Alors on reste sur BitBucket finalement ? Si c’est le cas , il faudra ajouter la bibli I6 au projet et renommer ce dernier.

Oui ça me semble plus simple qu’on reste sur bitbucket, ça permet de garder les dépôts Git et Mercurial au même endroit. Je m’occupe de scinder mon dépôt ‹ extensions-i6 › pour faire le nouveau dépot I6 !

Je dirais même que ça ne changera rien vu la tête de UnknownVerb :stuck_out_tongue:

(Je n’ai pas compris ta remarque sur le nom du fichier, Otto, c’est à cause du lien vers le changelog que j’ai mis dans mon premier post ? En tout cas j’ai appris quelque chose pour /src/master, et j’ai édité mon post :wink: )

Edit de 19h50: c’est fait ! Pour les curieux j’ai juste extrait les patchs et je les ai appliqués à un dépôt vide, comme ici. Reste plus qu’à logguer mes issues et supprimer les fichiers de mon dépôt ! :slight_smile:

non, pas du tout, c’est juste par rapport à :

mais finalement par « archive » c’était peut-être pour parler du zip que l’on peut télécharger lorsqu’on veut télécharger le code du dépôt complet (je fais toujours un checkout alors je n’avais pas remarqué). D’ailleurs c’est le même checksum qui est utilisé. Peut-être qu’ils auraient pu mettre le nom du projet + checksum pour éviter l’ambiguïté.

Je viens aussi de me rappeler l’intérêt d’utiliser mercurial, outre le fait qu’il a une lettre de moins à taper que git, ça permet de faire depuis le même dossier des commit vers bitbucket (avec hg) et vers github (avec git).

Je viens de finir de logguer les anomalies (22 en tout !), avis aux bonnes volontés, sachant que y’en a beaucoup qui sont faciles :wink:

Akien, est-ce que tu veux envoyer un mail à JL, ou un MP ? C’est le dernier qui manque, c’est ça ?

Bien joué Mule pour l’extraction de tes fichiers en préservant l’historique :slight_smile:

Edit : Petits soucis néanmoins dans l’historique :

  1. Tous les commits sont datés du 25 mai 2016, ce qui est un peu dommage vu qu’on perd pas mal d’information
  2. Ton dépôt initial ne contenait apparemment pas l’historique SVN, ce qui est aussi dommage d’un point de vue d’archéologique du développement de la lib :slight_smile:

Si ça te va, je peux voir comment créer un nouveau dépôt git à partir des sources SVN (svn2git marche bien), puis faire un cherry-pick de tous tes commits par dessus en excluant les extensions. Je suis sûr qu’on peut trouver plein d’info sur Internet sur comme faire ça, ça devrait être jouable. Une fois que j’aurais ce dépôt, il pourra remplacer le i6-french actuel.


Si j’ai bien suivi le dépôt i6-french utilise git, et i7-french-language utilise mercurial ? Pas de soucis pour moi de ce côté là, l’interface est au final très similaire pour les commandes basiques (git/hg pull, commit, etc.) si je me souviens bien de mes quelques tests sous mercurial.

Merci de m’avoir rajouté comme admin Otto, c’était bien moi le Akien de bitbucket :wink:

@Mule : À mon avis tu pourrais rajouter tes extensions I6 dans le dépôt si tu veux. Comme tu as créé un projet informfr/i6-french, tu pourrais y ajouter un deuxième dépôt i6-french-extensions ou similaire.

Merci pour le contact de JL, je lui écris. Visiblement tout le monde est partant pour la license Artistic 2.0, donc partons là dessus.

Je viens de lire en diagonale l’Artistic License 2.0. C’est une licence libre classique, tout va bien, mais Dieu que c’est long ! Il y a beaucoup de bureaucratie dans cette licence pour tout ce qui pourrait constituer une oeuvre dérivée, je suis pas sûr qu’on veuille s’encombrer de ça.

Du coup je proposerai de choisir une licence permissive un peu plus simple à lire, genre la MIT. Simple et claire, bien connue.

Otto proposait aussi la Creative Commons Attribution (4.0 j’imagine ?). Pourquoi pas, même si j’ai tendance à l’éviter pour tout ce qui est code source et la réserve pour les oeuvres littéraires, graphiques, musicales, etc. Le texte légal est aussi un peu longuet à mon goût.

Du coup, en appliquant le principe KISS, je vous proposer de choisir la licence MIT. Ca vous irait ? Le copyright complet serait probablement :

Copyright (c) 2001-2016 IFiction-FR community

Edit : Je propose « IFiction-FR community » comme « copyright holder » pour éviter d’avoir à citer tout le monde dans la licence, et reste pérenne pour l’avenir. Bien évidemment les noms de chaque contributeurs figureront toujours dans par exemple un fichier AUTEURS ou AUTHORS, ainsi que dans les headers de chaque fichier .h.

Qu’en pensez-vous ?