¿Qué hace que Verdaccio sea un proyecto exitoso?
Oren Hacohen
2 de febrero de 2021
0 minutos de lecturaTe damos la bienvenida a nuestro espacio dedicado a Verdaccio. Hoy nos acompaña Juan Picado, responsable del mantenimiento del agente de correo electrónico de código abierto paquete npm Verdaccio. Observamos que Verdaccio obtiene una puntuación muy alta en cuanto al estado general del paquete en la página del paquete Verdaccio de Snyk Advisor, y queremos analizar los detalles.

¿Qué es Verdaccio?
En pocas palabras, Verdaccio es un registro privado y proxy ligero, sin dependencias y con configuración cero, creado con Node.js. La aplicación ofrece cierto nivel de personalización y es muy fácil de configurar. Si publicaste un paquete en npmjs, ya sabes cómo usar Verdaccio.
¿Qué casos de uso interesantes has visto para el paquete?
El caso de uso más común es alojar un registro privado, que no requiere muchos recursos en el caso de equipos pequeños. Una máquina virtual de tamaño muy reducido en cualquier servicio SaaS basta para cubrir la mayoría de las necesidades.
Verdaccio es muy apreciado en el ecosistema de código abierto. La razón principal es que esos proyectos no necesitan depender de servicios de terceros para probar la publicación de paquetes. Además, ofrece privacidad y una capa adicional de seguridad que evita que se filtren paquetes por accidente en registros públicos. Un ejemplo concreto sería publicar varios paquetes desde un monorepositorio para probar la integridad de la instalación final.
Contar con un registro es fundamental para aprender Node.js, crear módulos y distribuirlos como parte de los fundamentos de Node.js. ¿Qué podría ser mejor que permitir que cualquier desarrollador ejecute su propio registro en solo unos segundos? Eso no tiene precio para muchos desarrolladores que están empezando a aprender Node.js.
¿Podrías contarnos sobre tu función como responsable del mantenimiento del proyecto Verdaccio?
En 2016, Verdaccio se creó a partir de una bifurcación de un proyecto llamado Sinopia. Hubo varios debates sobre cómo continuaría el proyecto. En ese entonces usaba Sinopia y necesitaba un registro para mi propio desarrollo, hasta que el proyecto quedó abandonado. Rápidamente noté el potencial de la idea para la comunidad y, cuando ya contribuía activamente, los cofundadores me cedieron la propiedad. En ese momento había 200 estrellas y solo unos cientos de descargas por semana. Sinopia seguía existiendo y mi principal objetivo era sumar a tantos colaboradores como pudiera, y lo logré.
Hoy lidero este proyecto completamente en mi tiempo libre y mi principal objetivo es ayudar a que la comunidad de Node.js crezca. Verdaccio tiene más de 11,000 estrellas en GitHub, alrededor de 2 millones de descargas de Docker y 100,000 descargas en npm cada mes. La mejor manera de apoyar el proyecto es contribuir, pero también puedes hacer donaciones para impulsar su desarrollo futuro a través de los patrocinadores de GitHub: https://github.com/sponsors/verdaccio.
Detectamos que Verdaccio está ganando popularidad, con más de 30,432 descargas por semana. ¿Qué crees que hizo que el proyecto tuviera éxito?

La sencillez, sin duda. La curva de aprendizaje para usar Verdaccio por primera vez es muy baja: basta con escribir
npx verdacciopara poner en marcha un registro.Los usuarios entienden que un registro puede ser complejo. Verdaccio lo hace sencillo.
La popularidad de JavaScript y Node.js tiene un papel importante en el éxito. Existe la necesidad de privacidad y seguridad, y Verdaccio ofrece ambas sin costo.
Sin duda, Docker ha sido la mejor manera de llegar a muchos usuarios.
¿Cuáles son tus funciones favoritas de Verdaccio?
Mi favorita es una función llamada uplinks. Esta función ofrece a los usuarios distintas posibilidades para conectarse con otros registros. En combinación con otra función llamada package access, permite decidir, según un patrón de nombre de paquete, qué uplinks deben resolver una dependencia específica o incluso encadenar varios uplinks hasta encontrar el paquete. Hasta ahora, ningún otro producto puede hacer esto.
¿Cuáles son las nuevas funciones de la última versión de Verdaccio?
Una de las funciones más recientes permite mostrar los paquetes obsoletos en la interfaz de usuario. Así, es fácil comunicar a los usuarios que algunos paquetes ya no reciben mantenimiento y que deben dejar de usarlos.
¿Por qué los desarrolladores eligen Verdaccio?
Creo que a los desarrolladores les gusta Verdaccio por su privacidad, flexibilidad, sencillez y porque es gratis. Ofrece privacidad porque no necesitan compartir su código con servicios de terceros; flexibilidad porque pueden cambiar fácilmente el comportamiento de la aplicación; sencillez porque es fácil de aprender y usar por primera vez; y es gratis porque es de código abierto y cualquiera puede contribuir a mejorar el proyecto.
¿Hay otros proyectos de los que hayas visto que los desarrolladores migren?
En los últimos años he visto que los desarrolladores migran de Nexus y Artifactory a Verdaccio. La mayoría de los desarrolladores de Node.js no necesitan una solución grande para publicar un paquete. Si tienes una empresa pequeña, trabajas como freelance, estás aprendiendo o simplemente experimentas, no hay nada más sencillo y rápido que Verdaccio en el mercado.
¿Qué señales indican, en tu opinión, que el proyecto Verdaccio está en buen estado? Lo identificamos como un proyecto saludable y observamos una excelente tendencia de commits y actividad en pull request.

