Cómo un programador rompió Internet al eliminar un pequeño fragmento de código
Un hombre en el desarrollo web interrumpido en el mundo al eliminar 11 líneas de código


Este artículo es de 2016.
Noticias de última hora: Una interrupción tecnológica masiva a nivel global está cancelando vuelos, perturbando bancos y más. Esto es lo que debe saber
Un hombre en Oakland, California, interrumpió el desarrollo web en todo el mundo la semana pasada al eliminar 11 líneas de código.
La historia de cómo Azer Koçulu, de 28 años, rompió brevemente Internet, muestra cómo la escritura de software para la web se ha vuelto dependiente de un mosaico de código que en sí mismo depende de la benevolencia de sus colegas programadores. Cuando ese sistema falla, como sucedió la semana pasada, las consecuencias puede ser vasto e impredecible.
“Creo que tengo derecho a borrar todas mis cosas”, escribió Koçulu el 20 de marzo en un correo electrónico que más tarde se hizo público.
Y luego lo hizo.
El credo del código abierto
Koçulu había estado publicando el código que escribió mpn, un servicio popular que se utiliza ampliamente para buscar e instalar software de código abierto escrito en JavaScript. Se ha convertido en una herramienta esencial en la web. desarrollo, invocado miles de millones de veces al mes, gracias a la facilidad de uso de npm y su enorme biblioteca de paquetes de código libre aportados por comunidad de código abierto.

La filosofía de código abierto es lo que impulsó a Koçulu a contribuir a npm en primer lugar, y la razón por la que terminó abandonando el servicio. Como muchos en la amplia comunidad de personas que escriben código que cualquiera puede usar, él está influenciado por la “ética hacker” de los primeros tiempos. programadores del Instituto de Tecnología de Massachusetts y un conjunto de valores más concretos que luego planteó el programador Richard Stallman.
“El acto fundamental de amistad entre programadores es compartir programas”, escribió Stallman en su manifiesto de 1985. Él criticó contra “la comercialización del software de sistemas», y expuso formas de hacer el código más comunal y ampliamente útil. Muchos de Las ideas de Stallman, así como el legado de la ética hacker, continúan influyendo en programadores como Koçulu.
“Soy un graduado de secundaria autodidacta que aprendo todo gracias a la comunidad de código abierto”, Koçulu, quien nacido en turquía, escribió en un correo electrónico a Quartz. “Le debo todo lo que tengo a las personas que nunca se dieron por vencidas con la filosofía del código abierto”.
Empezó con un correo electrónico
Uno de los paquetes de JavaScript de código abierto que Koçulu había escrito era kik
, que ayudó a los programadores a configurar plantillas para sus proyectos. No era muy conocido, pero compartía un nombre con kik, la aplicación de mensajería con sede en Ontario, Canadá. El 11 de marzo, Koçulu recibió un correo electrónico de Bob Stratton, un agente de patentes y marcas comerciales que realiza trabajos por contrato para Kik.
Stratton dijo que Kik se estaba preparando para lanzar su propio paquete y le preguntó a Koçulu si podía cambiar el nombre del suyo. “¿Podemos lograr que cambies el nombre?” tu kik
¿Paquete?”, escribió Stratton.
“Lo siento, estoy construyendo un proyecto de código abierto con ese nombre”, respondió Koçulu.
La conversación se intensificó rápidamente y Stratton amenazó con emprender acciones legales: “No pretendemos ser idiotas al respecto, pero es un asunto registrado. marca registrada en la mayoría de los países alrededor del mundo y si realmente lanza un proyecto de código abierto llamado kik
, nuestros abogados de marcas van a estar golpeando su puerta y tomando nota de sus cuentas y cosas así, y tendríamos no hay más opción que hacer todo eso porque hay que hacer cumplir las marcas comerciales o las perderás”.
“Jaja, en realidad estás siendo un idiota”, respondió Koçulu. “Entonces, vete a la mierda. No me envíes un correo electrónico”.
Stratton se ofreció a pagar por el nombre y Koçulu sugirió 30.000 dólares “por la molestia de renunciar a mi proyecto de mascota por un montón de idiotas corporativos”. Estaba claro que los dos hombres no iban a llegar a un acuerdo.
npm se pone del lado de Kik
La empresa llamada npm tiene su sede, al igual que Koçulu, en Oakland. Aunque es una empresa con fines de lucro, npm gestiona su registro homónimo de software de código abierto de forma gratuita y tiene la misión de fomentar el desarrollo de JavaScript de código abierto. La empresa genera ingresos a partir de servicios privados para código que no es de código abierto, modelo de negocio similar a GitHub.
Stratton llevó la solicitud de Kik sobre el nombre a npm, citando nuevamente la marca registrada de la compañía y su posible confusión. Isaac Schlüter, el director ejecutivo de npm, acordó entregar el nombre a la empresa.
“En este caso, creemos que la mayoría de los usuarios que se encontrarían con un kik
paquete, esperaría razonablemente que estuviera relacionado con kik.com”, escribió Schlueter a Stratton y Koçulu el 18 de marzo. “En este contexto, transferir la propiedad de estos dos nombres de paquetes logra ese objetivo. ”
“Te conozco desde hace años”, respondió Koçulu, “y nunca te imaginaría poniéndote del lado de los abogados de patentes corporativas que amenazan a los contribuyentes de código abierto”.
Muchos programadores, particularmente en la comunidad de código abierto, son críticos con las leyes de propiedad intelectual en los Estados Unidos y con las leyes de patentes y marcas registradas. titulares que buscan hacerla cumplir. Durante años, las empresas de software han sido bombardeadas con demandas por patentes que cubren tecnologías ubicuas, como la visualización de imágenes. en páginas web o enviando noticias por correo electrónico. Los desarrolladores de software tienden a ver estas demandas como un obstáculo para la innovación y la extorsión al límite.
A Koçulu, la decisión de npm de transferir la propiedad de la kik
El paquete a Kik iba en contra de los valores de la comunidad a la que sirve. En su respuesta, Koçulu dijo que quería todos los paquetes. se había registrado en npm eliminado. “Ya no quiero ser parte de NPM”, escribió. “No lo hagas, déjame saber cómo hacerlo rápidamente”.
Rompiendo internet
Dos días después del último correo electrónico de Koçulu a npm, el 22 de marzo, los programadores de JavaScript de todo el mundo comenzaron a recibir un extraño mensaje de error cuando intentaron ejecutar su código. El problema fue lo suficientemente grave como para impedir que algunos desarrolladores actualizaran aplicaciones y servicios que ya se estaban ejecutando en el web. El error escupió muchas líneas, pero una destacó:

