Skip to main content

Qu’est-ce qui fait le succès de Verdaccio ?

Écrit par
Headshot of Oren Hacohen

Oren Hacohen

2 février 2021

0 minutes de lecture

Bienvenue dans notre entretien consacré à Verdaccio. Aujourd’hui, nous accueillons Juan Picado, le responsable du package npm open source Verdaccio. Nous avons constaté que Verdaccio obtient un score de santé global très élevé sur la page du package Verdaccio de Snyk Advisor, et nous souhaitons examiner cela de plus près.

Page du package verdaccio v4.11.0 sur Snyk Advisor, affichant la commande npm install, des packages similaires et un score de santé du package de 89/100.

Qu’est-ce que Verdaccio ?

En bref, Verdaccio est un registre privé et un proxy légers, sans dépendances et ne nécessitant aucune configuration, conçus avec Node.js. L’application offre un certain niveau de personnalisation et est très simple à configurer. Si vous avez déjà publié un package sur npmjs, vous savez déjà utiliser Verdaccio.

Quels sont les cas d’usage intéressants que vous avez observés pour ce package ?

Le cas d’usage le plus courant consiste à héberger un registre privé, ce qui nécessite peu de ressources pour les petites équipes. Une machine virtuelle de toute petite taille chez n’importe quel fournisseur SaaS suffit à couvrir la plupart des besoins.

Verdaccio est très apprécié dans l’écosystème open source, principalement parce que ces projets n’ont pas besoin de dépendre de services tiers pour tester la publication de packages. Cela leur apporte de la confidentialité et une couche de sécurité supplémentaire, qui évite toute fuite accidentelle vers des registres publics. Par exemple, on peut publier plusieurs packages depuis un monorepo afin de tester l’intégrité de l’installation finale.

Disposer d’un registre est essentiel pour apprendre Node.js, créer des modules et les distribuer, autant d’éléments qui constituent les fondements de Node.js. Quoi de mieux que de permettre à n’importe quel développeur de lancer son propre registre en quelques secondes ? C’est inestimable pour de nombreux développeurs qui débutent leur apprentissage de Node.js.

Pouvez-vous nous parler de votre rôle de responsable du projet Verdaccio ?

En 2016, Verdaccio a été créé à partir d’un fork d’un projet appelé Sinopia. Plusieurs débats ont eu lieu sur la suite à donner au projet. À l’époque, j’utilisais Sinopia et j’avais vraiment besoin d’un registre pour mes propres développements, jusqu’à ce que le projet soit abandonné. J’ai rapidement compris le potentiel de cette idée pour la communauté et, après avoir activement contribué au projet, j’en ai reçu la responsabilité de la part des cofondateurs. À ce moment-là, le projet comptait 200 étoiles et seulement quelques centaines de téléchargements par semaine. Sinopia existait encore, et mon objectif principal était d’intégrer autant de contributeurs que possible. J’y suis parvenu.

Aujourd’hui, je dirige entièrement ce projet sur mon temps libre, avec pour objectif principal d’aider la communauté Node.js à se développer. Verdaccio compte plus de 11 000 étoiles sur GitHub, environ 2 millions de téléchargements d’images Docker et 100 000 téléchargements par mois sur npm. La meilleure façon de soutenir le projet est d’y contribuer, mais vous pouvez aussi faire un don pour soutenir son développement futur via GitHub Sponsors : https://github.com/sponsors/verdaccio.

Nous avons constaté que Verdaccio gagne en popularité, avec plus de 30 432 téléchargements par semaine. Selon vous, qu’est-ce qui a fait le succès du projet ?

Tableau de bord de la popularité montrant une hausse des téléchargements hebdomadaires, d’environ 1,8 k en février 2020 à 5,1 k en février 2021, avec les statistiques du projet ci-dessous.
  • Sa simplicité, sans aucun doute. La prise en main de Verdaccio est très facile : il suffit de saisir npx verdaccio pour lancer un registre.

  • Les utilisateurs savent qu’un registre peut être complexe. Verdaccio simplifie les choses.

  • La popularité de JavaScript et de Node.js joue un rôle important dans ce succès. Il existe un besoin de confidentialité et de sécurité, et Verdaccio offre les deux gratuitement.

  • Docker a sans aucun doute été le meilleur moyen de toucher de nombreux utilisateurs.