Sin duda, genera una sensación de seguridad. Todo proyecto de código abierto depende de otros proyectos y forma parte de una enorme cadena de dependencias. Sus problemas, mejoras o cambios incompatibles tarde o temprano te afectan. Actualizo las dependencias con la mayor frecuencia posible, ya sea manualmente o con herramientas automatizadas. Sus parches de seguridad también corrigen cualquier tipo de problema en Verdaccio y, básicamente, hago lo mismo para que quienes tienen este proyecto como dependencia también se beneficien de su buen estado. Además, tenemos canales para informar sobre políticas de seguridad, así que cualquiera puede reportar vulnerabilidades de seguridad, que son prioritarias para quienes mantienen el proyecto.
¿Cuál es hoy el mayor desafío de ser responsable del mantenimiento de un proyecto de código abierto?
El tiempo. Para mí, ser desarrollador de código abierto a tiempo completo y con sueldo es una quimera. Solo unos pocos han logrado hacerlo con total independencia. Tener un trabajo de tiempo completo, familia, pasatiempos y una vida normal te deja poco tiempo y espacio para el código abierto. Así que, sin duda, el tiempo es el mayor desafío. A veces tienes una hora o menos al día y debes decidir qué tarea priorizar. Sin olvidar otras tareas secundarias, como escribir en el blog, publicar en Twitter y promocionar el proyecto en conferencias o encuentros. También es importante no sentir presión por el tiempo y disfrutar de lo poco que puedes dedicarle.
Parece que Verdaccio tiene un buen historial de gestión de problemas de seguridad en versiones anteriores. ¿Cómo gestionas hoy este riesgo de seguridad en la rama 4.x?

No soy especialista en seguridad, así que debo recurrir a servicios de terceros o a especialistas en seguridad que se acercan para ayudarme a comprender e identificar posibles problemas. Desde los primeros días, el equipo de Verdaccio fue invitado a formar parte del programa de seguridad de código abierto de Snyk junto con Liran Tal. Desde entonces me comprometí a ser más responsable en este ámbito. El proyecto recibió muy buenos comentarios sobre cómo gestionar los problemas de seguridad y, por supuesto, aprendimos en el proceso.
Incluso antes de formar parte de ese programa, usaba el servicio gratuito para proyectos de código abierto de Snyk. Recibir comentarios instantáneos sobre los parches disponibles para las vulnerabilidades de seguridad, mediante pull request o correo electrónico, ayuda a mantener el proyecto en buen estado.
Daniel Ruf, miembro del equipo principal, es especialista en seguridad y vive en Alemania. Se unió al proyecto por su pasión por la seguridad y el código abierto, y desde el principio ha sido una gran inspiración por su compromiso con la seguridad en Verdaccio.
Los colaboradores también hacen su parte. Me contactan a través de la política de seguridad oficial, que está en el archivo SECURITY.md de la rama master, cuando detectan una vulnerabilidad. Siguiendo los procedimientos, se publica un parche lo antes posible. Tengo una sola regla: la seguridad importa y me la tomo en serio.
¿Cuáles son tus cinco proyectos de código abierto favoritos?
Yarn 2 (berry) es uno de mis favoritos. El proyecto está muy bien hecho en cuanto al código, los complementos y la documentación, y también ofrece una buena comunicación sobre cómo migrar de classic a berry, un concepto nuevo que cambiará muchas cosas en el ecosistema de Node.js.
Babel.js: no me imagino desarrollar sin él. Me gusta combinarlo con TypeScript, lo que me permite estar a la vanguardia de las funciones de JavaScript.
pnpm: el desarrollo futuro de Verdaccio ya se basa en pnpm y me gusta el enfoque del proyecto: es fácil de configurar, admite monorrepositorios, es rápido y cubre todas mis necesidades. Además, ahorrar espacio en el disco duro es fundamental para mí.
Pino.js: sin duda, el mejor registrador de Node.js disponible ahora mismo: rápido, bien documentado y con una comunidad muy activa.
Jest: uso jest en todos los proyectos en los que trabajo profesionalmente. Sin duda, es el ejecutor de pruebas más completo, se mantiene bien y publica funciones rápidamente.
¿Cuál es tu mejor consejo para empezar a contribuir al código abierto?
Debes disfrutarlo; ese es el ingrediente único que necesitas para contribuir al código abierto. Para mí, es un pasatiempo que me permite aprender, salir de mi zona de confort y ayudar a muchos desarrolladores a aprender y disfrutar de Node.js.
¡No tengas miedo! Quienes mantienen los proyectos no son dioses omnipotentes que lo saben todo sobre cada área. Son personas, se equivocan y también aprenden. Empezar poco a poco es una buena manera de acercarte al código abierto. Con el tiempo, conocerás bien el contexto del proyecto, asumirás más responsabilidades y llegarás a mantenerlo (si eso es lo que buscas).

