J’utilise des projets open-source depuis longtemps, mais je n’ai jamais réellement contribué à un projet existant. J’ai bien créé quelques tickets voire corrigé un ou deux bugs mineurs ou une erreur dans une documentation mais je n’ai jamais cherché à m’investir.

Puis, en 2024, j’ai finalement trouvé un projet qui m’a donné envie de participer. Ce projet s’appelle Astro ! Un an après, je partage avec vous mon parcours et quelques pistes si vous souhaitez également vous lancer.

Qu’est-ce qu’une contribution ?

Avant de m’aventurer plus loin, je pense qu’il est important de définir ce que j’entends par contribution. Pour beaucoup, participer à un projet open-source est synonyme de code. Certes, coder est une compétence recherchée et applicable à tous les projets mais il existe d’autres manières de contribuer.

De mon point de vue, tout acte qui aide à faire évoluer un projet peut être perçu comme une contribution :

  • Vous rencontrez un bug ? Créez un ticket détaillé avec une reproduction minimale pour qu’il puisse être corrigé et qu’il n’arrive pas à d’autres personnes !
  • Vous savez comment corriger un bug ? N’hésitez pas à créer une « pull request » (ou « merge request » suivant la plate-forme) !
  • Vous êtes plus à l’aise avec les mots ? Pensez à regarder ce qui peut être fait du côté de la documentation !
  • Vous êtes à l’aise en anglais et dans une autre langue ? N’hésitez pas à regarder si vous pouvez aider à traduire la documentation !
  • Vous n’êtes pas assez à l’aise en anglais pour traduire ? Vous pouvez toujours relire les traductions proposées dans votre langue et approuver ou proposer des améliorations !
  • Vous avez toujours apprécié recevoir des réponses à vos demandes d’aide ? Vous pouvez faire la même chose en fournissant un support technique aux autres utilisateur !

Vous avez compris l’idée ; il existe différentes formes de contribution. Toutes sortes de compétences peuvent être utiles.

Mon parcours en tant que contributeur pour Astro

Il y a un an, je me décide à tester Astro. Je rencontre un problème mais ne trouve pas l’information dans la documentation. Plutôt que d’ouvrir un ticket dans le dépôt principal d’Astro, je cherche si un problème similaire a déjà été remonté. Il s’avère que oui et qu’il ne s’agit pas d’un bug. Puisqu’il semble que je ne sois pas le seul à rencontrer ce problème, je me dis que la documentation devrait le préciser.

Ouverture de tickets

Je crée ainsi mon premier ticket dans le dépôt docs d’Astro. Ce ticket n’a pas reçu de réponse tout de suite, mais ça ne m’a pas empêché de continuer dans ma lancée en créant d’autres tickets dans les autres dépôts quand je rencontrais un problème qui ressemblait à un bug.

Ce n’est pas toujours évident au début de savoir dans quel dépôt il convient de faire remonter le problème. Il est possible de le faire dans le dépôt principal… mais je préfère quand je poste au bon endroit du premier coup. Ces tickets m’ont permis de me familiariser avec différents dépôts du projet : le cœur, la documentation, le compilateur et les outils dédiés aux éditeurs.

J’ai été surpris par l’accueil ; c’est plutôt rare qu’on me remercie pour avoir créé un ticket ! En soi, ce n’est pas important. Du moment que le problème est corrigé, c’est tout ce qui compte. Ceci dit, je reconnais que ce genre d’accueil fait une différence, surtout lorsque l’on n’est pas sûr si c’est un bug ou le fonctionnement attendu.

Suivis de « pull requests »

J’ai ensuite saisi l’opportunité d’un ticket étiqueté « Good first issue » (comprendre : les nouveaux venus sont bienvenus) pour faire ma première PR dans le dépôt principal d’Astro ! Il s’agissait de convertir un plugin Remark en plugin Rehype.

En juin, mon premier ticket — lié à la documentation — était sur le point d’être résolu, il ne manquait plus qu’une PR. Je m’en suis chargé.

Mes différentes interactions avec l’équipe et les contributeurs d’Astro m’ont donné envie de continuer à contribuer. J’ai donc regardé ce qui pouvait être dans mes cordes.

Implication dans Astro Docs