Quelles sont vos fonctionnalités préférées de Verdaccio ?

Ma préférée s’appelle uplinks. Cette fonctionnalité offre aux utilisateurs différentes façons de se connecter à d’autres registres. Associée à une autre fonctionnalité, appelée package access, elle permet de choisir, selon un modèle de nom de package, les uplinks qui résoudront une dépendance donnée, voire d’en chaîner plusieurs jusqu’à ce que le package soit résolu. Aucun autre produit ne permet cela à ce jour.

Quelles sont les nouveautés de la dernière version de Verdaccio ?

L’une des dernières nouveautés permet d’afficher les packages obsolètes dans l’interface utilisateur. Il est ainsi facile d’indiquer aux utilisateurs que certains packages ne sont plus maintenus et qu’ils devraient cesser de les utiliser.

Pourquoi les développeurs choisissent-ils Verdaccio ?

Je pense que les développeurs apprécient Verdaccio pour sa confidentialité, sa flexibilité, sa simplicité et sa gratuité. La confidentialité, car vous n’avez pas besoin de partager votre code avec des services tiers ; la flexibilité, car le comportement de l’application peut facilement être modifié ; la simplicité, grâce à sa faible courbe d’apprentissage ; et la gratuité, car le projet est open source et que chacun peut y contribuer pour l’améliorer.

Avez-vous vu des développeurs migrer depuis d’autres projets ?

Ces dernières années, j’ai constaté que des développeurs migraient de Nexus et Artifactory vers Verdaccio. La plupart des développeurs Node.js n’ont pas besoin d’une solution volumineuse pour publier un package. Que vous dirigiez une petite entreprise, travailliez en indépendant, appreniez ou souhaitiez simplement expérimenter, il n’existe rien de plus simple et rapide que Verdaccio sur le marché.

Quels sont, selon vous, les bons indicateurs de la santé du projet Verdaccio ? Nous l’avons identifié comme un projet sain, avec une forte activité de commits et de demandes de pull.

Tableau de bord de maintenance indiquant un état sain, avec la fréquence des commits par mois de février 2020 à janvier 2021 et les statistiques du dépôt.

Cela inspire clairement confiance en matière de sécurité. Tout projet open source dépend d’autres projets et s’inscrit dans une vaste chaîne de dépendances. Leurs problèmes, améliorations ou changements incompatibles finissent par vous concerner. Je mets les dépendances à jour aussi souvent que possible, manuellement ou à l’aide d’outils automatisés. Leurs correctifs de sécurité corrigent également les problèmes éventuels de Verdaccio. Je fais essentiellement de même afin que les projets qui dépendent de Verdaccio bénéficient eux aussi de sa bonne santé. De plus, nous disposons de canaux pour signaler les problèmes de sécurité. Toute personne peut signaler une vulnérabilité, qui sera traitée en priorité par les responsables du projet.

Quel est le plus grand défi à relever aujourd’hui en tant que responsable d’un projet open source ?

Le temps. Pour moi, être développeur open source rémunéré à temps plein relève de l’utopie. Seules quelques personnes y sont parvenues en toute indépendance. Entre un emploi à temps plein, la famille, les loisirs et la vie quotidienne, il reste peu de temps et de disponibilité pour l’open source. Le temps est donc le plus grand défi. Certains jours, on n’a qu’une heure ou moins, et il faut absolument décider des tâches à traiter en priorité. Sans oublier les tâches secondaires comme rédiger des articles de blog, publier sur X et promouvoir le projet lors de conférences ou de rencontres. Il est aussi important de ne pas se mettre la pression concernant le temps : savoir profiter du peu de temps dont on dispose est essentiel.

Verdaccio semble avoir un bon historique de gestion des problèmes de sécurité dans ses versions précédentes. Comment gérez-vous aujourd’hui les risques de sécurité de la branche 4.x ?

Tableau de bord d’audit de sécurité présentant les risques liés aux vulnérabilités et aux licences par version de package, avec deux vulnérabilités indirectes de gravité moyenne mises en évidence pour les versions 4.10.0-4.