Significaba que el código que intentaban ejecutar requería un paquete llamado pad izquierdo
, pero el registro npm no lo tenía.
La mayoría de los programadores nunca habían oído hablar de pad izquierdo
, pero ahora, de alguna manera, su código no podría ejecutarse sin él. Para comprender cómo podría suceder esto, es importante comprender que casi todo el software está construido sobre otro software, que también depende de otro software. Cargar su propia aplicación puede requerir un determinado conjunto de paquetes de npm, pero esos paquetes pueden requerir sus propios conjuntos de paquetes, etc. Esa es una de las razones por las que npm se ha vuelto tan popular, ayudando a gestionar esas dependencias manteniendo todos los paquetes en un solo lugar confiable.
Confiable, es decir, hasta que uno de los paquetes se pierda.
Temprano en la tarde, los desarrolladores comenzaron a congregarse en el repositorio de GitHub dónde pad izquierdo
se mantuvo. La mayoría estaban confundidas porque los paquetes no suelen desaparecer. Este fue particularmente desconcertante porque eran solo 11 código. Aquí está pad izquierdo
en su totalidad:

Ese código se puede usar para agregar caracteres al comienzo de una cadena de texto, tal vez un cero al comienzo de un zip. código. Es una función de un solo propósito, lo suficientemente simple para que la mayoría de los programadores la escriban ellos mismos. Sin embargo, muchos paquetes npm dependían de pad izquierdo
para hacerlo por ellos, que es como este pequeño código se volvió tan importante.
Algunos de los paquetes npm más grandes y más utilizados se rompieron repentinamente. Uno de los paquetes afectados, Reaccionar, es utilizado por los principales sitios web como Facebook, que lo creó, y una amplia variedad de sitios más pequeños como el propio Atlas. Sólo en el último mes , más de un millón de personas han descargado Reaccionar de npm. React no requirió estas 11 líneas de código directamente, por supuesto. Dependió de un conjunto de paquetes, y cada de ésos dependían de otro conjunto, etcétera, y una de esas ramas eventualmente llevó a pad izquierdo
. Y ahora, pad izquierdo
se había ido.
Su ausencia se sintió globalmente; los comentaristas de pad izquierdo
La página de GitHub escribía desde Australia, Alemania, Estados Unidos y la República Checa. En Ontario, donde se había originado el problema. En este rodeo, los programadores de Kik, irónicamente, se toparon con pad izquierdo
También hay problemas. Mike Roberts, que dirige la aplicación de mensajería de la empresa, dijo en una entrevista que el error impidió que sus colegas ejecutaran software en el que habían estado trabajando. “¿Qué diablos”, recordó Roberts haber pensado, “falta uno de nuestros paquetes?”
‘Des-publicación’
Una hora después de que se notara el problema por primera vez, Koçulu apareció con una publicación en Medium titulada: “Acabo de liberar mis módulos.” Explicó brevemente la disputa con Kik y npm, y dijo que había eliminado sus paquetes de npm en protesta, los 273 de Uno de ellos (difícilmente el más popular o incluso el más importante, incluso para Koçulu) fue pad izquierdo
.
“Esta situación me hizo darme cuenta de que la NPM es un terreno privado donde las empresas son más poderosas que las personas y hago código abierto. porque, poder para el pueblo», Koçulu escribió.
Al enfrentarse a una crisis, con tanto software importante desmoronándose, npm decidió restaurar las 11 líneas de código. una acción sin precedentes que estamos tomando dada la gravedad y la naturaleza generalizada de las roturas, y que no se hace a la ligera”. escribió Laurie Voss, el director de tecnología de npm. el agregó, “Esta acción pone los intereses más amplios de la comunidad de usuarios de npm en contradicción con los deseos de un autor; elegimos la necesidades de muchos”.
Con esto, el problema quedó solucionado, aproximadamente dos horas después de que surgió por primera vez.
Una red de dependencias
eso pad izquierdo
fue capaz de causar tales estragos, aunque sea por un breve período, habla de la forma en que se desarrolla el software moderno. Los servicios web de Una empresa de gran importancia, como Facebook, puede llegar a depender de oscuras líneas de código escritas por otros programadores. Poco después de que se resolviera la terrible experiencia , una publicación incrédula subió a la cima de la sección de Reddit para programadores: “Un paquete npm de 11 líneas llamado left-pad con solo 10 estrellas en github fue inédito... rompió algunos de los paquetes más importantes de todo npm».
Algunos programadores culparon a Kik de amenazar con acciones legales por un proyecto de código abierto, o npm, y dijeron que la falla era una señal de que el servicio La infraestructura es demasiado frágil. Muchos también cuestionaron la decisión de NPM de acceder a la demanda de Kik. se han resuelto”, escribió un comentarista, “¿sin que npm quite el módulo de alguien de debajo? ¿O incluso cualquier discusión pública? ¿Quiere decir que npm cederá ante cualquier amenaza legal?
Cuando se le preguntó en una entrevista telefónica con Quartz qué haría si Twitter o Google pidieran los derechos de los paquetes npm actualmente registrados. bajo esos nombres, Schlueter dijo que dependería de los paquetes mismos. “En general”, dijo, “eso es simplemente una cuestión de mirando cómo Twitter querría usar el módulo llamado gorjeo
o cómo lo está usando el desarrollador actual, qué tan bien establecido está y cuántas personas dependen de él, y innumerables otros factores”.
Otros en el hilo de Reddit y en otros lugares lamentaron el hecho de que existiera un paquete npm de 11 líneas, sugiriendo que los programadores deberían poder para escribir esas 11 líneas de código. Los chistes sobre ese tema proliferaron rápidamente en Internet. Alguien creó leftpad.io, burlándose de la dependencia masiva de un código tan simple. (“Para evitar que ocurra una tragedia tan terrible Una vez más durante nuestras vidas, ‘left-pad.io’ ha sido creado para proporcionar toda la funcionalidad de ‘left-pad’”.)
Mike Roberts, de Kik, dijo en una entrevista que lamentaba no haber contactado al propio Koçulu en primer lugar. perspectiva”, dijo, “el código abierto, la comunidad, se trata de ayudarse unos a otros”.