Seguramente ya has oído hablar de esto porque ha sido muy grande. Hace un par de semanas, a finales del mes de marzo, miles de programadores de todo el mundo empezaron a ver cómo sus proyectos escritos en JavaScript dejaban de "compilar".
El motivo: un programador rompió la torre de naipes que es NPM (Node Package Manager) eliminando 11 líneas de código de su propiedad.
NPM es el gestor de paquetes de NodeJS (JavaScript en el backend) y se usa para gestionar dependencias de proyectos en JavaScript (especialmente, pero no solo, en NodeJS). De este modo si necesitamos una funcionalidad ya hecha, la buscamos en NPM y con una simple instrucción la incorporamos al proyecto para poder usarla. A partir de ese momento se puede actualizar automáticamente, y se descarga sola cuando alguien inicia el proyecto de nuevo, aunque no disponga de ella.
La historia, por pasos, fue la siguiente:
- El programador de Oakland (California) Azer Koçulu es el creador de más de 250 paquetes que están en NPM. Uno de los paquetes que tiene (o más bien tenía) se llama Kik.
- Resulta que ése es el nombre de una conocida empresa de mensajería instantánea para móviles, con más de 240 millones de usuarios. Hace poco, pensando que el nombre del paquete de Azer podría causar confusión con su marca, se pusieron en contacto con él para que lo cambiase.
- Azer se negó a cambiar el nombre y los mandó a paseo. Así que la empresa -a través de sus abogados- se puso en contacto con NPM para alegar violación de su marca registrada.
- NPM hizo caso a la petición de los abogados y le cambió el nombre unilateralmente al paquete.
- Azer montó en cólera y decidió despublicar todos sus paquetes de NPM.
De entre todos los paquetes de Azer, hay uno muy pequeño y muy sencillo llamado left-pad. Son solo 11 líneas de código muy simples, ya que lo único que hace es rellenar con ceros o espacios la parte izquierda de una cadena que se le pasa. Algo tan tonto que es increíble que no esté en el lenguaje ya. Sin embargo ese paquete lo usan literalmente miles de proyectos JavaScript de todo el mundo a través de NPM. Solo en el mes de febrero se descargó casi ¡2 millones y medio de veces! Hasta proyectos tan populares como el compilador de JavaScript Babel o el propio NodeJS dependen de él.
El caos fue tal que los administradores de NPM tomaron la decisión por primera vez en su historia de ir en contra de los deseos de uno de sus contribuidores y restaurar el paquete unilateralmente para parar la sangría.
Las voces críticas de la comunidad han sido muchas en contra de la fragilidad de un sistema tan ampliamente utilizado y controlado por unas cuantas personas. De hecho a raíz de este incidente NPM ha cambiado su política sobre cómo permitir la retirada de módulos. Ahora solo deja retirarlos durante las primeras 24 horas. Luego tendrías que pedir permiso y ellos analizarlo a fondo antes de retirarlo.
La gente de Kik también ha dado su versión de los hechos tratando de justificar su parte en todo esto.
Desde luego ha sido un aviso importante sobre la dependencia que existe de algunos proyectos y el poder que tienen algunos sobre el trabajo de los demás. Y desde luego una "gambada" de las gordas.
Foto: fdecomite / CC BY