Seleccionar página

Esta semana santa ha sido bastante movida en el complejo mundo de las dependencias entre paquetes NPM. Un programador decidió retirar una pequeña función de apenas unas lineas de código y como consecuencia muchos paquetes, algunos tan importantes como el propio NPM o Babel, dejaron de funcionar.

El paquete en cuestion es pad-left, que ofrece una funcion para añadir ceros por la izquiera al convertir un entero a cadena de caracteres. Esta pequeña función es en la práctica extremadamente popular y tiene millones de descargas cada mes, sobre todo por ser utilizada como dependencia interna en algunos de los paquetes más populares de NPM.

Parece ser que su creador, Azer Koçulu, fue víctima una desagradable actuación por parte de NPM sobre la publicación de un paquete denominado Kik y que molestó a kik.com, cuyo nombre coindice con el paquete publicado (también puedes leer el punto de vista de Kik de todo este embrollo).

Por todo ello, seguramente bastante enfadado por la actuación de NPM, Azer decidió dar de baja todos sus paquetes publicados en NPM y como consecuencia «el mundo tembló» ya que miles de descargas de paquetes muy populares dejaron de funcionar sin explicación aparecente.

Este es el pequeño código que, de repende, dejaba de estar disponible:

module.exports = leftpad;

function leftpad (str, len, ch) {
  str = String(str);

  var i = -1;

  if (!ch && ch !== 0) ch = ' ';

  len = len - str.length;

  while (++i < len) {
    str = ch + str;
  }

  return str;
}

Para «resolver» en problema, Laurie Voss, CTO y cofundador de NPM, tomó la decisión sin precedentes de restaurar el paquete borrado. Cuando un paquete es eliminado no es posible volverlo a restaurar, pero en este caso se ha tomado una medida excepcional, tal y como explicó Laurie en un tweet.

Aunque el problema parece solventado, la verdad es que deja al descubierto la fragidad del sistema de dependencias encadenadas. La mayor parte de nosotros usamos los paquetes sin preocuparnos de que dependencias tienen y, aunque instalen decenas de paquetes prácticamente desconocidos, confiamos que todo funcionará correctamente, ahora y en el futuro.

Como hemos podido comprobar, el desagradable incidente con un programador de Oakland y una empresa Ontario, puede hacer templar los cimientos de miles de paquetes y volver locos a muchos desarrolladores que no entendíamos que estaba pasando al intentar instalar paquetes que hasta hace unos dias funcionaban sin problemas.

Es verdad que el código del paquete pad-left no es muy complejo, pero es habitual pensar que si algo está ya escrito y funciona bien, por qué no utilizarlo. Bueno, quizas debamos valorar más despacio que utilizamos, que origen tiene y que futuro le espera. Este ha sido un caso a gran escala y la propia NPM ha actuado, pero en otros casos más pequeños y menos conocidos podemos encontrarnos con un problema de dificil solución. Es posible que esto sólo haya sido una anecdota, pero da que pensar.

¿Qué opináis? ¿Cómo deberíamos actuar? ¿Debemos confiar o desconfiar de los paquetes y sus dependencias?

Novedades

Svelte JS: por qué dedicarle tiempo, por Jesús Cuesta

Svelte JS: por qué dedicarle tiempo, por Jesús Cuesta

Jesús Cuesta cuenta qué es Svelte, para qué sirve, cómo compite contra aplicaciones construidas con React o Vuejs, si sirve para desarrollar web components, si la curva de aprendizaje es muy alta, y sobre todo si está suficiente maduro para utilizarlo. Si quieres conocer Svelte no puedes perderte esta introducción.

Javascript: 25 aniversario

Javascript: 25 aniversario

25 años con Javascript han dado para mucho. Pero todavía queda mucho para este lenguaje de programación.

Bye Bye Nativo, Welcome a la Web del Futuro por Alex González

Bye Bye Nativo, Welcome a la Web del Futuro por Alex González

Alex García nos contará como en breve la web ha tomado el control de todas las plataformas de desarrollo. Ya casi no quedarán aplicaciones Nativas y todas las plataformas se moverán utilizando JavaScript… Este es posiblemente el panorama que podremos ver en un futuro no muy lejano. En esta charla nos contará las principales claves de esta transformación.