Je ne suis pas spécialiste de la sécurité. Je dois donc m’appuyer sur des services tiers ou sur des spécialistes de la sécurité qui me contactent et m’aident à comprendre et à identifier les problèmes potentiels. Dès les débuts, l’équipe Verdaccio a été invitée à participer au programme de sécurité open source de Snyk avec Liran Tal. Depuis, je me suis engagé à prendre davantage de responsabilités dans ce domaine. Le projet a reçu d’excellents conseils sur la gestion des problèmes de sécurité, et j’ai beaucoup appris au passage.

Même avant de participer à ce programme, j’utilisais le service gratuit de Snyk pour les projets open source. Recevoir instantanément des informations sur les correctifs disponibles pour les vulnérabilités, par pull request ou par e-mail, contribue à maintenir le projet en bon état.

Daniel Ruf, membre de l’équipe principale, est spécialiste de la sécurité et vit en Allemagne. Il a rejoint le projet par passion pour la sécurité et l’open source. Depuis le début, son engagement en faveur de la sécurité de Verdaccio est une véritable source d’inspiration.

Les contributeurs jouent également leur rôle. Je suis contacté via la politique de sécurité officielle, le fichier SECURITY.md de la branche master, lorsqu’une vulnérabilité est détectée. En suivant les procédures, un correctif est publié dès que possible. J’ai une seule règle : la sécurité compte, et je la prends au sérieux.

Quels sont vos cinq projets open source préférés ?

  • Yarn 2 (berry) est l’un de mes préférés. Le projet est très bien conçu : code, système de plugins, documentation et communication efficace sur la migration de Classic à Berry. Ce nouveau concept va transformer de nombreux aspects de l’écosystème Node.js.

  • Babel.js : je ne pourrais pas imaginer développer sans lui. J’aime l’associer à TypeScript, ce qui me permet de profiter des toutes dernières fonctionnalités JavaScript.

  • pnpm : le développement futur de Verdaccio repose déjà sur pnpm, et j’apprécie l’approche du projet : facile à configurer, compatible avec les monorepos, rapide et répondant à tous mes besoins. Sans oublier qu’il économise de l’espace disque, ce qui est essentiel pour moi.

  • Pino.js : sans aucun doute le meilleur logger Node.js disponible actuellement. Il est rapide, bien documenté et bénéficie d’une communauté dynamique.

  • Jest : j’utilise Jest dans tous les projets sur lesquels je travaille professionnellement. C’est sans conteste le runner de tests le plus complet, bien entretenu et doté rapidement de nouvelles fonctionnalités.

Quel est votre meilleur conseil pour commencer à contribuer à un projet open source ?

  • Il faut y prendre plaisir : c’est le seul ingrédient indispensable pour contribuer à l’open source. Pour moi, c’est un loisir qui me permet d’apprendre, de sortir de ma zone de confort et d’aider de nombreux développeurs à apprendre et à apprécier Node.js.

  • N’ayez pas peur ! Les responsables de projets ne sont pas des dieux tout-puissants qui savent tout sur tous les sujets. Ce sont des êtres humains : ils font des erreurs et apprennent eux aussi. Commencer modestement est un bon moyen de se lancer dans l’open source. Avec le temps, vous comprendrez bien le projet, prendrez davantage de responsabilités et deviendrez responsable à votre tour, si c’est ce que vous souhaitez.

Lire la suite

feature insights context
Blog

Les attaques autonomes sont déjà là. La défense doit suivre leur rythme.

Les attaquants autonomes réduisent la fenêtre de défense. Découvrez comment la découverte, la correction, la validation et la prévention continues peuvent aider les équipes de sécurité à suivre le rythme.

feature insights context
Blog

La prévention est-elle essentiellement un problème résolu ?

La prévention dans le code généré par les agents est résolue sur le plan architectural, mais le défi reste de choisir des contrôles qui protègent la sécurité sans ralentir le développement.

Live Stream

Les agents de remédiation démystifiés : pourquoi corriger vaut mieux que détecter

Découvrez comment l’agent de remédiation de Snyk utilise les renseignements de sécurité, l’analyse de la cassabilité et la validation pour transformer les vulnérabilités en pull requests prêtes à être fusionnées.