URL: https://linuxfr.org/users/bluebird/journaux/comment-github-a-ressuscite-mon-logiciel-libre Title: Comment Github a ressuscité mon logiciel libre Authors: Philippe F Date: 2016年03月07日T16:09:32+01:00 License: CC By-SA Tags: github, centralisation, gitlab et projet Score: 76 On parle régulièrement de Github en négatif ces derniers temps: ça centralise tout, ça capture les données, ça bouffe les autres plate-formes d'hébergement de projets libres avec en plus quelques soupçons de misogynie et sexisme en interne. En gros, Github, ce serait **pas bien ©** (et je pèse mes mots!). Je partage ici ma petite expérience. Pour les plus pressés, vous pouvez sauter directement aux trois derniers paragraphes. J'ai créé en 2004 une bibliothèque de test unitaires pour le langage [Lua](http://www.lua.org/) : [LuaUnit](https://github.com/bluebird75/luaunit). C'était pour exécuter des tests de non-régression sur le clone de Vim qu'on développait, qui était scriptable en Lua. Il n'y avait pas rien de tel de disponible dans l'écosystème Lua à l'époque, du coup, j'étais tout frétillant d'apporter une vraie pierre ~~à la cathédrale~~ au bazar. Manque de chance, un autre type a fait pratiquement le même logiciel et l'a sorti [au même moment que le mien](http://lua-users.org/lists/lua-l/2004-08/msg00314.html) ! Mais c'est pas très grave, il y a de la place pour tout le monde. Le projet était assez modeste mais fonctionnait correctement pour ce qu'il devait faire. Je l'ai hébergé sur le site de mon ami qui sert à publier nos diverses contributions ( www.freehackers.org ) et sur [luaforge](http://luaforge.net/about/migration/), qui voulait devenir le sourceforge du langage Lua. J'ai eu des retours d'utilisateurs, et quelques micro-patchs utiles. On m'a même proposé de m'associer à l'écriture du framework de test pour _the Kepler project_, un système complet de packaging pour Lua mais j'ai pas pris le temps de m'investir là-dedans, LuaUnit restait pour moi un mini-projet passe-temps. Ensuite, le temps a passé, notre clone de Vim est mort, le suivant que j'ai refait dans mon coin n'est jamais né, j'ai fait encore d'autres bouts de logiciels libre à droite à gauche, je me suis mis en couple, j'ai pris de galon dans la vie professionnelle et j'ai complètement laissé tombé LuaUnit. Grace à LuaForge, je recevais quand même de temps en temps des mails d'utilisateurs me demandant d'ajouter des fonctionnalités que j'ignorais faute de temps et de motivation. J'ai intégré un patch pour le portage vers Lua 5.1 parce que le 5.0 commençait à se faire vieux, et j'en ai profité pour faire une petite migration CVS vers Mercurial mais c'est tout. En 2007, un quidam m'a demandé s'il pouvait forker et sortir une v2 avec des fonctionnalités que j'avais pas. J'ai accepté à condition qu'il change le nom. Son fork n'ai jamais apparu dans la nature, mon attitude l'a peut-être refroidi... Après, encore plus de temps a passé. LuaForge a cessé d'être maintenu, et de 2009 à 2012, plus personne ne s'est intéressé au projet. Il mourrait tranquillement comme des milliers d'autres logiciels libres. Ça me serrait le cœur, d'autant plus que j'avais encore un ou deux patch datant de 2008 à intégrer, mais vraiment, j'avais pas le temps avec maintenant un enfant, une vie de famille, beaucoup de boulot, etc etc. En 2011, un type a carrément importé mon projet sous GitHub, créé son fork et sorti une v2. Tout ça sans même m'envoyer un mail de politesse. J'ai laissé faire mais j'ai pas trop aimé: il y avait maintenant un LuaUnit v2 qui n'était plus le mien. C'est bien que quelqu'un fasse vivre ce logiciel, mais LuaUnit, c'était normalement mon bébé. Grrrr. Et puis est arrivé l'année 2012 avec plusieurs évènements: Luaforge a fermé ses portes et migré tous les dépots vers GitHub. Puis j'ai reçu une contribution pour ajouter une sortie des tests au format TAP, pour de l'intégration sous Jenkins. Faire le lien entre un vieux projet à l'agonie et un truc aussi moderne et hype que Jenkins m'a bien plus. Côté temps libre, tous mes projets libres étaient à l'abandon depuis longtemps et j'étais frustré de ne plus rien faire. J'avais besoin d'un petit projet auquel je pourrai consacrer quelques heures par mois, mais qui serait quand même utile. LuaUnit était le candidat idéal: stable, petit mais suscitant de l'intérêt, avec un potentiel d'utiliser des trucs hype. Je suis allé voir où en était [le fork v2 sous GitHub](https://github.com/rjpcomputing/luaunit): il était plutôt à l'arrêt. Bien, ça veut dire qu'il y avait de la place pour faire de nouveau avancer LuaUnit sans se marcher sur les pieds. J'ai donc pris une grande décision cet été 2012: je ferai revivre LuaUnit, sous GitHub ! J'allais en faire un projet de haute qualité: bien documenté, bien testé, moderne (voire même hype avec Jenkins) et dynamique. J'enterrerai de honte le salaud qui a osé forké mon projet sous Github avec un projet plus mieux que le sien. Ce serait la revanche de mon ego de développeur libre! J'ai quitté à regret mercurial (snif), puis la plate-forme d'hébergement de mon ami (snif) et j'ai tout migré sous Github. J'ai integré le patch pour Jenkins et sorti une version dare-dare. Ensuite, j'ai repris le développement de LuaUnit. C'était un vieux coucou, il avait bien besoin d'un coup de lifting: beaucoup plus de tests, simplification du code, correction de bugs à gauche à droite. J'en ai profité pour rendre facile l'ajout d'un nouveau format de sortie. Et là, j'ai commencé à bénéficié de l'effet GitHub. Automne 2012, on m'a ouvert un bug; printemps 2013, deux contributeurs, l'un pour des correctifs à droite à gauche et un packaging dans Debian, l'autre pour une autre fonctionnalité majeure (toute proportion gardée pour logiciel de 5000 lignes): une sortie en XML. Sur mon hébergement précédent, il y avait moyen de reporter des bugs officiellement (avec un Redmine) et de m'envoyer des patchs en tirant partie de Mercurial. Mais rien de cela n'est arrivé en 3 ans. Alors qu'en 8 mois sur Github, j'ai obtenu des bugs et patchs de très bonne qualité, à jour, facile à intégrer. L'effet GitHub a continué, depuis 2012, j'ai eu 25 Pull Requests, toutes intéressantes et 17 bugs ou demandes de fonctionnalités. J'ai 3 développeurs engagés qui répondent aux bugs ouverts, suivent ce que je fais et proposent des améliorations. Ça m'a bien remotivé pour continuer à faire vivre LuaUnit. En plus des contributions pures, Github donne accès à un écosystème pratique: la mise en place de [l'intégration continue pour Linux sous Travis CI](https://travis-ci.org/bluebird75/luaunit) m'a pris quelques heures. A peine plus longtemps pour la même chose [sous Windows avec AppVeyor](https://ci.appveyor.com/project/bluebird75/luaunit). Côté doc, j'ai utilisé [readthedocs](http://luaunit.readthedocs.org/en/latest/) pour rendre la doc facilement accessible. Maintenant, j'ai 3 beaux badges qui montrent que mon projet est en intégration continue. Prochaine étape, un badge pour la couverture de code et je serai au top de l'intégration continue. En conclusion, Github, pour mon projet et moi, ça a fait beaucoup de bien: des contributeurs, des reports de bugs, des développeurs engagés, des services pour améliorer la qualité de mon projet et une motivation regonflée à bloc. L'effet est bien due à la place proéminente de Github et à la centralisation des projets sur ce réseau social, les principes mêmes qui sont dénoncés comme des problèmes du service Github. L'écosystème autour de Github est d'une bonne qualité en rend des services inestimables. Je trouve ces points sous-estimés dans les « Gitlab fait pareil » . Sous Gitlab, LuaUnit serait encore ce qu'il était il y a 3 ans: un projet agonisant.

AltStyle によって変換されたページ (->オリジナル) /