FYI.

This story is over 5 years old.

​La storia del programmatore che ha quasi rotto Internet

Quando le più grandi piattaforme del web vengono programmate con gli stessi strumenti, basta un piccolo incidenti per vedere crollare un gigantesco castello di carte.
25.3.16

Quello della programmazione è un mondo piuttosto curioso e in parte avulso dalle dinamiche violente che caratterizzano l'universo tech. Si tratta di un'ecosistema stranamente collaborativo, dove centinaia di migliaia di programmatori tendono tutto sommato a darsi una mano. In particolare, a parte il volume ciclopico di soluzioni a problemi di compilazione trovabili su Stack Overflow, la programmazione è sempre più spesso una disciplina modulare.

Pubblicità

Certo, ci sono i linguaggi di programmazione, le librerie e le piattaforme—Ma un singolo stampato di codice può contenere decine e decine di piccoli tasselli programmati da altre persone. Questo sistema, benché efficace, genera dei rischi non esattamente sottovalutabili. Per esempio: se un programmatore crea un semplicissimo modulo che non serve a nulla se non a risparmiare a tutti gli altri programmatori qualche riga di codice in più, cosa succede quando il server su cui è ospitato quel modulo elimina tutti i contributi caricati da quel determinato programmatore?

Un disastro: esatto. Improvvisamente tutti i programmatori che hanno sfruttato quel modulo si ritrovano con un tassello mancante nel loro puzzle, e questi castelli di carte digitali cominciano a crollare.

Incredibile dictu, si tratta di una storia vera. È quella di Azer Koculu, un programmatore che dopo aver creato una piccola estensione in Javascript per Node.js, l'ha caricata su NPM—una libreria piena di estensioni per Node.Js—e l'ha chiamata "Kik." Si tratta di un'estensione da linea di comando che permette di gestire meglio la logistica dell'avvio di progetti di programmazione.

Problema: il nome dell'estensione, Kik, è lo stesso di una piattaforma di messaggistica, e i gli avvocati del (gigantesco) servizio si sono mobilitati in tempo zero per risolvere la diatriba d'autore—Prima contattando direttamente Azer e intimandolo a cambiare il nome dell'estensione, e infine rivolgendosi direttamente a NPM, che per non dover gestire in maniera troppo diretta questa scaramuccia ha pensato di eliminare Kik dal suo database. Per Azer si è trattato di un oltraggio imperdonabile, e di tutta risposta ha ritirato tutte le sue pubblicazioni da NPM, affermando che "NPM è un'azienda privata in cui il potere corporate è più potente di quello delle persone." Vista la natura open source dei contributi di Azer, il programmatore non se l'è sentita di continuare a supportare un'azienda che preferiva piegarsi alle minacce di una grande piattaforma, invece che aiutare un suo utente.

'left pad' era sfruttata così tanto che doverne fare a meno significava dover rivedere migliaia di linee di codice per assicurarsi che nessuna stringa dipendesse da quel modulo.

È a questo punto che il castello di carte ha cominciato a scricchiolare. Infatti, tra le varie estensioni pubblicate da Azer ce n'è una, 'npm left pad', che contava solamente 11 recensioni e consisteva di appena 11 linee di codice, ma era stata scaricata, secondo Business Insider, 575.000. 'left pad' non era esattamente un'estensione indispensabile, semplicemente aggiunge un prefisso di zeri o spazi a sinistra di una stringa per garantire la presenza di stringhe della stessa lunghezza. Un processo noioso, insomma. Il problema è semplice: questa scorciatoia era sfruttata in alcune delle estensioni più importanti di tutto NPM, che a loro volta venivano utilizzate per le piattaforme più importanti di tutto il web.

Così in un attimo si è consumato il disastro: nelle ore successive programmatori da tutto il mondo hanno cominciato a compilare centinaia e centinaia di richieste d'aiuto per tentare di comprendere a cosa fosse dovuto il guasto procurato dall'impossibilità di richiamare quell'estensione. 'left pad' era sfruttata così tanto che doverne fare a meno significava dover rivedere migliaia di linee di codice per assicurarsi che nessuna stringa dipendesse da quel modulo: un lavoro infernale che ha danneggiato la struttura di progetto come Babel—sfruttato da Facebook, Netflix e Spotify—e React.

Si è trattato di un incidente dalle conseguenze così vaste che NPM ha dovuto prendere una "decisione senza precedenti" e ri-pubblicare 'left pad', così da rendere di nuovo funzionanti le stringhe dipendenti. Un post di Mike Roberts, head of messenger di Kik, ha chiarificato la posizione dell'azienda affermando che Kik stessa era in procinto di pubblicare un'estensione omonima, e che aveva educatamente chiesto a Azer di cambiare il nome alla propria, in nome del diritto d'autore che Roberts aveva dalla propria parte. L'incidente non è ancora completamente risolto: infatti il marasma causato dal guasto ha avviato un lungo e capillare processo di riparazione dei codici, che è stato poi bruscamente interrotto dalla scelta di NPM. Insomma, sulla carta è tutto a posto, ma gli ingranaggi devono ancora riprendere a funzionare a pieno regime.

La vicenda fa però senza dubbio riflettere sulla natura stessa dei metodi di programmazione odierni—David Haney, engineering manager di Stack Overflow, ha pubblicato un articolo sul suo blog in cui si si chiede "se siamo ancora capaci a programmare".

In effetti, l'idea di un immenso mondo digitale tenuto in piedi da dipendenze di codice così fragili è piuttosto spaventosa, e se mai un domani dovesse ripetersi qualcosa di simile il rischio è di non riuscire a risalire alla fonte così in fretta e in maniera così chiara. Quinn Norton, su The Message, ce lo ricordava mesi fa, "fondamentalmente il software che abbiamo a disposizione oggi fa schifo." Il motivo? Forse una folle corsa dietro all'hardware che si è conclusa solo poche settimane fa.

Segui Federico su Twitter: @nejrottif