{"id":3747,"date":"2017-10-16T15:54:36","date_gmt":"2017-10-16T19:54:36","guid":{"rendered":"http:\/\/bioinfo.iric.ca\/?p=3747"},"modified":"2017-10-20T13:23:27","modified_gmt":"2017-10-20T17:23:27","slug":"laissez-le-errer-liberer-votre-code","status":"publish","type":"post","link":"https:\/\/bioinfo.iric.ca\/fr\/laissez-le-errer-liberer-votre-code\/","title":{"rendered":"Laissez-le errer&#8230; Lib\u00e9rer votre code !"},"content":{"rendered":"<p>Aujourd&rsquo;hui, j&rsquo;ai pens\u00e9 faire quelque chose de l\u00e9g\u00e8rement diff\u00e9rent et discuter un peu sur les attentes que l&rsquo;on peut avoir \u00e0 rendre son code public.<br \/>\nJe me suis dit qu&rsquo;il serait int\u00e9ressant d&rsquo;interviewer un membre de notre groupe qui poss\u00e8de une solide exp\u00e9rience dans ce type d&rsquo;activit\u00e9, Tariq Daouda, afin de tirer profit de ses exp\u00e9riences pass\u00e9es.<\/p>\n<p>Alors, sans plus attendre, on se jette \u00e0 l&rsquo;eau !<\/p>\n<p><strong>JP<\/strong>:<br \/>\nBonjour Tariq, je suis bien content que tu aies accept\u00e9 cette invitation. Je pensais te poser quelques questions en rapport avec ce qui peut se produire lorsque l&rsquo;on d\u00e9cide de rendre de son code (une librairie, un plugin ou peu importe) public. Ceci dans l&rsquo;espoir que nos lecteurs acqui\u00e8rent une meilleure compr\u00e9hension des enjeux soulev\u00e9s par cette activit\u00e9.<br \/>\n<strong>T<\/strong>:<br \/>\n\u00c7a me fait plaisir d&rsquo;\u00eatre ici et de partager mon exp\u00e9rience !<\/p>\n<p><strong>JP<\/strong>:<br \/>\nSuper, nous nous concentrerons sur trois de tes projets, disponible publiquement depuis ton <a href=\"https:\/\/github.com\/tariqdaouda\">d\u00e9p\u00f4t GitHub<\/a>. Notamment: <a href=\"https:\/\/github.com\/tariqdaouda\/pyGeno\">pyGeno<\/a>, <a href=\"https:\/\/github.com\/tariqdaouda\/Mariana\">Mariana<\/a> et <a href=\"https:\/\/github.com\/tariqdaouda\/pyArango\">pyArango<\/a>. Puisque les trois librairies s&rsquo;adressent \u00e0 des auditoires diff\u00e9rents, nous devrions pouvoir faire abstractions des pr\u00e9occupations sp\u00e9cifiques \u00e0 un auditoire donn\u00e9.<br \/>\nQuelle \u00e9tait ta motivation principale \u00e0 partager ta premi\u00e8re librairie ?<br \/>\n<strong>T<\/strong>:<br \/>\nHmmm.. C&rsquo;est une bonne question&#8230;<br \/>\nJe crois, et ceci se rattache \u00e0 pyGeno sp\u00e9cifiquement, que je savais d&#8217;embl\u00e9e que je d\u00e9sirais \u00e9crire une publication scientifique autour de cette librairie. Et puisqu&rsquo;un des pr\u00e9-requis \u00e0 une publication de ce type est le partage de la ressource dans le domaine public, je me suis dit que je serais aussi bien de m&rsquo;acquitter de cette t\u00e2che tout de suite. J&rsquo;avouerai que je voulais aussi m&rsquo;assurer que ma librairie soit \u00e0 la hauteur de mes attentes en terme de simplicit\u00e9 d&rsquo;utilisation, alors obtenir un peu de r\u00e9troaction de la part d&rsquo;autres usagers faisait d\u00e9finitivement partie de mes motivations. Finalement, il m&rsquo;apparaissait pertinent que d&rsquo;autres fassent usage de ma librairie dans un contexte diff\u00e9rent de celui dans lequel je l&rsquo;utilisais, moi. De cette fa\u00e7on, je trouverais peut-\u00eatre quelques anicroches dans le code qui, autrement, seraient pass\u00e9es inaper\u00e7ues !<\/p>\n<p><strong>JP<\/strong>:<br \/>\nBien s\u00fbr ! Car on sait tous ce qui se produit quand on met notre code dans les mains de quelqu&rsquo;un d&rsquo;autre&#8230; S&rsquo;il y a un d\u00e9faut quelque part, il est instantan\u00e9ment d\u00e9couvert!<br \/>\nDonc un m\u00e9lange de r\u00e9troaction et de d\u00e9buggage&#8230; Int\u00e9ressant !<br \/>\nParlons popularit\u00e9, GitHub offre deux m\u00e9triques qui permettent de juger de la popularit\u00e9 d&rsquo;un projet: les \u00e9toiles et les \u00ab\u00a0fourches\u00a0\u00bb (<em>forks<\/em>). Laquelle pr\u00e9f\u00e8res-tu et pourquoi ?<br \/>\n<strong>T<\/strong>:<br \/>\nJ&rsquo;aime vraiment les \u00e9toiles ! Mais bon, j&rsquo;aime aussi les <em>forks<\/em>&#8230; Tant qu&rsquo;ils donnent lieu \u00e0 des <em>pull requests<\/em>.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nOuais, car sur GitHub, la seule fa\u00e7on de soumettre des modifications au code d&rsquo;un \u00ab\u00a0d\u00e9p\u00f4t\u00a0\u00bb (<em>repository<\/em>) pour un usager qui n&rsquo;a pas acc\u00e8s au d\u00e9p\u00f4t original est de fourcher le projet, modifier la fourche et ensuite l&rsquo;utiliser pour g\u00e9n\u00e9rer un <em>pull request<\/em>.<br \/>\n<strong>T<\/strong>:<br \/>\nExactement. J&rsquo;aime vraiment recevoir des <em>pull requests<\/em> ! \u00c9tonnamment, Mariana n&rsquo;a pas g\u00e9n\u00e9r\u00e9 beacoup de <em>pull requests<\/em>.. J&rsquo;en ai re\u00e7u plus pour pyGeno et pyArango. Je suspecte que la nature des usagers impacte grandement leur relation aux librairies. Par exemple: j&rsquo;ai re\u00e7u bon nombre de PRs pour pyArango de la part de membres de l&rsquo;\u00e9quipe de d\u00e9veloppement d&rsquo;<a href=\"https:\/\/www.arangodb.com\/\">ArangoDB<\/a>.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nHa ! J&rsquo;imagine qu&rsquo;ils voient ta librairie d&rsquo;un tr\u00e8s bon oeil \ud83d\ude42<br \/>\n<strong>T<\/strong>:<br \/>\nN&rsquo;est-ce pas ?! \ud83d\ude42<br \/>\nMais pour ceux qui ne font que fourcher mes projets, je crois que plusieurs finissent par oublier l&rsquo;existence du projet&#8230; C&rsquo;est pour \u00e7a que je pr\u00e9f\u00e8re les \u00e9toiles.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nEt dirais-tu que tu as per\u00e7u une forme d&rsquo;appropriation de ton code par les usagers ?<br \/>\n<strong>T<\/strong>:<br \/>\nD\u00e9finitivement ! J&rsquo;ai re\u00e7u bon nombre de requ\u00eates d&rsquo;ajout de fonctionnalit\u00e9s, certains usagers ont corrig\u00e9 des coquilles dans la documentation de pyGeno et d&rsquo;autres ont mis \u00e0 jour pyArango afin qu&rsquo;il supporte la nouvelle version de l&rsquo;API d&rsquo;ArangoDB. Mais le meilleur exemple d&rsquo;appropriation que j&rsquo;ai vu a \u00e9t\u00e9 la mise en place des proc\u00e9dures d&rsquo;Integration Continue (<em>Continuous Integration<\/em>) pour Mariana et pyArango. Des gens ont pris le temps n\u00e9cessaire pour en faire la mise en place et ont ensuite soumis un PR.. Ce niveau d&rsquo;implication m&rsquo;a vraiment surpris !<\/p>\n<p><strong>JP<\/strong>:<br \/>\nIncroyable, alors le code s&rsquo;est bel et bien mis \u00e0 vivre par lui-m\u00eame.. Sous ta supervison, bien s\u00fbr!<br \/>\nOn peut donc affirmer que l&rsquo;exp\u00e9rience GitHub a bien livr\u00e9 des avantages probants.<br \/>\nD&rsquo;accord, attaquons-nous maintenant \u00e0 un sujet \u00e9pineux: le choix d&rsquo;une licence. Voil\u00e0 certainement un aspect avec lequel la plupart d&rsquo;entre nous sommes moins confortables mais qui a tout de m\u00eame des impacts important sur l&rsquo;utilisabilit\u00e9 du code. Quelle licence as-tu choisie et pourquoi ?<br \/>\n<strong>T<\/strong>:<br \/>\nBon point. J&rsquo;ai choisi la licence <a href=\"https:\/\/www.apache.org\/licenses\/LICENSE-2.0\">Apache version 2.0<\/a> plut\u00f4t que les licences plus courantes telles que <a href=\"https:\/\/www.gnu.org\/licenses\/licenses.en.html\">GPLs<\/a> ou <a href=\"https:\/\/opensource.org\/licenses\/MIT\">MIT<\/a>. J&rsquo;ai sp\u00e9cifiquement choisi cette licence car elle pr\u00e9voit une attribution expresse des droits de brevet des contributeurs aux utilisateurs. De plus, c&rsquo;est une licence tr\u00e8s utilis\u00e9e dans le monde des <em>startups<\/em> et des compagnies informatiques telles qu&rsquo;ArangoDB, alors \u00e7a me semblait un choix appropri\u00e9.<br \/>\n<strong>JP<\/strong>:<br \/>\nInt\u00e9ressant !<br \/>\n<strong>T<\/strong>:<br \/>\nJe sugg\u00e9rerais aux gens int\u00e9ress\u00e9s \u00e0 lib\u00e9rer du code de visiter le site <a href=\"https:\/\/choosealicense.com\/\">Choose a licence<\/a>, il est simple, bien fait et tr\u00e8s utile.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nVoil\u00e0 une excellente recommandation. Je suis s\u00fbr qu&rsquo;elle sera appr\u00e9ci\u00e9e de nos lecteurs.<br \/>\nOn entend souvent parler de l&rsquo;impact de l&rsquo;anonymit\u00e9 que le web conf\u00e8re. Notamment, que certaines personnes se sentent parfois confortables \u00e0 tenir des propos qu&rsquo;ils ne tiendraient pas autrement. As-tu d\u00e9j\u00e0 \u00e9t\u00e9 la cible d&rsquo;hostilit\u00e9s en relation avec les librairies que tu as choisies de partager ?<br \/>\n<strong>T<\/strong>:<br \/>\nMalheureusement, oui.<br \/>\nJ&rsquo;ai re\u00e7u des commentaires durs \u00e0 quelques reprises. Certains d&rsquo;entre eux avaient parfois leurs fondements (quoique le ton soit tout de m\u00eame d\u00e9plac\u00e9) mais une fois, alors que je r\u00e9pondais \u00e0 une question d&rsquo;un usager sur le site StackOverflow en lui sugg\u00e9rant de regarder l&rsquo;un de mes projets plus modeste comme solution potentielle \u00e0 son probl\u00e8me, un usager anonyme est apparu de nulle part et s&rsquo;est mis \u00e0 vraiment descendre ma librairie, sans raison apparente ! Il semble que ses commentaires aient vraiment \u00e9t\u00e9 d\u00e9plac\u00e9s et d&rsquo;un go\u00fbt douteux car ils ont plus tard \u00e9t\u00e9 retir\u00e9s par un mod\u00e9rateur de StackOverflow..<br \/>\nMais pour \u00eatre franc, les commentaires positifs que j&rsquo;ai re\u00e7us l&#8217;emportent largement sur les n\u00e9gatifs. J&rsquo;ai re\u00e7u bon nombre de commentaires tr\u00e8s positifs et encourageants. Et, sans grande surpise, les gens positifs et encourageants se pr\u00e9sentent rarement sous le couvert de comptes anonymes.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nParlons quelque peu de l&rsquo;aspect de la maintenance de tes librairies.<br \/>\nUn probl\u00e8me r\u00e9current avec les librairies d\u00e9velopp\u00e9es par des individus est leur manque de maintenance. Certaines librairies tombent parfois bien en retard des mises \u00e0 jour de leurs d\u00e9pendances et deviennent donc carr\u00e9ment inutilisables. Te consid\u00e8res-tu actif au niveau de la maintenance et combien de temps consacres-tu \u00e0 ces t\u00e2ches ?<br \/>\n<strong>T<\/strong>:<br \/>\nJe suis d\u00e9finitivement actif sur ce front quoique l&rsquo;ajout de fonctionnalit\u00e9s est parfois laiss\u00e9 de c\u00f4t\u00e9. Je tente de corriger les bugs et autres probl\u00e8mes s\u00e9rieux rapidement mais l&rsquo;ajout de fonctionnalit\u00e9s peut \u00eatre fastidieux et chronophage alors si je n&rsquo;ai pas de besoin clair pour la fonctionnalit\u00e9, je n&rsquo;ai parfois pas de temps \u00e0 y consacrer.<br \/>\nDans ce sens, je crois qu&rsquo;il est important pour les d\u00e9veloppeurs de mettre en place des mesures qui att\u00e9nuent la charge de travail li\u00e9e \u00e0 la publication de nouvelles versions d&rsquo;une librairie. Je ne serai pas le premier \u00e0 affirmer qu&rsquo;un bon ensemble de tests est un incontournable. Mais le fait d&rsquo;avoir une bonne batterie de tests permet aussi l&rsquo;usage de services de type \u00ab\u00a0Integration Continue\u00a0\u00bb (CI). Les services CI sont une des mesures qui m&rsquo;ont bien servi par le pass\u00e9 en identifiant des bugs que j&rsquo;avais laiss\u00e9 passer et puisqu&rsquo;ils roulent par eux-m\u00eame sans que l&rsquo;on doive prendre le temps de les lancer, ils sauvent pas mal de temps tout en procurant une bonne dose de tranquilit\u00e9 d&rsquo;esprit. Et on a tous besoin de tranquilit\u00e9 d&rsquo;esprit !<\/p>\n<p><strong>JP<\/strong>:<br \/>\nLe fait de rendre son code public en l&rsquo;exposant sur son d\u00e9p\u00f4t GitHub n&rsquo;assure en rien que les gens commenceront \u00e0 l&rsquo;utiliser. Ils doivent d&rsquo;abord apprendre que le code existe&#8230; Parle-nous un peu de tes efforts de \u00ab\u00a0publicit\u00e9\u00a0\u00bb.<br \/>\n<strong>T<\/strong>:<br \/>\nLa publicit\u00e9, c&rsquo;est difficile !<br \/>\nJe crois que \u00e7a d\u00e9pend de ton public cible. J&rsquo;ai essay\u00e9 avec Twitter au d\u00e9but, mais \u00e7a n&rsquo;a pas tr\u00e8s bien march\u00e9&#8230; Je crois qu&rsquo;il faut d&rsquo;abord avoir une solide base de<em> followers<\/em> pour que les gazouillis aient vraiment un bon impact. Les meilleurs r\u00e9sultats ont \u00e9t\u00e9 obtenus en publiant des billets sur des sites comme\u00a0<a href=\"https:\/\/www.biostars.org\/\">Biostars<\/a> pour pyGeno et <a href=\"https:\/\/news.ycombinator.com\/news\">HackerNews<\/a> pour Mariana quoique je suspecte que ces strat\u00e9gies livrent tout de m\u00eame des r\u00e9sultats stochastiques. J&rsquo;ai aussi donn\u00e9 quelques pr\u00e9sentations dans des conf\u00e9rences mais bien que tu t&rsquo;adresses directement \u00e0 ton public cible, le nombre de participants est parfois limit\u00e9. Un truc important \u00e0 retenir cependant, c&rsquo;est qu&rsquo;il faut s&rsquo;attendre \u00e0 recevoir beaucoup de contacts directs. Attendez-vous \u00e0 ce que beacoup de gens vous \u00e9crivent \u00e0 votre bo\u00eete de courriel personelle.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nBien not\u00e9. Et comment mesures-tu l&rsquo;impact de ces activit\u00e9s promotionelles ?<br \/>\n<strong>T<\/strong>:<br \/>\nEh bien, GitHub fournit des statistiques sur les visiteurs et l&rsquo;activit\u00e9 de ses d\u00e9p\u00f4ts. On peut consulter le nombre de vues, de vues uniques, de clones et de clones par machine unique. Alors c&rsquo;est vraiment \u00e7a que je regarde.<\/p>\n<p><strong>JP<\/strong>:<br \/>\nTr\u00e8s bien ! Merci beaucoup pour toutes ces informations, Tariq.<br \/>\nEn cl\u00f4ture de l&rsquo;entrevue, aurais-tu un dernier brin de sagesse \u00e0 offrir aux d\u00e9veloppeurs qui songent \u00e0 lib\u00e9rer leur code dans le domaine public ?<br \/>\n<strong>T<\/strong>:<br \/>\nOui: <strong>Les tests sont vos meilleurs alli\u00e9s!!<\/strong>.<br \/>\n<strong>JP<\/strong>:<br \/>\nAlors tu pr\u00e9coniserais donc les tests plut\u00f4t qu&rsquo;une bonne documentation, par exemple?<br \/>\n<strong>T<\/strong>:<br \/>\nDefinitivement !<br \/>\nLa documentation c&rsquo;est assez facile \u00e0 faire, mais si tu distribues du code qui marche pas.. Les gens te le laisseront savoir, crois-moi !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aujourd&rsquo;hui, j&rsquo;ai pens\u00e9 faire quelque chose de l\u00e9g\u00e8rement diff\u00e9rent et discuter un peu sur les attentes que l&rsquo;on peut avoir \u00e0 rendre son code public. Je me suis dit qu&rsquo;il serait int\u00e9ressant d&rsquo;interviewer un membre de notre groupe qui poss\u00e8de une solide exp\u00e9rience dans ce type d&rsquo;activit\u00e9, Tariq Daouda, afin de tirer profit de ses exp\u00e9riences pass\u00e9es. Alors, sans plus attendre, on se jette \u00e0 l&rsquo;eau ! JP: Bonjour Tariq, je suis bien content que tu aies accept\u00e9 cette invitation. <a href=\"https:\/\/bioinfo.iric.ca\/fr\/laissez-le-errer-liberer-votre-code\/\"> [&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[160],"tags":[163,164],"class_list":["post-3747","post","type-post","status-publish","format-standard","hentry","category-informatique-fr","tag-github","tag-licences-publiques"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/3747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/comments?post=3747"}],"version-history":[{"count":6,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/3747\/revisions"}],"predecessor-version":[{"id":3757,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/posts\/3747\/revisions\/3757"}],"wp:attachment":[{"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/media?parent=3747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/categories?post=3747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bioinfo.iric.ca\/fr\/wp-json\/wp\/v2\/tags?post=3747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}