In questi giorni mi sono imbattuto nella notizia che riguarda due popolari librerie JavaScript, faker.js e colors.js.
Queste sono due piccole librerie che fanno una cosa tutto sommato relativamente semplice. faker.js permette di creare dei dati verosimili da utilizzare nel test delle proprie applicazioni mentre colors.js permette di aggiungere il colore all’output dei messaggi sulla console del proprio personal computer.
Due librerie che sono comunque molto utili a qualsiasi sviluppatore tanto che colors.js (https://github.com/Marak/colors.js) ha più di 4.5k stelle su github mentre faker.sj (https://github.com/marak/Faker.js/) ne ha più di 1.1k.
Per questo le due librerie sono molto diffuse e molte applicazioni dipendono da loro per essere utilizzate.
Lo sviluppatore ha deciso di modificarle con del nuovo codice che le ha rese del tutto inutilizzabili. Qualsiasi applicazione che le utilizzasse e che fosse stata ricompilata, o ricostruita, dopo il rilascio del nuovo codice ha smesso di funzionare. Inutile dire che queste applicazioni sono state tantissime e diversi problemi si sono presentati, anche in sistemi critici.
Questo fare riflettere sulla architettura delle moderne applicazioni. Io stesso notavo la quantità di librerie che ho dvuto importare durante lo sviluppo del mio progetto in python. Usando un ambiente virtuale per lo sviluppo la lista delle librerie importate è a portata di mano. Sono un quantità enorme. La maggior parte di loro sono rilasciate con licenza Open Source e quindi sono liberamente utilizzabili sebbene con diverse limitiazione in funzione della licenza scelta dallo sviluppatore.
E’ chiaro a tutti che nessuno si metterà mai a verificare il contenuto di queste librerie bit per bit. In buona sostanza tutti gli svilupattori fanno un atto di fede e si fidano della buona fede di chi le ha scritte. Questo apre la porta a comportamenti potenzialmente nefasti. Organizzaioni possono iniettare codice malevolo all’interno delle librerie e se il manutentore delle librerie non se ne accorge questo si diffonde. Qualche altro può inserire del codice che smette di farle funzionare oppore, come nel caso di cui stiamo parlando, lo sviluppatore può usarle in maniera “politica”.
Sì, perché sembra che lo sviluppatore abbia fatto queste modifiche per riportare l’attenzione di tutti sul caso di Aaron Swartz. Questo comunque nonostante in passato lo stesso sviluppatore si sia lamentato del fatto che le grandi aziende stavano usando le sue libreria senza che gli venisse riconosciuto alcun emolumento.
Difatti poco tempo addietro scriveva:
“Respectfully, I am no longer going to support Fortune 500s ( and other smaller sized companies ) with my free work. There isn’t much else to say, wrote.”
“Take this as an opportunity to send me a six figure yearly contract or fork the project and have someone else work on it.”
Quale che sia la ragione delle modifiche il risultato è che centinaia di applicazioni dipendenti da queste due librerie hanno smesso di funzionare.
Il tutto mi sembra riassunto in maniera estremamente efficace in questa immagine: