Ho già parlato del cloud in precedenza. Sento però la necessità di ribadire alcuni concetti e di darvi qualche spunto di riflessione su quello che sembra la deriva inevitabile dei prossimi anni. Non perché mi piaccia essere ripetitivo bensì perché penso di poter offrire una visione più pulita del fenomeno e inoltre l’irruzione del “cloud selvaggio” mi spaventa poco a poco sempre di più. Mi sembra infatti che il cloud stia pian piano strappando via la mia possibilità di maneggiare le applicazioni, di sentirle “mie” e di poterne avere sempre e comunque accesso.
Viviamo infatti in un mondo fatto di bande larghe, di spostamenti frenetici, computer che si rimpiccioliscono, telefoni che si ingrandiscono e connettività sempre più estesa e radicata (tranne in Italia, ovviamente). E’ chiaro quindi che, in una struttura sociale e tecnologica del genere, diventa sempre più importante la possibilità di collocare dati e applicazioni personali in luoghi virtualmente sempre accessibili.
Un professionista può svolgere il proprio lavoro nel suo ufficio e andare a casa sicuro che, nel caso abbia la necessità di modificare urgentemente un documento, può benissimo accedere agli stessi strumenti e agli stessi documenti del posto di lavoro. Uno studente può scrivere la sua tesi su qualunque dispositivo, portatile, computer dell’università, computer di casa, senza doversi porre il problema di dover sincronizzare le varie versioni del suo lavoro. O più semplicemente, chi come me scrive circa diecimila caratteri al giorno fra guide e altri testi e è sistematicamente connesso da computer diversi, non deve più preoccuparsi di non poter accedere ai suoi documenti.
Questo si chiama Cloud Computing. Tale parola vuole proprio rappresentare lo stato di vaporizzazione che assumono dati e applicazioni in questo sistema di networking. I documenti e i dati dell’utente sono a nuvola per l’intera rete internet, perdono cioè la loro collocazione fisica per rinascere come la fenice in una forma di pura essenza di dati.
In realtà una collocazione fisica ce l’hanno e come essendo, per forza di cose, immagazzinati in centinaia di server sparsi per il mondo, in molteplice copia, insieme ai dati di migliaia di altri utenti. Un pensiero che può far rabbrividire alcuni di voi a primo impatto ma che, in realtà, è uno scenario piuttosto normale. Tenere dei dati in server cloud non è più pericoloso che tenerli nel nostro pc e, anzi, forse lo è anche meno.
Ma tralasciamo il concetto della privacy, tema caldo e complesso, e concentriamoci su altri aspetti legati alle libertà digitali a me tanto care. Il punto da cui partiamo è semplice: le applicazioni cloud servono. Indipendentemente dai nostri gusti e visioni del mondo la comodità di utilizzare sistema cloud è indubitabile. Le utilizzo anche io anche se, come vedremo, rischiano di essere un grave intralcio alle mie libertà digitali.
A questo punto però ci troviamo di fronte a due scenari del tutto contrapposti. Da una parte abbiamo la necessità di utilizzare facilmente applicazioni cloud, dall’altra le minacce di inaccessibilità dei dati in caso di disconnessione, l’impossibilità di accedere al sorgente dell’applicazione (e, nel caso fosse disponibile, l’impossibilità di verificare che il software eseguito sia esattamente quello corrispondente ai sorgenti) e altre magagne ci spingono a vedere il cloud come una seria minaccia a tutto quello che abbiamo: programmi liberi, dati privati, ecc…
Esiste però un modo per conciliare le due cose? Si. Una sorta di cloud leggero che non è completamente decentralizzato: invece di decentralizzare dati e applicazioni permanentemente si effettua una delocalizzazione parziale. Ma andiamo a vedere i punti fondamentali.
DATI
Punto primo. I dati non sono tenuti in remoto ma vengono sincronizzati a due tempi (file modificato -> aggiornamento su server remoto -> aggiornamento su altra piattaforma). Questo problema risolve di colpo due bei problemi:
- I dati sono su un server remoto come nel caso di un cloud puro. Tuttavia utilizzando tecnologie Zero-Knowledge, attuando cioè un processo di codifica/decodifica solo sui terminali finali, è possibile offuscare i dati sul server in modo matematicamente sicuro.
- I dati sono sempre accessibili. Il meccanismo garantisce che almeno su un terminale dell’utente sia presente la versione super-aggiornata dei dati. Il server non può quindi “sequestrare i dati” per nessun motivo. Inoltre i dati sono anche gestibili come file tradizionali e quindi, in caso di mancata connessione ad internet in uno dei terminali è possibile effettuare la sincronizzazione “alla vecchia maniera”.
Quest’approccio è già utilizzato da molti servizi come UbuntuOne o Dropbox. Questi servizi sono un ottima alternativa, per il momento, al cloud puro.
APPLICAZIONI
Le applicazioni cloud non sono comode solamente perché ci permettono di accedere ai dati in qualunque momento e in qualunque luogo ma anche perché la stessa applicazione è disponibile ovunque con le stesse configurazioni, sempre aggiornate e funzionanti.
Qui la faccenda è più complicata. Si potrebbe infatti attuare un meccanismo di sincronizzazione per le configurazioni e le applicazioni analogo a quello dei dati. Le configurazioni infatti sono fondamentalmente dei file. La soluzione semplicistica è quindi:
- Creare un architettura che sincronizzi dinamicamente anche le configurazioni dell’utente nelle varie applicazioni. Una cosa simile sembra sarà implementata da OwnCloud, progetto per KDE e permetterà di sincronizzare tutte le configurazioni della galassia applicativa di KDE.
- Creare un architettura che sincronizzi dinamecamente le applicazioni. Questa cosa non è molto difficile da implementare su GNU/Linux in quanto si tratta solamente di opportune chiamate ai vari gestori pacchetti.
Quest’approccio ha però limiti evidenti. In primis il sistema è OS-Dipendent. Secondo devo avere la possibilità di installare applicazioni sul mio sistema. Questo non è un problema per utenti che utilizzano il computer solamente da terminali di proprietà ma può diventare problematico in alcuni casi frequenti: non è possibile utilizzare le proprie applicazioni se si accede ad internet da computer di cui non si è proprietario (università, hotel, casa di un amico e roba simile) oppure da computer in cui si è, per scelta o per necessità, installato un sistema operativo differente ed incompatibile con quello installato nella nostra macchina principale.
SOLUZIONI?
Qui si va nella pura speculazione di idee. Non ho soluzioni ma semplicemente alcune domande la cui risposta potrebbe essere un buon inizio.
- Chi ha sviluppato il protocollo X11, 23 anni fa, è stato tremendamente lungimirante. Tale protocollo come ben sapete permette infatti di rendere disponibili finestre che mostrano l’interfaccia di programmi che girano in remoto! È possibile, quindi, rendere disponibile un database remoto di applicazioni da cui un utente può, in caso di emergenza, eseguire il programma senza averlo installato?
- È possibile far si che le applicazioni leggano le configurazioni che si trovano memorizzate in un server remoto (di quelli che sincronizzano le configurazioni fra pc di cui abbiamo parlato sopra)? Questo permetterebbe alle eventuali applicazioni remote del punto 1 di essere sempre correttamente configurate.
- È possibile creare un unica applicazione web-side che “emuli” un sistema X/SSH in modo da eseguire il protocollo X attraverso un browser? Questo permetterebbe di utilizzare tali applicazioni anche su sistemi non dotati di Xorg (vedi Windows).
- Nel caso in cui la risposta ad alcune domande sopracitate fosse no, sarebbe possibile adattare il protocollo grafico, le librerie o inserire un layer di astrazione fra le due, per rendere possibili queste cose?
Se la risposta a queste domande fosse si avremmo un corrispettivo completamente OpenSource e basato su applicazioni “reali” e locali che spaccherebbe le ossa al Cloud proprietario e completamente decentralizzato. Tuttavia non conosco la risposta di nessuna di queste domande. Spero comunque di avervi dato alcuni spunti di riflessione.