Vous venez de finir votre outil sur lequel vous travaillez depuis 1 semaine/1 mois/1 an/10 ans (rayez la mention inutile) qui va révolutionner votre domaine.
Votre code est versionné, formaté, commenté, documenté, testé, les résultats sont évalués selon le gold standard de la discipline sur des jeux de données représentatifs de la réalité, votre publication est prête, vous allez l'envoyer sur le dépôt de preprint et au journal, le thread Twitter d'annonce est rédigé. Mais là patatras vous vous rendez compte que vous avez oublié de rédiger le Readme qui va accompagner votre code.
Retour aux sources
Le fichier Readme ou Lisez-moi est généralement un fichier qu'on trouve à la racine d'une arborescence de dossiers. Il donne des informations sur ces fichiers, des instructions d’installation, d'utilisation, des informations sur les auteurs, la licence d'utilisation associée au fichier. Si vous traînez dans les FTP de l'EBI ou du NCBI vous devriez voir des Readme qui décrivent le contenu des dossiers.
C'est donc tout naturellement que Github a décidé d'afficher le contenu de ce fichier Readme quand il est présent à la racine d'un dossier et que de nombreuses autres forges logicielles appliquent aussi cette idée. Ce fichier Readme est un peu devenu la page d’accueil de votre projet, il faut donc faire particulièrement attention à son écriture. Dans ce billet, je vais présenter les différentes sections qui me semblent intéressantes d'intégrer dans un Readme pour en faire un bon Lisez-moi.
ATTENTION : L'objectif de cet article n'est absolument pas d'être normatif, vous faites bien ce que vous voulez : ne vous censurez pas à cause de ce billet de blog. Je ne fais que décrire les points que j'aime bien retrouver dans un Readme.
Le titre
Concernant le titre j'ai listé ces différentes grandes méthodes :
- le nom de l’outil ;
- l'explicitation de l’acronyme qui donne le nom de l’outil ;
- le nom de l’outil avec l'explicitation de l’acronyme ;
- le logo de l’outil ;
- le logo de l’outil avec le nom à côté ;
- le logo de l'outil avec le nom de l’outil dans une jolie image.
Je n’ai pas vraiment de recommandations sur quelle méthode choisir globalement, c'est selon votre sensibilité artistique et votre temps. Mais si vous choisissez une des options logo, faites attention à bien mettre un texte alternatif (l'accessibilité c'est important), et à ce que l'image ne soit pas trop surchargée. Également, pensez à demander des avis externes avant de rendre l'image publique pour être sûr qu'elle soit bien lisible et que le message de votre image passe bien. Si vous voulez une touche de couleur sans trop vous embêter vous pouvez utiliser des émojis, 💻 🧬 par exemple.
Pour résumer il vous faut un titre mais n'y passez pas trop de temps si vous n'y tenez pas absolument.
Les badges
Vous avez dû voir ces petits badges informatifs dans les Readme de nombreux dépôts, pour indiquer la licence logicielle, si la version actuelle a passé les tests, le taux de couverture de ces tests, la disponibilité dans différents dépôts logiciel, l’existence d'une documentation, le nombre de fois qu'il a été téléchargé.
Si vous aimez mettre des badges allez‑y, si vous n'en sentez pas la nécessité ne vous forcez pas.
La description
Rajoutez une description pour indiquer l'objectif de votre outil, comment il fonctionne, ce qui le différencie des autres outils similaires, pourquoi vous l'avez créé. Il faut que le lecteur du domaine puisse comprendre rapidement pourquoi vous avez créé cet outil. Si des gens se passent le lien de votre dépôt, ils n'auront pas forcément pris la peine de décrire l’outil correctement.
Ne faites pas trop long non plus, un paragraphe maximum avec éventuellement une image. Vous avez normalement fourni une documentation ou un manuel pour permettre d'aller plus loin. N’hésitez pas à donner le lien vers ces documents d'ailleurs.
L’installation
On arrive sur un gros morceau. Votre procédure d’installation doit être la plus simple possible. Si quelqu'un doit télécharger l'intégralité d'internet, apprendre le polonais et sacrifier une chèvre en récitant de l'araméen pour tester votre outil, même si votre outils permet de convertir un fichier fastq en publication scientifique, il ne le fera jamais.
Tentez de fournir des procédures d’installation utilisant des systèmes de package, deb, rpm, conda, homebrew, et vous pouvez même fournir une image docker. Plus la méthode sera simple mais surtout consensuelle au sein de votre communauté, mieux ce sera.
Si vous considérez, et c'est votre droit, que ce n'est pas votre travail de fournir des paquets, il est important de fournir une liste de toutes les dépendances et de leurs versions (avec un lien, c’est mieux), et la liste des commandes nécessaires à l’installation de l’outil. S’il y a beaucoup de commandes, vous pouvez les cacher dans un script ou un makefile. Je vous recommande tous de même d'indiquer que vous pouvez aider les packageurs à créer des paquets et les inviter à vous contacter.
Par ailleurs, il est toujours plus agréable pour l'utilisateur d'avoir une procédure d’installation qui ne demande pas les droits administrateur et qui ne va pas placer des fichiers partout (ou alors fournissez un script de désinstallation qui fonctionne). Pour être sûr que tous se passe bien, testez votre procédure dans un docker, une VM vierge, voire faites tester par une personne extérieure au projet sur un autre système d'exploitation que le vôtre.
Je vais conclure là-dessus et l'écrire en gras car c'est très important, un outil facile à installer est un outil utilisé donc un outil cité !
L'utilisation
Donnez des exemples de comment utiliser votre logiciel, les entrées, les sorties, les paramètres importants, les valeurs de paramètres recommandées dans différentes situations. Si jamais vous avez créé un tutoriel plus complet pour une première utilisation de votre outil, n'hésitez pas à l'indiquer ici également.
Il faut éviter de rentrer trop dans les détails, on est pas dans un manuel utilisateur, mais si vous en avez un pensez à rajouter un lien.
How to cite
Généralement une section qu'on retrouve à la fin mais qui reste très importante comment citer votre outil. Ici il y a beaucoup de format différent (Mendley, bibitex, zotero), un liens vers la publication est un minimum.
Conclusion
Voici à peu près les sections que je m'attends à trouver dans un Readme, et que je trouve généralement. Bien évidement, on peut varier autour de ces idées, rajouter une section benchmark*, découper la section description en plusieurs sous-parties, rajouter des sections propres à votre domaine ou au langage de programmation, etc.
Pour résumer j'ai envie de dire allez à l'essentiel, demandez-vous quelle information vous voudriez avoir en arrivant sur le projet, demandez des relectures par des personnes extérieures au projet. Cela prend peu de temps† et permet de repérer des oublis ou des erreurs bêtes.
Si jamais votre Readme commence à être un peu long, pensez à rajouter une table des matières au début, c'est simple à faire et cela facilite la vie de tout le monde. Si il commence à être vraiment trop grand, il va falloir songer à créer un manuel utilisateur séparé. Cependant, gardez quand même les informations de description dans votre Readme pour éviter de forcer l'utilisateur à cliquer sur un autre lien.
Je tiens à remercier les relecteurs Jonathan Kitt et Gwenaelle, ainsi que les administrateurs.
- *qui démontrera que votre outil est plus rapide et consomme moins de mémoire que la concurrence
- †si lire votre Readme prend plus de 5 minutes il va falloir élaguer
Laisser un commentaire