Se a fine marzo 2016 Internet ha smesso di funzionare per qualche ora, non preoccupatevi. La colpa non è vostra, né del router, né tantomeno del vostro operatore telefonico. La colpa, se così si può dire, è di un giovane programmatore, Azer Koçulu, appassionato di open source e autore di un modulo software tanto piccolo quanto utilizzato.
Lo sviluppatore di origine turca (ma ora residente a Oakland, negli Stati Uniti) è tra i membri più attivi di NPM, una sorta di app store per software scritto in Node.js (piattaforma di sviluppo per il motore JavaScript V8). Grazie alle sue creazioni, realizzate e distribuite con licenza open source, Koçulu ha raggiunto un certo livello di notorietà nella comunità degli sviluppatori indipendenti, tanto che alcuni moduli scritti in Node.js sono utilizzati da "mostri sacri" di Internet.
E proprio uno dei moduli, chiamato kik, dello sviluppatore turco ha rischiato di mandare in tilt la Rete. A voler essere precisi, ha bloccato il funzionamento di app per smartphone, siti e applicativi web per diverse ore. E non perché fosse malfunzionante, anzi. Il modulo non presentava (apparentemente) difetti ed era utilizzato da migliaia di utenti sino a che non è intervenuto "l'altro" Kik.
La contesa
Nativo del Canada, Kik è un social network che conta decine di milioni di utenti in tutto il mondo. E come la gran parte dei prodotti di successo, è un marchio registrato in diversi Paesi del mondo. Per questo motivo, a cavallo tra la fine del 2015 e l'inizio del 2016, Ted Livingston, ideatore del social network, fa contattare Azer Koçulu chiedendogli di cambiare nome. Una richiesta tutto sommato accettabile, come ammesso dallo stesso programmatore turco, che decide però di non ottemperare: il suo pacchetto Node.js continuerà a chiamarsi Kik.
A questo punto gli avvocati della rete sociale canadese cambiano obiettivo: anziché interagire con Koçulu, rivolgono la loro richiesta direttamente ai gestori di NPM. La risposta, in questo caso, è differente: onde evitare noie legali e per preservare "l'interesse collettivo" degli utenti dell'app store, il nome del modulo è cambiato d'ufficio, così da non infrangere più alcun copyright né marchio registrato.
Undici righe di codice
Azer Koçulu, convinto assertore della filosofia open source, non digerisce di essere stato scavalcato e prende una decisione radicale: cancellare Kik e tutta la sua repository di pacchetti Node.js dal database di NPM.
Problemi limitati, si potrebbe pensare, alle poche migliaia di utenti che fanno riferimento a Kik, se non fosse che il programmatore turco è anche l'autore di "npm left-pad", un altro pacchetto Node.js con un numero infinitamente maggiore di utilizzatori (oltre mezzo milione, secondo gli ultimi conteggi NPM). La scomparsa del pacchetto, di appena 11 righe, manda nel panico decine di migliaia di sviluppatori in tutto il mondo e mette letteralmente in ginocchio alcuni dei giganti del web.
Effetto domino
Il modulo npm left-pad, di per sé, potrebbe sembrare insignificante: nelle sue 11 righe di codice permette di bypassare e automatizzare alcune operazioni di controllo e velocizzare lo sviluppo di applicativi web e app per smartphone. Un modulo di questo genere, infatti, altro non è che una sorta di scorciatoia software che consente agli sviluppatori di evitare di scrivere inutilmente e ripetutamente le stesse righe di codice: si inserisce la "chiamata" e al momento giusto il programma in uso va a richiamare il pacchetto integrandone così le funzionalità.
Il più delle volte, tutto fila alla perfezione e il funzionamento del programma non risente del continuo rimando a librerie software esterne. Ma, in altre occasioni, può accadere che un modulo faccia riferimento a un altro modulo, il quale a sua volta fa riferimento a un terzo e così via potenzialmente all'infinito. Si capisce che, nel caso in cui uno dei pacchetti cui si fa riferimento dovesse venire a mancare per un motivo qualsiasi, l'intera infrastruttura su cui si regge il software crollerebbe come in un castello di carte.
Ed è quello che è accaduto con npm left-pad. Non appena lo sviluppatore turco ha cancellato il suo modulo, Babel, piattaforma che aiuta Facebook, Netflix e Spotify a "macinare" codice più in fretta, e React, che aiuta gli sviluppatori a costruire interfacce migliori, hanno smesso di funzionare quasi istantaneamente. Stando al blog di NPM, oltre un migliaio di progetti software (tra i quali anche Kik, la piattaforma social che ha dato il via a tutto) hanno smesso di funzionare per alcune ore.
La soluzione
Si è reso quindi necessario l'intervento dei gestori del portale che ospita i pacchetti Node.js, che hanno ripristinato la situazione pubblicando nuovamente npm left-pad e assegnandolo a un altro utente. Soluzione che ha fatto felice migliaia di sviluppatori che utilizzavano (e utilizzano) il pacchetto, ma che ha infastidito nuovamente Azer Koçulu (che, a onor del vero, aveva lasciato il pacchetto sia su GitHub sia nella sua repository personale ospitata dal suo sito). In gioco, sostiene il giovane programmatore turco, c'è il futuro della community di sviluppatori indipendenti e della filosofia free software in generale.