Ciao Giovanni, tocchi temi complessi che meriterebbero più tempo di quanto disponga, ma voglio rispondere subito ad alcune belle provocazioni che mi hai lanciato (sperando di non annoiare tutti quelli che ci leggono) On April 23, 2021 1:39:48 PM UTC, Giovanni Biscuolo wrote:
e sottolineano diverse criticità notoriamente importanti dell'open source
Dai Giacomo: quando ci sono le rogne si chiama "Open Source" e quando ci sono le lodi si chiama "Software Libero"?!? :-P
ESATTO ! ! ! :-D La favoletta degli eyeballs che scovano i bug è roba Open Source sin dal principio (inventata da ESR & friends) mentre cercavano di entrare nelle grazie del management aziendale rimuovendo la tensione politica dal software libero con la scusa dello "stigma of free". In questo senso il paper ha ragione: l'open source è davvero nato con l'OSI, prima c'era solo il Software Libero, nato quando il software ha smesso di essere libero per consuetudine: https://newleftreview.org/issues/ii113/articles/richard-stallman-talking-to-... Prendi queste "rogne": per Linux, che è Open Source, sono un problema, per Jehanne (giacché l'hai citato), sarebbero un'occasione! Significherebbe che qualcuno si è messo a studiare il mio codice sorgente, fino a trovare il modo di propormi una modifica in grado di ingannarmi! Io gli offrirei subito una cena! :-D Cogli la differenza profonda? - L'Open Source è uno strumento di marketing. - Il software libero è un movimento politico. Di conseguenza, - i software open source sono prodotti in vetrina - i software liberi sono progetti di ricerca aperta e creativa entrambi POSSONO essere utili, ma i primi si concentrano sul prodotto e sui servizi che ne derivano, mentre i secondi sono espressione creativa di comunità di sviuppatori. L'hack che per Linux o Firefox costituisce un danno d'immagine, per un software libero è un'occasione di imparare qualcosa di nuovo, di mettere in discussione le proprie abitudini e convinzioni... di imparare cose nuove ed inattese!
Una delle criticità a mio avviso ancora troppo poco affrontata, sebbene ben compresa dagli addetti ai lavori, sta esattamente nel linguaggio nelle quali sono espresse tali vulnerabilità: il C (e derivati come C++).
C++ è brutto e cattivo, ma mai quanto JavaScript. Nemmeno lontanamente. Il maggiore problema del C come linguaggio di programmazione non sono malloc/free (quello può al massimo essere un problema per i progetti open source :-D) ma la leggibilità, ridotta da una standard library folle e da alcune scelte sintattiche troppo "sintetiche". Però se le patch ingannevoli di Qiushi Wu sono arrivate nel tree stable di Linux, non è un problema di leggibilità (perché gli sviluppatori di Linux mangiano pane e C) o di memory safety (per la stessa ragione). E' SOLO un problema di eccessiva complessità. Per questo Rust non sarà una soluzione. E se lo diventasse, sarebbe una soluzione molto peggiore del problema.
Ma sai Giacomo qual'è l'ironia di tutto questo, l'ironia della vulnerabilità del software, anche quello Open Source... i nostri kernel e sistemi operativi, Linux compreso, nel 90% dei casi "girano" come macchine virtuali all'interno di un host derivato da MINIX3 del quale non non abbiamo il benché minimo controllo; quell'host ha accesso illimitato alla memoria RAM, al disco e alla rete senza che Linux manco se ne accorga e dispone di un comodo server web accessibile chissà come e con chissà quali credenziali. Di che sicurezza stiamo parlando? ;-)
Comunque Minix è scritto in C. :-P Giacomo PS: Uno degli errori di Jehanne (che mi è costato un sacco di fatica) è stato scegliere GCC. Errore enorme, che io NON avrei dovuto fare. GCC ed LLVM non sono affidabili: sono troppo grandi. Mi fu fatto notare, ma pensai che non fosse così importante. Sbagliavo. Fortunatamente il C è un linguaggio che può essere compilato da poche migliaia di righe di codice: https://bellard.org/tcc/ Il successore di C dovrà essere ancora più semplice.