{"id":539,"date":"2022-01-25T21:45:11","date_gmt":"2022-01-25T21:45:11","guid":{"rendered":"https:\/\/www.louismarchand.me\/?page_id=539"},"modified":"2022-01-26T17:09:45","modified_gmt":"2022-01-26T17:09:45","slug":"creer-un-projet-libre","status":"publish","type":"page","link":"https:\/\/www.louismarchand.me\/index.php\/creer-un-projet-libre\/","title":{"rendered":"Cr\u00e9er un projet libre"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Lorsque nous avons un projet libre en t\u00eate, il est possible de le d\u00e9marrer. Voici quelques conseils afin de rendre ce projet accessible aux contributeurs et aux utilisateurs potentiels.<\/p>\n<h2>Cr\u00e9er un d\u00e9p\u00f4t libre<\/h2>\n<p>La premi\u00e8re \u00e9tape consiste g\u00e9n\u00e9ralement \u00e0 cr\u00e9er un d\u00e9p\u00f4t (Git ou autre) public et facilement accessible. L&rsquo;utilisation de d\u00e9p\u00f4t personnel (sur son propre serveur) a des avantages, mais cache l&rsquo;existence du projet aux \u00e9ventuels utilisateurs et contributeurs.<\/p>\n<p>Les plateformes les plus utilis\u00e9es pr\u00e9sentement sont Github et Gitlab. Certains projets plus vieux utilisent SourceForge.<\/p>\n<h2>Choisir une licence<\/h2>\n<p>La premi\u00e8re chose \u00e0 faire avant de rendre disponible votre code source, c&rsquo;est de choisir une licence libre pour le projet.<\/p>\n<p>Ce petit <a href=\"https:\/\/choosealicense.com\/\">site<\/a> (en anglais seulement) permet de choisir une licence libre. D\u2019ailleurs, une <a href=\"https:\/\/choosealicense.com\/licenses\/\">page<\/a> de ce site permet d&rsquo;avoir une comparaison d\u00e9taill\u00e9e et simple \u00e0 comprendre de diff\u00e9rentes licences libres. Il est par contre important de comprendre que ce n&rsquo;est qu&rsquo;un minuscule sous-ensemble de toutes les licences libres qui existent. Vous pouvez regarder <a href=\"https:\/\/opensource.org\/licenses\/alphabetical\">ici<\/a> pour voir toutes les licences libres existantes pr\u00e9sentement.<\/p>\n<h2>Garder la branche principale propre<\/h2>\n<p>Lorsque nous sommes administrateur un projet libre, il est toujours possible que quelqu&rsquo;un veuille utiliser, compiler ou effectuer un \u00ab\u00a0fork\u00a0\u00bb du projet. Il est donc n\u00e9cessaire de toujours s&rsquo;assurer d&rsquo;avoir une branche principale (\u00ab\u00a0master\u00a0\u00bb ou \u00ab\u00a0main\u00a0\u00bb) fonctionnelle et stable. Lorsque vous faites des modifications substantielles au projet, assurez-vous de travailler dans une branche \u00e0 part et assurez-vous \u00e9galement de bien tester le projet avant d&rsquo;effectuer la fusion (\u00ab\u00a0merge\u00a0\u00bb).<\/p>\n<h2>Cr\u00e9er un fichier LISEZMOI<\/h2>\n<p>Un fichier lisezmoi (ou README) est un incontournable dans un projet libre. Il indique toutes les informations n\u00e9cessaires pour utilis\u00e9 ou pour participer au d\u00e9veloppement du logiciel. En g\u00e9n\u00e9ral, ce fichier contient: une description du projet, les auteurs, la licence, les proc\u00e9dures de compilation, l&rsquo;information de d\u00e9veloppement (standard, environnement de test, etc.), la m\u00e9canique de report d&rsquo;anomalie (bogue ou ajout de nouvelle fonctionnalit\u00e9), la fa\u00e7on de contacter les d\u00e9veloppeurs, etc.<\/p>\n<p>En g\u00e9n\u00e9ral, on utilise le langage <a href=\"https:\/\/daringfireball.net\/projects\/markdown\/\">Markdown<\/a> pour cr\u00e9er ce fichier.<\/p>\n<h2>Cr\u00e9er un ChangeLog<\/h2>\n<p>Un ChangeLog est important afin de s&rsquo;assurer que les d\u00e9veloppeurs qui participent au d\u00e9veloppement du logiciel puissent savoir ce qui a \u00e9t\u00e9 fait comme d\u00e9veloppement dans les diff\u00e9rentes versions du logiciel. \u00c7a peut leur permettre de bien g\u00e9rer leurs \u00ab\u00a0fork\u00a0\u00bb et \u00e9galement se tenir au courant de la progression du logiciel.<\/p>\n<p>Ce ChangeLog peut \u00e9galement permettre aux utilisateurs du logiciel de savoir s&rsquo;ils doivent absolument mettre \u00e0 jour leur logiciel dans les plus brefs d\u00e9lais (pour des mises \u00e0 jour de s\u00e9curit\u00e9 par exemple), ou bien s&rsquo;ils peuvent attendre que le moment soit opportun pour eux de le faire (pour des ajouts de fonctionnalit\u00e9s par exemple).<\/p>\n<p>Minimalement, un ChangeLog doit contenir les num\u00e9ros de version du logiciel ainsi que les modifications qui ont \u00e9t\u00e9 effectu\u00e9es. Sachez qu&rsquo;il n&rsquo;est pas n\u00e9cessaire d&rsquo;\u00eatre tr\u00e8s pr\u00e9cis. Des informations comme \u00ab\u00a0Correction de plusieurs bogues\u00a0\u00bb ou bien \u00ab\u00a0Ajout de la fonctionnalit\u00e9 X\u00a0\u00bb sont des informations parfaitement valides dans un ChangeLog.<\/p>\n<h2>Utilisez un rapporteur d&rsquo;anomalies (\u00ab\u00a0issue list\u00a0\u00bb)<\/h2>\n<p>Afin que les utilisateurs du logiciel puissent informer les d\u00e9veloppeurs du projet lorsqu&rsquo;ils trouvent des anomalies (bogues) ou lorsqu&rsquo;ils pensent \u00e0 une nouvelle fonctionnalit\u00e9 qui serait int\u00e9ressante dans le logiciel, il est important de cr\u00e9er un rapporteur d&rsquo;anomalies (ou \u00ab\u00a0issue list\u00a0\u00bb).<\/p>\n<p>Un bon rapporteur d&rsquo;anomalie doit \u00eatre enti\u00e8rement public (tous les usagers peuvent cr\u00e9er de nouveaux apports, sans \u00eatre membres du d\u00e9p\u00f4t Git). Il est g\u00e9n\u00e9ralement important d&rsquo;avoir la possibilit\u00e9 de discuter sur les anomalies et les nouvelles fonctionnalit\u00e9s propos\u00e9es afin de savoir ce que la communaut\u00e9 du projet en pense. Certains syst\u00e8mes permettent \u00e9galement d&rsquo;affecter certains d\u00e9veloppeurs aux anomalies ou nouvelles fonctionnalit\u00e9s inscrits dans le rapporteur d&rsquo;anomalies.<\/p>\n<h2>Pr\u00e9voyez un syst\u00e8me de communication officielle pour le d\u00e9veloppement et le soutien<\/h2>\n<p>Afin de s&rsquo;assurer que le rapporteur d&rsquo;anomalies ne se remplisse pas de simples questions, ou de discussion quelconque entourant le logiciel, il peut \u00eatre important de pr\u00e9voir une m\u00e9thode de discussion autre. Par exemple, plusieurs logiciels libres utilisent des listes de courriels (\u00ab\u00a0mailing list\u00a0\u00bb), d&rsquo;autres utilisent des salons Matrix, d&rsquo;autres utilisent des canaux IRC, etc. En g\u00e9n\u00e9ral, des syst\u00e8mes de communication utilisant des standards ouverts sont utilis\u00e9s, puisque plusieurs utilisateurs de logiciels libres ont cette pr\u00e9occupation \u00e0 coeur. Par exemple, si vous d\u00e9cidez que la communication du logiciel se fera avec Facebook, il se peut que plusieurs d\u00e9veloppeurs ne puissent pas participer aux discussions parce qu&rsquo;ils ne voudront pas que leurs informations soient utilis\u00e9es dans un environnement ferm\u00e9 et propri\u00e9taire comme Facebook. Il est donc important de prendre cela en consid\u00e9ration afin de s&rsquo;assurer d&rsquo;avoir un maximum de participation au projet.<\/p>\n<h2>Utilisez des outils d&rsquo;int\u00e9gration continue<\/h2>\n<p>Enfin, une bonne pratique est de cr\u00e9er une suite de tests assez robuste afin et de cr\u00e9er un script d&rsquo;int\u00e9gration continue qui fait qu&rsquo;\u00e0 l&rsquo;instant qu&rsquo;une modification du projet sera envoy\u00e9e (\u00ab\u00a0push\u00a0\u00bb) sur le d\u00e9p\u00f4t Git (ou autre), ce script validera toutes les compilations et les tests du projet. Si une composante ne compile pas ou qu&rsquo;un test ne se d\u00e9roule pas correctement, l&rsquo;outil d&rsquo;int\u00e9gration continue pourra avertir le d\u00e9veloppeur.<\/p>\n<p>Cet outil est tr\u00e8s utile puisqu&rsquo;il permet \u00e0 un d\u00e9veloppeur ayant effectu\u00e9 un \u00ab\u00a0fork\u00a0\u00bb de s&rsquo;assurer que les modifications qu&rsquo;il a faites n&rsquo;a pas bris\u00e9 le logiciel avant d&rsquo;effectuer un \u00ab\u00a0pull\/merge request\u00a0\u00bb. Donc, le d\u00e9veloppeur ayant effectu\u00e9 les modifications sauve du temps et le responsable du d\u00e9p\u00f4t officiel sauve du temps. C&rsquo;est donc gagnant-gagnant pour tout le monde.<\/p>\n<p><a href=\"https:\/\/www.louismarchand.me\/index.php\/projet-dans-un-contexte-de-logiciel-libre\/\">Retour<\/a><\/p>\n<hr \/>\n<p>Auteur: Louis Marchand<br \/>\n<a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/deed.fr\" target=\"_blank\" rel=\"license noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/i.creativecommons.org\/l\/by\/4.0\/80x15.png\" alt=\"Creative Commons License\" \/><\/a><br \/>\nSauf pour les sections sp\u00e9cifi\u00e9es autrement, ce travail est sous licence <a href=\"https:\/\/creativecommons.org\/licenses\/by\/4.0\/deed.fr\" target=\"_blank\" rel=\"license noopener noreferrer\">Creative Commons Attribution 4.0 International<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Lorsque nous avons un projet libre en t\u00eate, il est possible de le d\u00e9marrer. Voici quelques conseils afin de rendre ce projet accessible aux contributeurs et aux utilisateurs potentiels. Cr\u00e9er un d\u00e9p\u00f4t libre La premi\u00e8re \u00e9tape consiste g\u00e9n\u00e9ralement \u00e0 cr\u00e9er un d\u00e9p\u00f4t (Git ou autre) public et facilement accessible. L&rsquo;utilisation de d\u00e9p\u00f4t personnel (sur&hellip; <a class=\"more-link\" href=\"https:\/\/www.louismarchand.me\/index.php\/creer-un-projet-libre\/\">Continue reading <span class=\"screen-reader-text\">Cr\u00e9er un projet libre<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-539","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/539","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/comments?post=539"}],"version-history":[{"count":10,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/539\/revisions"}],"predecessor-version":[{"id":551,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/pages\/539\/revisions\/551"}],"wp:attachment":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/media?parent=539"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}