En 2016, el mantenedor del paquete del panel izquierdo anuló la publicación de NPM, dejando millones de compilaciones rotas antes de que NPM interviniera y anulara la publicación del paquete antes de que surgiera demasiado caos.
https://www.theregister.com/2016/03/23/npm_left_pad_chaos/
¿Qué medidas preventivas se han puesto en marcha contra este tipo de incidentes que se produzcan en el futuro? ¿Ha cambiado algo en la forma en que los archivos node_modules se administran localmente, se agrupan, etc.? ¿NPM cambió su política sobre cómo funciona el código abierto? ¿Se espera algún esfuerzo para alejarse o modificar la forma en que funciona el desarrollo de código abierto para manejar problemas como estos?
Editar: estaba buscando generar una discusión abierta, pero supongo que StackOverflow no es el lugar para eso, así que modifiqué mi pregunta en consecuencia.
El incidente ocurrió porque el mantenedor de left-pad pudo anular la publicación del paquete, a pesar de que la comunidad dependía de él.
Poco después del incidente (23 de marzo de 2016), npm publicó una autopsia que incluía sus planes de resolución:
Haremos que sea más difícil anular la publicación de una versión de un paquete si al hacerlo se dañarían otros paquetes.
npm pronto siguió con una actualización (29 de marzo de 2016):
Si la versión tiene más de 24 horas, la anulación de la publicación fallará, con un mensaje para contactar a support@npmjs.com.
npm anunció una actualización más importante recientemente (enero de 2020), que es su política de cancelación de publicación actualmente vigente:
Paquetes publicados hace menos de 72 horas
Para los paquetes recién creados, siempre que no haya otros paquetes en el Registro público de npm que dependan de su paquete, puede anular la publicación en cualquier momento dentro de las primeras 72 horas posteriores a la publicación.
Paquetes publicados hace más de 72 horas
Independientemente de cuánto tiempo hace que se publicó un paquete, puede anular la publicación de un paquete que:
- ningún otro paquete en el Registro Público de npm depende de
- tuvo menos de 300 descargas durante la última semana
- tiene un solo dueño/mantenedor
Esto significa que un paquete como left-pad , del que dependían muchos otros paquetes, no se puede anular la publicación.
La otra preocupación era que anteriormente era posible que alguien publicara un paquete malicioso en un nombre de paquete abandonado (lo que afortunadamente no sucedió en el caso de left-pad ). npm rectificó esto como parte de su autopsia inicial:
Si un paquete con dependientes conocidos no se ha publicado por completo, lo reemplazaremos con un paquete de marcador de posición que impida la adopción inmediata de ese nombre. Todavía será posible obtener el nombre de un paquete abandonado poniéndose en contacto con el soporte de npm.