Comment gérer des projets de logiciels à code source ouvert

introduction

Lorsque vous gérez un référentiel de logiciels open-source, vous assumez un rôle de leader. Que vous soyez le fondateur d’un projet qui l’a rendu public pour utilisation et contributions, ou que vous travailliez en équipe et que vous mainteniez un aspect spécifique du projet, vous allez fournir un service important au grand public. communauté de développeurs.

Alors que lescontributions through pull requests open-source de la communauté des développeurs sont essentiels pour garantir que le logiciel est aussi utile qu'il peut l'être pour les utilisateurs finaux, les mainteneurs ont un impact réel sur l'élaboration du projet global. Les responsables de référentiels sont extrêmement impliqués dans les projets open source qu’ils gèrent, depuis l’organisation et le développement quotidiens jusqu’à l’interface avec le public et en fournissant un retour rapide et efficace aux contributeurs.

Ce guide vous guidera à travers quelques astuces pour la maintenance de référentiels publics de logiciels open source. En tant que leader d'un projet open source, vous devez assumer des responsabilités techniques et non techniques afin de favoriser la création d'une base d'utilisateurs et d'une communauté autour de votre projet. Prendre le rôle de mainteneur est une opportunité d'apprendre des autres, d'acquérir de l'expérience en gestion de projet et de voir votre projet se développer et évoluer à mesure que vos utilisateurs deviennent des contributeurs investis.

Écrire une documentation utile

Une documentation complète, bien organisée et destinée aux communautés visées par votre projet contribuera à élargir votre base d'utilisateurs. Au fil du temps, votre base d'utilisateurs deviendra les contributeurs de votre projet open source.

De toute façon, étant donné que vous réfléchissez au code que vous créez et que vous rédigez peut-être des notes, il peut être intéressant d’incorporer de la documentation dans votre processus de développement alors qu’elle est fraîche dans votre esprit. Vous pouvez même envisager de rédiger la documentation avant le code, en suivant la philosophie d’une approche de développement basée sur la documentation, qui documente d’abord les fonctionnalités et les développe après avoir écrit ce qu’elles feront.

Outre votre code, vous souhaiterez conserver quelques fichiers de documentation dans votre répertoire de niveau supérieur:

  • FichierREADME.md qui fournit un résumé du projet et de vos objectifs.

  • FichierCONTRIBUTING.md avec instructions de contribution.

  • Licence pour votre logiciel, ce qui peut encourager plus de contributions. Read more about choosing an open-source license here.

La documentation peut prendre de nombreuses formes et s'adresser à différents publics. Dans le cadre de votre documentation et en fonction de l’ampleur de votre travail, vous pouvez décider d’effectuer une ou plusieurs des tâches suivantes:

  • Ungeneral guide pour présenter le projet aux utilisateurs

  • Tutorials pour guider les gens à travers différents cas d'utilisation

  • FAQs pour répondre aux questions fréquemment posées que les utilisateurs peuvent avoir

  • Troubleshooting guides pour aider les utilisateurs à résoudre les problèmes

  • UnAPI reference to fournit aux utilisateurs un moyen rapide de rechercher des informations sur l'API

  • Release notes avec des bogues connus pour permettre aux utilisateurs de savoir à quoi s'attendre dans chaque version

  • Planned features pour suivre et expliquer ce qui va se passer dans le futur

  • Video walkthroughs pour offrir aux utilisateurs une approche multimédia de votre logiciel

Votre projet est peut-être mieux adapté à certains types de documentation que d’autres, mais proposer plusieurs approches du logiciel aidera votre base d’utilisateurs à mieux comprendre comment interagir avec votre travail.

Lorsque vous écrivez de la documentation ou enregistrez de la voix pour une vidéo, il est important d’être aussi clair que possible. Il est préférable de ne pas présumer de la capacité technique de votre public. Vous voudrez également aborder votre documentation de haut en bas, c'est-à-dire expliquer ce que fait votre logiciel de manière générale (par exemple, automatiser les tâches du serveur, créer un site Web, animer des sprites pour le développement de jeux), avant d'entrer dans les détails.

Bien que l’anglais soit devenu une langue universelle dans le domaine de la technologie, vous voudrez toujours déterminer qui sont vos utilisateurs et comment les atteindre. L’anglais est peut-être le meilleur choix pour avoir accès à une large base d’utilisateurs, mais vous voudrez bien garder à l’esprit que de nombreuses personnes abordent votre documentation en tant que anglophone non natif. Par conséquent, veillez à privilégier une langue simple qui ne vous confondra pas. vos lecteurs ou spectateurs.

Essayez de rédiger une documentation comme si vous écriviez à un collaborateur qui doit être mis au courant du projet en cours. après tout, vous voudrez encourager les contributeurs potentiels à faire des demandes de tirage au projet.

Organiser les problèmes

LesIssues sont généralement un moyen de suivre ou de rapporter des bogues, ou de demander l'ajout de nouvelles fonctionnalités à la base de code. Les services d'hébergement de référentiels open-source tels que GitHub, GitLab et Bitbucket vous fourniront une interface pour vous-même et pour d'autres, afin de suivre les problèmes au sein de votre référentiel. Lorsque vous publiez du code source ouvert au public, vous devez vous attendre à ce que des problèmes soient résolus par la communauté des utilisateurs. L'organisation et la hiérarchisation des problèmes vous donneront une bonne feuille de route des travaux à venir sur votre projet.

Parce que tout utilisateur peut signaler un problème, tous les problèmes ne rapporteront pas des bogues ou ne seront pas des demandes de fonctionnalités; vous pouvez recevoir des questions via l'outil de suivi des problèmes ou des demandes d'améliorations plus petites de l'interface utilisateur, par exemple. Il est préférable d'organiser ces problèmes autant que possible et de communiquer avec les utilisateurs qui les créent.

