codigo

codigo

Omicrono

El programador que borró 11 líneas de código y se cargó Internet

La desaparición en node.js de left-pad, apenas 11 líneas de código, afectó a miles de programas, y puso en peligro la estabilidad de Internet.

3 abril, 2016 20:00

Noticias relacionadas

Internet estuvo al borde del desastre hace unos días, y todo empezó con una riña que no debería haber tenido muchas consecuencias, con la desaparición en node.js de left-pad.

Azer Koculu es un desarrollador que la semana pasada programó una extensión para el entorno de programación Node.js, muy popular entre los programadores. Por supuesto, subió la extensión a npm, que viene a ser un repositorio en el que los desarrolladores pueden subir y descargar código fácilmente.

El secreto del éxito de npm y Node.js está en que pone las cosas muy fáciles a los desarrolladores, que pueden enlazar a módulos npm sin necesidad de crear el código por su cuenta e integrarlo en su programa. Sólo tienen que indicar el módulo que quieren usar, y el compilador hará el resto del trabajo.

 Un conflicto sin mucha importancia que acabó afectando a toda Internet

npm 1

npm 1

Gracias a npm y Node.js, es posible crear todo tipo de programas sin tener que escribir tanto código, simplemente enlazando a código ya existente en los repositorios. Esto es algo muy bueno ya que permite a los desarrolladores centrarse en las innovaciones de sus programas en vez de en el trabajo sucio y repetitivo.

Pero también tiene sus cosas malas, como demostró Koculu sin querer. La extensión para Node.js que programó no tenía nada destacable, pero su eliminación acabó poniendo en peligro muchos de los servicios que usas en Internet.

kik

kik

El problema de la extensión estaba en el nombre: Kik. Es un nombre que es posible que te suene, y con razón; así es como se llama una app de mensajería instantánea para iOS y Android, que no tiene nada que ver con esta extensión. En cuanto los creadores de la app descubrieron que había alguien usando el mismo nombre, pidieron a su creador que le cambiase el nombre, ya que estaban planeando el lanzamiento de un paquete en npm con su marca kik.

Hasta ahora parece una historia simple, nada nuevo bajo el sol. Este tipo de enfrentamientos son muy comunes, ya que sería difícil para cualquiera estar al día de todo lo que sale en Internet. Normalmente estos conflictos terminan rápido, el que ha llegado más tarde cambia el nombre, y todo el mundo feliz.

Excepto que Koculu no quería cambiar el nombre de su extensión, porque cuando se lo puso no sabía que existía una app con el mismo nombre, pero sobre todo no quería que una compañía le “forzase” a cambiar su app, aunque él mismo reconoce que la petición era “razonable”.

Qué supuso la desaparición en node.js de left-pad

Ante esta negativa, Kik contactó con npm para que tomase cartas en el asunto, y aquí es cuando se lió gorda. Enfurecido, Azer Koculu no sólo borró el código de su extensión Kik, sino también todo el código que tenía en npm, 273 módulos. Incluyendo un programita llamado “left-pad”, de apenas 11 líneas de código.

left-pad no hace nada especial, sólo alinea texto hacia la izquierda en base a un número de caracteres. Por ejemplo, si llamamos a la función de esta manera:

leftpad(‘foo’, 5)

El resultado será ”   foo”, dos espacios y la palabra de tres letras para formar 5 caracteres. Es útil para jugar con las alineaciones de texto, pero poco más. Pero la clave es que varios programas muy importantes en Internet usan este código.

Por ejemplo, Babel, una extensión de Node.js que acelera la ejecución de código, y que es usada por Facebook, Spotify y Netflix entre otras. O React, que permite crear mejores interfaces de usuario. Incluso la propia app de Kik se vio afectada porque uno de los módulos que usan también depende de left-pad.

jenga

jenga

El mes pasado left-pad fue descargado 2,486,696 de veces, y miles de proyectos dependen de este código. Y todos ellos, de la noche a la mañana, ya no podían compilarse, ya no podían funcionar. Borrar 11 líneas de código había dejado inutilizados a los programas que forman la Web moderna.

Una solución necesaria que no contenta a nadie

La reacción de npm, afortunadamente, no se hizo esperar, pero también trajo polémica. La decisión que tomaron fue priorizar los intereses de la comunidad sobre los de un usuario en particular, así que recuperaron left-pad y volvieron a publicarlo, sin tener en cuenta los deseos de su creador.

El CTO de npm, Laurie Voss, explicó en Twitter que esta es una situación sin precedentes, y confiesa que dentro de la compañía también hay polémica por tratar el trabajo de otra persona como si fuera propio. En cierta manera, npm está robando el código de Azer Koculu porque la alternativa es dejar que miles de proyectos caigan.

Al final del día, este es el tipo de decisiones que hacen que Internet siga en pie, aunque no les guste a nadie.