Apporter sa contribution aux projets open source semble être une épreuve insurmontable. Eh bien, détrompez-vous ! Ça n’a jamais été aussi facile d’aider la communauté à produire des logiciels open source.

Pourquoi contribuer aux projets des autres ?

C’est une excellente question ! La réponse va vous étonner 😉

Qu’êtes-vous en train de faire ce soir ? Regarder un film, défiler le fil Twitter, lire cet article ? Pourquoi n’êtes-vous pas en train de contribuer en ce moment ?!
On a tous nos propres raisons de ne pas sortir l’ordinateur le midi ou le soir : pas le temps, pas la tête à ça, la famille avant tout, autre chose à faire… bref, on manque de temps !

C’est pour ça que la communauté est puissante et qu’il est essentiel de s’appuyer dessus !! Quand vous souhaitez faire autre chose de vos journées/soirées, la communauté est toujours présente quelque part dans le monde pour contribuer sur des projets.
Et puis, si vous deviez écrire tous les programmes que vous utilisez au quotidien, ils seraient tous en version draft plutôt qu’activement utilisés, le niveau de qualité de code ne serait pas le même, le déploiement des programmes ne serait pas planétaires, ni même multilingues ou la documentation ne serait pas developper-friendly; Bref autant de sujets qu’il faut traiter seul et qui confirme notre manque cruel de temps.

C’est pour toutes ces raisons que la communauté open source est essentielle dans le développement des logiciels.

Tout seul, on va plus vite. Ensemble, on va plus loin.

C’est difficile de contribuer aux projets open source

Qui a dit ça ?!

Film “Full Metal Jacket”, 1987

Si vous démarrez, n’essayez pas d’améliorer les outils connus du marché : Python, Pipenv, Kubernetes, ou Ansible par exemple.
Ces projets sont trop complexes pour une première contribution, vous ne savez même pas par où commencer.

On distingue cependant plusieurs grandes familles de projets, applicables à chacun d’entre nous d’un point de vue subjectif :

  • Les projets de grande ampleur : ce sont les projets massivement utilisés et extrêmement complexes. Exemples : Kubernetes, Python, Java, containerd, node, gradle, …
  • Les projets abordables : ce sont les projets balbutiants ou dont la communauté est assez “limitée” (pour le moment). Exemple : pilotage des appareils connectés (ampoules, thermostat, alarme, etc), outils de développement en émergence (ansible-gendoc, ansible-graph, helmfile, hadolint, etc)
  • Les projets personnels : ce sont les petits projets souvent initiés par des particuliers dans leur propre interêt mais parfois de bons candidats au grand public : wrapper des APIs de vente (LeBonCoin, Vinted, Amazon, etc), des bypass de securité (auto-captcha, ddos-resolver, etc).

Pour commencer, préférez des petits projets qui sont abordables à vos yeux. Programmes parfois créés par des personnes près de chez vous.

Une petite contribution n’est jamais si petite qu’elle prétend l’être. Contribuer, c’est aider l’autre. On a tous besoin d’aide, donner de son temps pour améliorer le code d’un projet open source est une aubaine pour son auteur.

Les contributions à la portée de tous

Contribution par l’exemple

Prenez un projet à votre portée. Pour l’exemple, je choisis un projet qui a vu le jour il y a quelques semaines : claranet/ansible-gendoc. Le projet me semble intéressant, utile et productif pour des équipes projets qui aiment la documentation de qualité.

Démarrage : J’ai pris 10 minutes de mon temps pour tester le projet.

Résultat : impossible de faire fonctionner l’utilitaire…

Sentiment : frustration, mais tout de meme curieux !

Les raisons :

  • Erreur de typographie dans la documentation générale
    • Cette erreur est facile à trouver, j’ai juste eu à suivre la documentation à la lettre.
  • Problème de dépendance dans l’installation de l’utilitaire
    • Il manque un module python, clairement affiché au moment de l’exécution, juste en suivant la doc

On voit qu’en moins de 10 minutes, j’ai trouvé 2 erreurs que les développeurs ont “zappées” lors de sa publication. Comme j’ai pris le temps de tester leur outil, j’ai également pris le temps de créer des bugs (appelés “issue” sur GitHub) et des demandes de modifications (appelées “Pull Request”) sur le repository :

Sans trop d’effort, j’ai aidé ce projet à améliorer leur documentation et à mettre le doigt sur un problème de dépendance. Rien d’extraordinaire en soi. Mais sans cette prise de recul, le projet n’est pas fonctionnel en l’état. Et rien de plus démotivant qu’un code qui ne compile pas ou ne se lance pas.

Et hop !! Une petite victoire ! Facile non ?!

D’autant plus que l’auteur a été réactif dans la résolution des problèmes soulevés.

Les contributions plus ambitieuses

Si les petites contributions sont déjà largement à votre portée, passez un cran au-dessus avec des projets plus complexes en vous impliquant davantage dans le projet.

L’implication vient naturellement dès que vous vous embarquez sur des projets de plus grande envergure : trafic plus important, exigence élevée, niveau de code exigent, processus de validation plus long, application plus complexe à prendre en main, etc.

Pour trouver de tels projets, inspirez-vous de votre quotidien : au travail ou chez vous.

Personnellement, je me suis plongé dedans quand j’ai voulu automatiser le pilotage de ma chaudière. J’ai cherché un moyen de le faire, j’ai trouvé un projet intéressant, prometteur et fonctionnel : https://github.com/ekeih/libtado.

En creusant, j’ai remarqué qu’il manquait quelques fonctionnalités qui m’intéressaient. C’est à partir de ce moment que l’implication est venue. Le projet m’a permis de découvrir des technos et des pratiques différentes de mon métier.
J’ai continué de contribuer à ce projet, jusqu’au jour où le propriétaire m’a proposé de prendre le relai en tant que Lead sur le projet.

Et me voici Maintainer du projet libtado :

De contributions en contributions, j’ai pu améliorer le projet et lui donner une autre dimension dans la jungle des projets open source.

Statistiques de téléchargements du projet sur PyPi
Statistiques des visites du projet sur ReadTheDocs

Conclusion

Contribuer aux projets open source n’est pas si compliqué que ça en a l’air. Il faut chercher un peu, mais on trouve forcément son cheval de bataille. Reste à choisir si vous souhaitez contribuer ponctuellement ou pérennement aux projets. La vie de la communauté open source est chouette, on fait de belles rencontres et on aide les autres, quoi de mieux ?!

Pour aller plus loin

Tous les ans à lieu le Hacktoberfest sur tout le mois d’octobre. L’inscription est gratuite et les contributions sont maintenant valables sur GIthub et Gitlab, Cloud ou on-premise. Les types de contributions sont également plus ouvertes avec la msie en avant du low-code et no-code.

Je vous laisse découvrir la session de cette année 2022 : https://hacktoberfest.com
Les inscriptions ouvrent à partir du 26 Septembre.

Le site du Hacktoberfest met à disposition quelques liens très utiles, enrichis par nos soins :

Enjoy your Hacktoberfest !