
Je contribue régulièrement à différents projets open source, principalement lorsque j’utilise une bibliothèque, que j’identifie une amélioration possible ou qu’un problème technique mérite d’être corrigé ou remonté aux mainteneurs.
Ces contributions peuvent prendre plusieurs formes : ajout de fonctionnalités, amélioration et simplification du code, adaptation aux évolutions de dépendances, suppression d’éléments obsolètes, amélioration de la compatibilité ou encore identification et remontée responsable de vulnérabilités.
L’objectif n’est pas uniquement de corriger un besoin ponctuel, mais aussi de contribuer à améliorer les outils et bibliothèques utilisés par l’ensemble de leur communauté.
Sharp — Support JP2 / JPEG 2000
J’ai contribué au projet Sharp avec l’ajout du support du format JP2 / JPEG 2000.
La contribution ajoutait notamment la gestion de la génération de fichiers et buffers JP2, ainsi que différentes options d’encodage :
- qualité de sortie ;
- compression sans perte ;
- dimensions des tuiles ;
- sous-échantillonnage chromatique ;
- prise en charge des extensions JP2, JPX, J2K et J2C.
L’implémentation nécessitait également une intégration avec libvips et OpenJPEG afin de gérer correctement le format côté traitement d’image.
La proposition a été intégrée au projet via un commit des mainteneurs.
Liens
- Pull Request : https://github.com/lovell/sharp/pull/2868
- Commit d’intégration : https://github.com/lovell/sharp/commit/b7fbffb3f7e4854da2d9629950bd3dbb63e26c45
Fastify OAuth2
J’ai également contribué au plugin OAuth2 de Fastify.
Une première contribution concernait la mise à jour des dépendances et l’ajout d’une configuration permettant l’utilisation de GitLab comme fournisseur OAuth2.
Une autre contribution a ajouté la prise en charge de la révocation des tokens OAuth2, notamment autour du mécanisme défini par la RFC 7009.
Cette évolution comprenait également la gestion de la révocation de plusieurs tokens ainsi qu’un travail de refactor sur certaines parties du code.
Contributions principales
- ajout du provider GitLab ;
- mise à jour de dépendances ;
- ajout de la révocation de tokens OAuth2 ;
- ajout de la révocation de plusieurs tokens ;
- adaptation autour de RFC 7009 ;
- refactor et maintenance du code.
Liens
- https://github.com/fastify/fastify-oauth2/pull/220
- https://github.com/fastify/fastify-oauth2/pull/222
Fastify MongoDB
Ma contribution à Fastify MongoDB concernait principalement la maintenance et l’adaptation du plugin aux évolutions du driver MongoDB.
Le travail a notamment porté sur l’optimisation de certaines parties du code ainsi que sur la suppression d’options MongoDB devenues obsolètes et générant des avertissements avec les versions plus récentes du driver.
Points principaux
- optimisation du code ;
- suppression d’options MongoDB dépréciées ;
- adaptation aux versions récentes du driver ;
- maintenance générale.
Lien
Fastify Caching
Sur Fastify Caching, j’ai contribué à un travail de nettoyage et d’optimisation du code ainsi qu’à la mise à jour des dépendances du projet.
L’objectif était à la fois de simplifier certaines parties du code et de maintenir les dépendances à jour afin de limiter les problèmes de compatibilité et les risques liés à des versions obsolètes.
Points principaux
- nettoyage du code ;
- optimisation des imports et appels ;
- mise à jour des dépendances ;
- maintenance préventive.
Lien
Sécurité et remontée de vulnérabilités
Une partie de mes contributions open source concerne également la sécurité.
Lorsque j’identifie un comportement pouvant représenter une vulnérabilité, je privilégie une remontée responsable auprès des mainteneurs afin que le problème puisse être analysé et corrigé avant ou pendant sa publication.
J’ai notamment remonté une vulnérabilité concernant Fastify Express, publiée ensuite sous la référence GHSA-3wf5-7852-vcfq.
Dans ce contexte, mon intervention concernait l’identification et le signalement de la vulnérabilité, et non le développement du correctif final.
Exemple
Types de contributions
Mes interventions sur des projets open source peuvent donc couvrir différents domaines :
- développement de nouvelles fonctionnalités ;
- ajout de support pour de nouveaux formats ou usages ;
- optimisation et refactor du code ;
- maintenance de dépendances ;
- suppression d’APIs ou options obsolètes ;
- amélioration de la compatibilité ;
- ajout ou évolution d’intégrations ;
- sécurité et remontée responsable de vulnérabilités.
Open Source
Je considère la contribution open source comme une manière de participer à l’amélioration des outils que j’utilise et de partager les améliorations qui peuvent bénéficier à d’autres développeurs.
Ces contributions me permettent également de travailler sur des bases de code, architectures et contraintes différentes de mes projets personnels.