Puisque j’étais en train d’apprendre à utiliser Astro, j’ai décidé de m’attarder dans le dépôt docs d’Astro.

Traduction en français

La documentation n’était pas encore complètement traduite en français. Je me suis donc dit que participer à la traduction était un bon moyen pour me familiariser avec tous les concepts !

J’ai commencé à mettre à jour des traductions et à traduire des pages manquantes. J’ai également participé à la relecture des traductions proposées par d’autres contributeurs.

Participer à la traduction m’a fait découvrir un nouvel outil : Lunaria. Si vous maintenez une documentation multilingue, je vous recommande d’y jeter un œil !

Relecture de la documentation en anglais

J’étais curieux de voir le processus pour construire la documentation dans son ensemble. Dans le même temps, la version 5 d’Astro faisait son apparition en tant que bêta. Je me suis donc mis à m’intéresser aux autres PR et tickets, en anglais cette fois.

J’étais certes moins à l’aise pour juger de la formulation en anglais, mais j’ai pu me rendre utile en corrigeant d’éventuelles coquilles ou problèmes de formattage.

Diverses améliorations dans la documentation

Pendant la traduction, il m’arrivait de noter quelques fautes de frappe ou problèmes de formattage dans la version originale ; c’était une bonne occasion pour mettre un pied dans la documentation anglaise en les corrigeant.

Je me suis ensuite attaqué à la page de référence de l’API d’Astro pour apporter un peu plus de consistence, ajouter des informations manquantes et corriger d’éventuelles erreurs. Cela m’a donné l’occasion d’échanger avec un autre membre de l’équipe.

Lorsque la v5 était encore en bêta, j’ai finalement testé le tutoriel d’Astro ! Un peu tard… mais il n’était pas question d’apprendre ici. Je souhaitais aider à vérifier que tout fonctionnait correctement et apporter des modifications là où c’était nécessaire. Je dois dire qu’il reprend bien les concepts nécessaires pour débuter rapidement avec Astro !

Participation à l’événement « Talking & Doc’ing »

Chaque jeudi, ou presque, un événement « Talking & Doc’ing » est organisé sur le serveur Discord d’Astro. L’idée autour de cet événement est d’échanger sur la meilleure manière de traiter certains tickets, sur les modifications à apporter à une PR en cours, sur les changements au niveau de l’organisation de la documentation, etc. Puisque je m’intéressais au processus pour créer la documentation, j’ai finalement décidé d’y assister.

Depuis, je continue d’y assister. Je dis bien « assister » plutôt que « participer » parce que je dois admettre que je suis plutôt passif. Pour commencer, je n’aime pas trop parler même en français (ce qui peut contraster avec mes écrits). Ensuite, autant je peux écrire en anglais, autant je ne suis pas particulièrement à l’aise pour parler en anglais. Ainsi, je laisse ma webcam (pour le micro) rangée et j’interviens uniquement par écrit. Je dois l’admettre, ce n’est pas pratique d’autant plus quand il s’agit de discuter d’une PR créé par soi-même… Peut-être qu’un jour je me déciderai à intervenir oralement.

Un peu de support technique

Il m’arrivait de répondre aux questions au sujet d’Astro sur StackOverFlow. Puis, quand j’ai commencé à traduire la documentation d’Astro, j’ai rejoint Discord pour pouvoir me coordonner avec les autres traducteurs et ainsi éviter de proposer une traduction en double exemplaire. J’ai alors commencé à intervenir occasionnellement dans la rubrique support.

À côté de ça, j’essaie d’aider dans le tri des tickets du dépôt docs et de temps en temps, ceux du dépôt principal. Si je vois une problème qui a été déjà abordée, c’est l’occasion de proposer une solution ou de renvoyer vers un ticket couvrant déjà ce cas de figure.

Des contributions amenant des surprises

En décembre 2024, Astro 5 devient finalement stable. Un billet de blog accompagne sa sortie officielle. Je connaissais déjà les différents changements apportés, mais je le lis tout de même avec attention. Surprise en bas de page : je vois mon nom apparaître dans les remerciements !

