J’ai remarqué que de nombreux développeurs hésitaient à faire leur première contribution open-source. C’est peut-être ton cas ? C’est plus facile que ça en a l’air. Comme pour beaucoup de choses l’étape la plus difficile est d’enclencher la machine. Une fois la première contribution accomplie, puis les deux ou trois suivantes ça devient plus simple. Mon conseil par conséquent est de choisir une première tâche relativement aisée afin de lancer la dynamique.

A travers mon expérience personnelle, expérience de développeur non expert en open-source, je vais te présenter des exemples de contributions que j’ai effectuées ces derniers mois. Tu trouveras avec ces exemples un lien vers les Pull Requests afin que tu puisses regarder en détail les changements que j’ai proposés.

📝 Améliore la Documentation

Photo by [Patrick Tomasso](https://unsplash.com/@impatrickt?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)

Photo by Patrick Tomasso on Unsplash

Le premier type de contribution qui me semble accessible pour les débutants, c’est la documentation. Les développeurs ont parfois tendance à délaisser les tâches de documentation. Et pourtant c’est important pour la réussite de tout projet open-source. Si les utilisateurs ne trouvent pas de l’aide quand ils rencontrent des problèmes ils risquent d’arrêter d’utiliser l’outil.

Récemment je me suis aperçu que la documentation de l’image Docker officielle de Golang pouvait être amendée. J’utilise principalement cette image pour faire de l’intégration continue avec des projets en Go. Il se trouve que les exemples donnés dans la documentation utilisaient le tag d’une image relativement ancienne. J’ai donc mis à jour ces exemples pour qu’ils utilisent la dernière version disponible. Si tu souhaites en savoir plus, consulte la PR sur GitHub.

🇫🇷 Traduit en Français

Photo by [Nicola Nuttall](https://unsplash.com/@nicnut?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)

Photo by Nicola Nuttall on Unsplash

Un autre besoin sur beaucoup de projets est l’internationalisation. En effet la plupart des projets sont d’abord implémenté avec une interface en anglais. Afin de favoriser une adoption plus large il est courant de vouloir adapter cette interface à d’autres langues.

Comme je le disais dans le paragraphe précédent j’utilise beaucoup Jenkins au quotidien pour effectuer de l’intégration continue. En préparant l’article sur le déploiement d’un serveur Jenkins sur AWS, je me suis aperçu que certaines parties de l’interface de Jenkins étaient en français et d’autres non. Je me suis donc mis au travail et j’ai proposé plusieurs PRs : ici, ou encore ici.

Il y a un peu plus longtemps j’ai découvert le projet Moment JS. La manipulation de dates est l’un de ces défis que nous devons tous relever à un moment donné de notre carrière de développeur, et l’utilisation du bon outil permet de dompter cette bête sauvage ! La bibliothèque Moment JS est ainsi l’outil de référence pour les développements JavaScript.

Depuis que je l’ai découvert, je l’utilise régulièrement pour simplifier la validation, l’analyse et la manipulation des dates côté client. Une myriade de langues étaient déjà supportées mais il manquait le support du Breton. J’ai donc rajouté ce support avec cette PR, puis corrigé un certain nombre de bugs avec cette autre PR.

🔬 Ajoute des Tests

Photo by [Nicolas Thomas](https://unsplash.com/@nicolasthomas?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)

Photo by Nicolas Thomas on Unsplash

Enfin la dernière catégorie de missions faciles à accomplir concerne les tests. Personnellement je teste systématiquement mes développements. Soit en mode TDD, en écrivant d’abord les tests puis le code de production. Parfois j’avoue que j’écris mes tests après.

Sur les projets open-source il est parfois possible de trouver des portions de code qui ne sont pas testées. Concevoir des tests pour ces portions te permet alors de mettre un pied dans le projet. C’est ce que j’ai fait sur le projet Prometheus par exemple avec cette PR. J’aurais souhaité en profiter pour contribuer un peu plus sur ce projet, projet que j’utilise constamment, mais pour l’instant je n’ai pas trouvé le temps de le faire.

🤝 Un projet que tu utilises

Tu as peut-être remarqué une tendance parmi les exemples que je t’ai présentés, il s’agit à chaque fois d’outils que j’utilise au quotidien. Il est en effet plus facile je trouve de contribuer à des projets dont on est utilisateur. Je t’encourage donc à regarder d’abord les projets que tu utilises toi et à rechercher des choses à améliorer ou à corriger. D’une part il te sera plus facile de tester tes modifications car tu connais déjà l’interface ou les commandes. D’autre part cela est un juste retour des choses, si tu profites d’un projet libre il est légitime que tu finances cette utilisation par une contribution.

🔎 Identifie des tâches pour débutant

Enfin je voulais te parler d’une manière de trouver facilement des tâches pour débutant sur GitHub. J’ai découvert cette astuce lors d’un événement local organisé dans le cadre du Hacktoberfest. Il est courant d’attribuer le tag “Good First Issue” aux tâches accessibles aux débutants. Par exemple en ouvrant cette page https://github.com/issues?q=label%3A%22good+first+issue%22+is%3Aopen tu peux consulter toutes les tâches ouvertes. 
Si tu connais déjà le projet qui t’intéresse tu peux aussi rajouter “contribute” dans l’url. Par exemple en ouvrant la page https://github.com/vuejs/vue/contribute tu vois toutes les tâches du projet VueJS.

Pour en savoir plus je t’invite à consulter cette page du blog GitHub : https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/

J’espère que cet article t’a plu et qu’il t’a motivé à faire ta première contribution. N’hésite pas à me laisser un commentaire ou une question, directement en bas de cet article ou en m’envoyant un message sur LinkedIn.


Merci à Vincent qui nous a présenté à Genesys il y a quelques semaines son expérience de contributeur. Merci à Antoine pour sa question ce jour là qui a en partie inspirée cet article.
Merci également à Cyrille avec qui j’ai discuté récemment de mon souhait de contribuer à des projets en Go et dont certains conseils se retrouvent dans cet article.
Photo de couverture par Yancy Min.
Cet article a initialement été publié sur Medium.