Contributions Open Source

Contributions régulières à différents projets open source autour de l’ajout de fonctionnalités, de la maintenance, de l’optimisation, de la compatibilité et de la sécurité.

Cover Open Source
JavascriptNode.jsFastifyOAuth 2.0MongoDBSharpGitGitHub

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

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

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.

Contributions Open Source - Joris Dugué