Ciao Davide, scusa il ritardo nella risposta. On December 26, 2020 9:11:39 AM UTC, D. Davide Lamanna wrote:
Un'altra cosa che mi ha colpito moltissimo è quando Giacomo parla di "sistema operativo distribuito". Quali sono le tue idee in merito, Giacomo?
C'è molto da dire: è una questione su cui lavoro da anni, seppur in modo discontinuo. Spero di non annoiare tutti... Detto in modo semplice, lo sviluppo di una società cibernetica dipende dall'infrastruttura di cui dispone, tanto quando lo sviluppo di un organismo vivente dipende dal suo DNA. Oggi utiliziamo sistemi operativi distribuiti piuttosto primitivi, come Chrome/Windows o Chrome/Linux. Questi sistemi sono evoluzioni sfilacciate del concetto di mainframe, anche quando stanno in tasca, occhi ed orecchie del grande fratello. La mia analisi è partita dall'osservare che i limiti dei sistemi operativi mainstream, come Windows, Linux, *BSD, focalizzati nella gestione di un singolo computer alla volta, è reso straordinariamente evidente dall'abuso delle tecnologie Web per la distribuzione di applicazioni. Questi sistemi erano troppo primitivi per realizzare complesse elaborazioni distribuite e si sono trovati così inadeguati da necessitare di una stampella, i browser, per supportare le crescenti esigenze cibernetiche della nostra società globale (pur politicamente divisa e frammentata). Così questa stampella è cresciuta a dismisura, raggiungendo e talvolta superando in complessità i sistemi operativi stessi. Ed ora, con WebAssembly (ma ancora prima con i Chromebook, ad esempio), questa stampella tenta l'attacco finale al sistema che lo ospita, come un parassita che dopo una lunga evoluzione possa finalmente affrancarsi dall'ospite di cui non ha più bisogno. Sia chiaro che non parliamo processi "naturali", ma di astute strategie politiche ed economiche realizzate attraverso l'informatica. Per esempio, l'uso di JavaScript per distribuire applicazioni serviva a ridurre il carico sui server, in modo che fossero gli utenti (e gli intermediari) a pagare l'energia necessaria alle aziende. Il fatto che ciò comportasse un enorme aumento dell'energia complessivamente necessaria per eseguire un'applicazione era irrilevante per queste aziende: ogni singola azienda spendeva meno e l'esternalità negativa risultava invisibile ad utenti e legislatori accecati dalla propria ignoranza informatica (e dalla propria supponenza economica). Così ci siamo ritrovati con sistemi operativi distribuiti ZOPPI, insicuri by design, Chrome/Windows o Chrome/Linux etc... E non è un caso che i più grandi cloud provider statunitensi siano "top contributor" nello sviluppo di questi sistemi, giacché hanno un enorme interesse politico ed economico nel guidarne la direzione. L'obiettivo era semplice: distribuire i costi dell'elaborazione, mantenendo pieno controllo di cosa viene elaborato dagli utenti. Questa stategia ha avuto grande successo anche a causa delle scarse alternative, poche, timide e piene di contraddizioni ed errori tecnici e strategici (ovviamente facili da individuare, in retrospettiva). Tuttavia non sarebbe difficile concepire (e con le risorse adatte, realizzare) sistemi operativi distribuiti alternativi, che semplicemente bypassino il Web ed i browser come sistema di distribuzione dell'elaborazione ed utilizzino protocolli alternativi, progettati per mettere l'utente in condizione di avere il pieno controllo sui dati e sulle elaborazioni che lo riguardano. 9front è un esempio interessante di sistema operativo distribuito che va in questa direzione, sebbene tutti i limiti del "worse is better" sono ben visibili nel protocollo 9P2000 e nel codice del kernel. Attenzione: su tratta della codebase migliore che abbia mai studiato! Ma è proprio la filosofia bottom-up che esprime a limitarne il potenziale: http://jehanne.io/2018/11/15/simplicity-awakes.html Personalmente ritengo si possa fare di meglio ripensando una architettura (ed un protocollo) simile, ma alla luce delle lezioni tecniche e politiche apprese grazie alla storia del Web. Usando cioé il filesystem come astrazione fondamentale per rappresentare elaborazione componibili ed un protocollo semplice per veicolarle attraverso la rete in modo sicuro. Immagina ad esempio di poter avviare dal tuo PC un programma in esecuzione sul server di un servizio metereologico, permettendogli di disegnare un'area del tuo schermo (o, a tua scelta, un file png senza che lui possa distinguere i due) stabilendo con precisione quali informazioni sul tuo sistema questo possa utilizzare. Potresti ad esempio fornire una localizzazione satellitare di tua scelta, per ottenere le previsioni in quella zona, senza che lui sappia dove ti trovi realmente o abbia modo di distinguere quelle coordinate, scritte su un file con un editor di testo, da quelle effettivamente fornite dal tuo navigatore. Mi dirai: ma sostituire il Web è ormai impossibile! Non lo è. Quanto meno, non come piattaforma applicativa. Ed infatti Google & friends ci stanno lavorando sodo, ma per sostituirla con una che rafforzi il loro potere, non con una capace di emancipare le persone che la useranno o supportare la sovranità democratica europea. D'altronde, se quanto affermo fosse accettabile quanto (ed in quanto) è tecnicamente evidente, non saremmo di fronte ad una egemonia culturale! Giacomo