Les problèmes doivent représenter des tâches concrètes sur le code source et vous devez les hiérarchiser en conséquence. Votre équipe et vous-même aurez une idée du temps et de l’énergie que vous ou les contributeurs pouvez consacrer aux problèmes résolus. Ensemble, vous pouvez travailler en collaboration pour prendre des décisions et créer un plan d’action. Lorsque vous savez que vous ne pourrez pas traiter un problème particulier dans un délai rapide, vous pouvez toujours faire un commentaire sur le problème pour informer l'utilisateur que vous avez lu le problème et que vous y arriverez quand vous le pourrez, et si vous le pouvez, vous pouvez fournir un calendrier prévisionnel pour le moment où vous pourrez réexaminer le problème.

Pour les problèmes qui sont des demandes de fonctionnalités ou des améliorations, vous pouvez demander à la personne qui a soumis le problème si elle est capable de contribuer elle-même du code. Vous pouvez les diriger vers le fichierCONTRIBUTORS.md et toute autre documentation pertinente.

Étant donné que les questions ne représentent souvent pas des tâches concrètes, il peut être judicieux de commenter le problème et de le diriger avec courtoisie vers la documentation pertinente. Si la documentation relative à cette question n’existe pas, il est temps d’ajouter la documentation correspondante et de remercier l’utilisateur d’avoir identifié cet oubli. Si vous rencontrez beaucoup de questions via des problèmes, vous pouvez envisager de créer une section FAQ de votre documentation, un wiki ou un forum afin que d'autres personnes puissent participer à la réponse à la question.

Chaque fois qu'un utilisateur signale un problème, essayez d'être aussi gentil et courtois que possible. Les problèmes sont des indicateurs que les utilisateurs aiment votre logiciel et veulent le rendre meilleur!

Travailler pour organiser les problèmes du mieux que vous pouvez permettra de garder votre projet à jour et pertinent pour sa communauté d'utilisateurs. Supprimez les problèmes en dehors de la portée de votre projet ou devenez obsolètes et attribuez une priorité aux autres afin que vous puissiez progresser continuellement.

Rendre la contribution enrichissante

Plus vous accueillez les contributeurs à votre projet et récompensez leurs efforts, plus vous aurez de chances d’encourager davantage de contributions. Pour que les gens commencent, vous voudrez inclure un fichierCONTRIBUTING.md dans le niveau supérieur de votre référentiel, et un pointeur vers ce fichier dans votre fichierREADME.md.

Un bon dossier sur la contribution expliquera comment commencer à travailler sur le projet en tant que développeur. Vous pouvez proposer un guide étape par étape ou une liste de contrôle à suivre par les développeurs, expliquant comment réussir la fusion de leur code dans le projet via une demande d'extraction.

Outre la documentation sur la manière de contribuer au projet, n’oubliez pas de garder le code cohérent et lisible tout au long. Un code facile à comprendre au moyen de commentaires et une utilisation claire et cohérente contribueront grandement à donner aux contributeurs le sentiment de pouvoir participer au projet.

Enfin, maintenez une liste de contributeurs ou d’auteurs. Vous pouvez inviter les contributeurs à s’ajouter à la liste, quelle que soit leur contribution (même la correction de fautes de frappe a de la valeur et peut générer plus de contributions à l’avenir). Cela fournit un moyen de reconnaître les contributeurs pour leur travail sur le projet d'une manière accessible au public, tout en sensibilisant les autres à la qualité de leur traitement.

Construisez votre communauté

En responsabilisant les utilisateurs grâce à la documentation, en prenant en compte les problèmes et en les encourageant à participer, vous êtes déjà sur la bonne voie pour développer la communauté autour de votre projet open source. Les utilisateurs que vous gardez heureux et que vous traitez en tant que collaborateurs vont à leur tour promouvoir votre logiciel.

De plus, vous pouvez travailler à la promotion de votre projet par différentes voies:

  • Blogging

  • Publication de vidéos de présentation ou de procédures pas à pas

  • Maintenir une liste de diffusion

  • Être actif sur les canaux de médias sociaux

  • Collaboration avec des projets similaires ou connexes et promotion croisée de ceux-ci

Vous voudrez adapter votre promotion à la portée de votre projet et au nombre de membres de l'équipe et de contributeurs actifs travaillant avec vous.

Au fur et à mesure que votre communauté grandit, vous pouvez fournir davantage d'espaces pour que les contributeurs, les utilisateurs et les responsables de maintenance puissent interagir. Certaines options que vous pourriez envisager comprennent:

  • Wikis pouvant fournir une documentation maintenue au niveau de la communauté

  • Forums pour discuter des fonctionnalités possibles et répondre aux questions

  • Un serveur de liste pour l'engagement de la communauté par courrier électronique

Tenez compte de votre base d'utilisateurs de base et de la portée de votre projet - y compris le nombre de personnes qui maintiennent le projet et les ressources dont vous disposez - avant de déployer ces espaces potentiels, et demandez à votre communauté des commentaires sur ce qui fonctionne pour eux.

Avant tout, il est important d’être gentil et de montrer un peu d’amour dans toutes vos interactions avec votre communauté. Être un responsable aimable n’est pas toujours facile, mais votre projet sera rentable en bout de ligne.

Conclusion

Les mainteneurs de référentiels sont extrêmement importants au sein de la plus grande communauté open source. Bien que cela nécessite un investissement important et un travail ardu, c'est souvent une expérience enrichissante qui vous permet de vous développer en tant que développeur et contributeur. Être un responsable accessible et gentil peut faire beaucoup pour faire avancer le développement d'un projet qui vous tient à cœur.