Uno sviluppatore blocca “internet” rimuovendo 11 righe di codice

npm-logo

Seppur non abbia impattato le infrastrutture di rete (e da qui il virgolettato del titolo), uno sviluppatore ha creato molti problemi a diversi “big” di internet rimuovendo solo 11 righe di codice.

Una simpatica sequenza di eventi che ha coinvolto leggi sul copyright, prese di posizione, comportamenti scorretti, ed uno sviluppatore leggermente permaloso, ha creato non pochi problemi a grosse aziende quali Facebook, Spotify e Netflix.

Tutto è nato diverso tempo fa, quando uno sviluppatore di nome Azer Koçulu ha sviluppato un modulo per Node.js chiamato Kik. Questo modulo, di per se, non fa nulla di particolare: è una commodity utile per creare nuovi progetti velocemente. E, come spesso viene fatto, ha condiviso questo modulo gratuitamente su npm, una specie di “store” per sviluppatori Node.js.

Qualche settimana fa, lo sviluppatore è stato contattato da un legale con la richiesta di rimuovere il modulo perchè violava un copyright, avendo lo stesso nome di un social network abbastanza diffuso.

Anche se Koçulu ha ammesso che la richiesta fosse ragionevole, ha comunque deciso di rispondere con un sonoro NO alla richiesta:

When I started coding Kik, didn’t know there is a company with same name. And I didn’t want to let a company force me to change the name of it

Quando ho iniziato a scrivere Kik, non sapevo ci fosse un’azienda con lo stesso nome. E non voglio che un’azienda mi obblighi a cambiare il nome di questo.

A fronte di questo, il CEO di npm Isaac Schlueter (forse contattato anche lui dal legale in questione?) ha deciso di rimuovere Koçulu come proprietario del modulo in questione, senza chiedere permesso a nessuno, Koçulu compreso.

In tutta risposta, Koçulu ha deciso di rimuovere Kik da npm, così come tutti gli altri moduli che lui stesso aveva pubblicato sulla piattaforma.

E qui il castello di carte è crollato…

Si, perchè tra i moduli pubblicati Koçulu su NPM ne era presente anche un’altro, chiamato “npm left-pad”; un piccolo modulo, giusto 11 semplici righe di codice, ma che è stato scaricato 575.000 volte. E, quando questo è sparito, gli sviluppatori di Reddit, Twitter, e diverse altre aziende se ne sono decisamente accorti.

“npm left-pad”, nella sua semplicità, aiuta gli sviluppatori ad evitare di scrive un sacco di codice base da zero; se utilizzato permette di scaricare in fase di compilazione un’eventuale altro modulo solo quando questo è necessario, sgravando lo sviluppatore da questa noiosa e ripetitiva attività.

Il più delle volte, questo funziona senza problemi, ma quando un modulo chiama un’altro modulo, che chiama un’altro modulo, che chiama un’altro modulo (e così via) e tutti questi utilizzano lo stesso modulo di base (npm left-pad appunto) per farlo; nel momento in cui questo modulo è stato rimosso da NPM ha praticamente smesso di funzionare tutto quanto!

Software decisamente popolari, come Babel (largamente utilizzato come acceleratore di base da Facebook, Netflix e Spotify) e React (che aiuta gli sviluppatori a costruire interfacce migliori) hanno smesso di compilare. E, sistemare il problema, ovviare a quelle 11 righe di codice, richiederebbe agli sviluppatori di ricostruire la catena di dipendenze dei moduli che utilizzano nei loro progetti, operazione estremamente lunga e tediosa.

Dopo una serie di lamentele da parte di sviluppatori di tutto il mondo, NPM è stata obbligata a ripubblicare il codice in questione, associandolo ad un nuovo proprietario.

Tramite Twitter, il CTO di npm Laurie Voss ha affermato che non sono felici di prendere in mano quello che continua ad essere di proprietà intellettuale di Koçulu, ma la gran parte dell’industria software ha richiesto di bloccare il problema:

Even within npm we’re not unanimous that this was the right call, but I cannot see hundreds of builds failing every second and not fix it.

Anche se in npm non siamo unanimi riguardo il fatto che questo sia la scelta giusta, non posso vedere centinaia di compilazioni fallire ogni secondo e non sistemare la cosa.

Anche se, temporaneamente, la tempesta è passata, e “npm left-pad” è tornato online, crediamo che non sia finita qui, e che sicuramente si vedrà una sorta di battaglia riguardo questa situazione.

La sensazione di molti sviluppatori però porta a chiedersi: “Ci siamo dimenticati come si programma?”

Utente Linux/Unix da più di 20 anni, cerco sempre di condividere il mio know-how; occasionalmente, litigo con lo sviluppatore di Postfix e risolvo piccoli bug in GNOME. Adoro tutto ciò che può essere automatizzato e reso dinamico, l'HA e l'universo container. Autore dal 2011, provo a condividere quei piccoli tips&tricks che migliorano il lavoro e la giornata.

Tags: , ,