Puis, en ce début d’année, je reçois un message privé sur Discord venant du co-fondateur d’Astro. Il me propose d’intégrer l’équipe de mainteneurs d’Astro. Je ne m’y attendais pas. J’ai certes été plutôt actif depuis juin, mais je ne pensais pas qu’on me ferait suffisamment confiance pour ce rôle et aussi vite. J’ai bien sûr accepté cette opportunité et je remercie encore l’équipe pour cette confiance !

L’intégration de nouveaux mainteneurs dans le projet est basé sur un système de nomination et de votes. Il ne s’agit pas de volontariat ou de candidature. Ce qui explique pourquoi je fus surpris.

En fin de compte

Je ne vais pas vous le cacher, oui, j’ai trouvé ça un peu intimidant. Pour commencer, je suis plutôt du genre introverti et je ne suis pas particulièrement à l’aise pour communiquer en anglais. Ensuite, n’étant pas habitué à participer à des projets open-source, je me demandais si je faisais bien d’intervenir un peu partout — et notamment dans les PR de l’équipe d’Astro — ou si j’en faisais trop…

Ceci dit, je ne regrette pas de m’être lancé et de m’être impliqué dans ce projet. Je dois dire que l’accueil au sein de la communauté d’Astro y est pour beaucoup. Je ne doute pas qu’il existe d’autres projets accueillants, mais, je ne sais pas, il y a un petit truc en plus. Donc, je suis content d’être tombé sur ce projet et d’en faire parti !

Pour le moment, je compte rester côté documentation même si je la connais plutôt bien maintenant. Il y a toujours des choses à faire, et je peux m’exercer à la rédaction technique en anglais. Non, maintenir la doc ce n’est pas simplement corriger des fautes de frappe. D’ailleurs, elle a même le droit à son propre site de documentation !

Vous souhaitez participer ?

L’architecture du projet Astro

Astro dispose de plusieurs dépôts, voici les principaux :

  • withastro/astro qui correspond au cœur du projet,
  • withastro/compiler qui est utilisé derrière la scène pour transformer les templates,
  • withastro/language-tools qui se concentre sur les outils nécessaires aux éditeurs pour comprendre la syntaxe Astro,
  • withastro/starlight qui contient les sources de l’outil dédié à la création de sites de documentation,
  • withastro/docs qui contient la documentation d’Astro (et ses traductions).
  • roadmap qui permet de proposer des idées — et d’échanger autour de ces idées — afin de développer les fonctionnalités d’Astro.

Toutes sortes de compétences peuvent être utiles

Qui dit plusieurs dépôts, dit également des compétences diverses. Par exemple, si vous êtes plutôt développeur Go, le compilateur d’Astro peut vous intéresser tandis que pour le cœur du projet, il vous faudra connaître Typescript. Si vous êtes plutôt doué avec les mots, n’hésitez à rejoindre l’équipe Docs !

Vous pouvez également contribuer sans avoir beaucoup de temps à consacrer. Vous pouvez par exemple aider au tri des tickets, à la vérification du code ou à la relecture de la documentation. Si vous êtes sur Discord, vous pouvez également aider à résoudre les demandes d’aide. Même occasionnellement, ce type de contribution est toujours la bienvenue !

Vous ne vous retrouvez dans aucune description ? Ma liste n’est pas exhaustive, n’hésitez pas à vérifier par vous-même s’il y a un endroit où vous pouvez apporter votre contribution ! Et, rappelez-vous, vous n’avez pas besoin de vous engager à plein temps, même occasionnelle, une contribution est toujours la bienvenue.

Avant de commencer

Si vous avez encore une hésitation, je vous invite à lire la page Contribuer à Astro dans la documentation. Ensuite, sachez que chacun de ces dépôts contient un fichier CONTRIBUTING.md. Je vous recommande de le lire avant de vous lancer.

Que ce soit pour les tickets, les RFC ou encore les PR, chaque dépôt dispose de modèles à remplir. Ces derniers ne sont pas là pour vous embêter mais pour faire gagner du temps aux personnes qui essaieront de vous aider (que ce soit à résoudre votre problème, à relire votre contribution, etc.). Il s’agit donc d’un système gagnant-gagnant.

Enfin, n’hésitez pas à rejoindre le serveur Discord d’Astro. Y être présent est utile pour se coordonner si besoin, mais cela peut également vous permettre de trouver de l’aide ou de demander des conseils.