La storia di CommonsCloud: scelte tecniche

postato in: Uncategorized | 0

Questo articolo risponde alle numerose domande ricevute da quando abbiamo lanciato su Goteo una campagna di crowdfunding per la piattaforma cooperativa CommonsCloud. La prima parte spiega le idee da cui siamo partiti, quale Software Libero abbiamo scelto finora, e come è stato integrato. La seconda parte descrive alcune idee e proposte per il futuro del progetto.

 

Come siamo arrivati qui, e dove siamo diretti

CommonsCloud è una piattaforma per la collaborazione online, alternativa a soluzioni proprietarie come Google Drive, che rispetta la privacy e non sfrutta in alcun modo i dati inseriti dai suoi utenti. L’ambizione del progetto CommonsCloud è fornire un’alternativa alle piattaforme cloud proprietarie, che sia sotto il completo controllo dei suoi utenti, replicabile e installabile da chiunque perché Software Libero, e ben documentata. In pratica, CommonsCloud permette a grupppi di utenti di creare, modificare e conservare online documenti o calendari, nonchè di gestire progetti e facilitare discussioni e decisioni collettive.

CommonsCloud è sviluppato da un’alleanza di diverse organizzazioni che promuovono il Software Libero e la sovranità digitale, a partire da applicazioni web già disponibili e integrandole in un unico ambiente facile da usare, i cui utenti possano aiutarsi a vicenda e diventare sempre più consapevoli delle possibilità di autogoverno offerte dalle piattaforme digitali.

Tutti gli utenti di CommonsCloud, che siano organizzazioni o singoli individui, hanno voce in capitolo su come la piattaforma dovrebbe funzionare, tramite la cooperativa femProcomuns. In quanto membri della cooperativa, gli utenti divengono coproprietary di CommonsCloud, pagando una quota mensile per i servizi ricevuti. Chi vuole semplicemente provare il servizio, o contribuire attivamente ai progetti di altri utenti, può avere un account gratuito con accesso ai servizi base. In generale, chiunque può scegliere quanto contribuire, in base ai suoi bisogni e capacità.

Nei giorni scorsi abbiamo iniziato una campagna di crowdfunding per CommonsCloud su Goteo, e questo ha portato molte persone a chiederci più informazioni sul progetto. La prima parte di questo articolo spiega le idee da cui siamo partiti, quale Software Libero abbiamo scelto finora, e come è stato integrato. La seconda parte descrive alcune idee e proposte per il futuro del progetto.

Breve storia e ispirazioni di partenza

 

Non volevamo reinventare alcuna ruota, per non imbarcarci in qualcosa troppo ambizioso per essere realizzato. FKI e tutte le altre organizzazioni che partecipano alla CommonsCloud Alliance hanno esperienze precedenti di autogestione e hosting di Software Libero per applicazioni web, da wiki a taiga, RedMine o tavole WeKan per autogestione di progetti con metodologie kanban/agile, con software come owncloud o NextClouds, o server come Asterisk (VoIP), Etherpad o RocketChat.

Ma il problema di tutte queste applicazioni è che vanno gestite individualmente: per usarle tutte, i nostri utenti devono creare e gestire altrettanti account indipendenti, e la collaborazione effettivamente possibile fra organizzazioni diverse è limitata. Oltre a questo, le applicazioni sono tante che seguirle, configurarle e mantenerle aggiornate tutte è un lavoro non trascurabile, che nessuno potrebbe fare da solo. Per tutte queste ragioni, oltre al fatto che gli strumenti già offerti dalle grandi multinazionali sono molto flessibili e “additivi”, è necessario costruire piattaforme alternative lavorando insieme.

Di piattaforme che facilitano la configurazione e gestione integrata di tante applicazioni web, riducendo al minimo lo sforzo necessario, ne esistono già diverse. Ecco qualche informazione su quelle che abbiamo provato noi di CommonsCloud.

A partire da settembre 2016 abbiamo installato e gestito in proprio un server Sandstorm. FKI la sua istanza di Sandstorm l’ha sperimentata su qualche dozzina di utenti e progetti.

Sandstorm permette di installare con un click oltre 40 applicazioni e cripta i dati di ogni utente in atrettanti “grani” (grains) che sono configurabili con grande flessibilità. Nonostante questo, abbiamo constatato che in Sandstorm non è particolarmente facile ritrovare le singole informazioni inserite nelle varie applicazioni, soprattutto quando si lavora su vari progetti indipendenti. Un altro problema è che gli utenti si ritrovano davanti una interfaccia utente diversa per ogni applicazione, anche se è sempre all’interno della stessa “cornice” di Sandstorm. Per questi motivi Sandstorm, che è comunque un progetto molto interessante, non è proprio quello che cercavamo.

Dopo aver provato Sandstorm, siamo passati a studiare Cloudron. Ne abbiamo installato alcune copie, discusso con i suoi sviluppatori e provato una dozzina di applicazioni. Anche in questo ambiente è possibile installare ogni applicazione con un click, ognuna nel suo container Docker, e con manutenzione ridotta al minimo. Gli sviluppatori di Cloudron offrono un buon servizio di aggiornamenti software semiautomatici, anziché manuali, al costo di 8 Euro al mese. Una soluzione probabilmente più vicina di Sandstorm a quanto stavamo cercando, ma che ancora, secondo noi, non ci lasciava sufficiente controllo sulle singole applicazioni. Adatta a gruppi che non hanno alcuna esigenza o competenza di amministrazione diretta di sistemi, ma non a noi.

Un progetto diverso, e di grande ispirazione, è quello francese chiamato Framasoft, che offre come servizi web molte applicazioni accessibili con un solo account: fogli elettronici, videoconferenza, editor, interfacce tipo Doodle per organizzazione di riunioni (framadate), calendari, mappe mentali e così via. Una caratteristica interessante di Framasoft è che il loro modello di sostenibilità si basa soprattutto su donazioni e un’alleanza di organizzazioni che contribuiscono a svililuppatori principali, 35 membri del progetto e circa 300mila utenti. Anche qui, comunque, ci sono differenze rispetto a quanto stiamo cercando di realizzare con CommonsCloud.

Dopo diversi workshop per studiare la questione abbiamo deciso di ridurre il numero di interfacce. Invece di proporne qualche dozzina, CommonsCloud ne offre tre, che complessivamente hanno parecchie funzioni, ma cercando di integrarle il più possibile. Un’altra differenza con Framasoft è che noi partiamo come cooperativa, in cui gli utenti della piattaforma sono anche i suoi proprietary. Ma la campagna di Framasoft per “De-googlizzare-Internet” ci piace!

In dettaglio, quando e come è nata e cresciuta CommonsCloud? La prima riunione per lanciarla ha avuto luogo a gennaio 2017, con dieci partecipanti in rappresentanza di diverse organizzazioni di Barcellona, per condividere tutte le esperienze già descritte nei paragrafi precedenti. Un altro progetto interessante che abbiamo considerato è Cloudy, che i nostri amici di Guifi.net e UPC stanno sviluppando come infrastruttura per cloud GNU/Linux, e Cozy per “cloud personali”.

In parallelo, il membro del board FKI Marco Fioretti ha lavorato saltuariamente, negli ultimi cinque anni, su una proposta di architettura per nuvole personali chiamata “PERcloud”, che ogni utente potrebbe installare su un suo computer, oppure presso un qualsiasi fornitore di Web hosting, come se fosse un normale blog WordPress, gestito dall’utente stesso o dal provider (“percloud-as-a-service”). Questa visione ha influenzato la progettazione dell’architettura di CommonsClooud, anche se questa è una proposta specificamente per cloud collettive, di proprietà comune dei loro utenti. Dopo un’altra sessione di progettazione in comune durante il Mobile Social Congress 2017 a Barcellona abbiamo creato un gruppo di lavoro internazionale sul wiki di FKI e una mailing list dedicata a CommonsCloud. Da lì il lavoro è continuato online e offline, parallelamente alla costituzione della cooperativa femProcomuns, fino a oggi, quando siamo pronti per il passo successivo e cioè iniziare la fase di produzione.

Architettura software

Criterio di base: mantenerla semplice, e nasconderne la complessità agli utilizzatori finali.

Un solo account per l’accesso a tutte le applicazioni
La prima cosa che tutte le piattaforme già citate hanno in comune è un server che permette a ogni utente di accedere a tutti i servizi con un solo account, tramite una sola operazione di log-in (single sign-on). LDAP , ovvero il “Lightweight Directory Access Protocol” è lo standard aperto normalmente usato per creare e gestire elenchi di utenti, e molte applicazioni web già hanno plugin per effettuare l’autenticazione tramite server LDAP.

Noi abbiamo configurato il server LDAP di CommonsCloud in maniera di permettere ad altre organizzazioni di unirsi al progetto e condividere lo stesso server e insieme di account. Ogni utente può far parte di diverse gruppi (unità organizzative, OU per brevità) e ogni OI può usare diversi servizi e gruppi di accesso ai medesimi (ACL, Access Control Lists). Sappiamo tutti quanto è importante l’aggiunta di nuovi utenti, e il fatto che sia più facile e, allo stesso tempo, più sicura possibile. Per questo motivo, e considerando quanto è cruciale tenere sotto controllo spam e account fasulli, la nostra procedura di aggiunta utenti prevede una loro validazione “manuale”, strutturata come segue:

  • gli utenti si registrano fornendo un indirizzo email, che viene verificato, e indicando la loro organizzazione primaria di appartenenza
  • gli amministratori di quella organizzazione accettano quell’utente e ne attivano l’account
  • l’utente imposta la sua password, e a quel punto ha accesso a tutti i servizi comuni dell’intera piattaforma, più tutti quelli aggiuntivi eventualmente disponibili per la sua organizzazione primaria.

Da quel momento in poi l’utente può configurare il suo profilo, nonchè richiedere di aggregarsi ad altre organizzazioni e usarne i rispettivi servizi. Uno dei nostri sviluppatori ha sviluppato un’interfaccia apposita per facilitare queste operazioni, ma rimane ancora parecchio lavoro da fare per semplificarla il più possibile.

Phabricator – piattaforma per la gestione collettiva di PROGETTI

Accogliendo le richieste dei nostri utenti abbiamo individuato innanzitutto tre aree di applicazioni, e selezionato per ognuna di loro l’applicazione che ci sembrava più solida, e allo stesso tempo strategica, in quel campo.
Phabricator è una piattaforma per gestire progetti in gruppi aperti, o chiusi, tramite metodologie “agile” e tabelloni Kanban (Trello, Wekan, Kanboard) con dozzine di applicazioni supplementari. Phabricator fornisce per esempio delle “cassette di sicurezza virtuali” (locker) in cui si possono conservare password e altri dati riservati. Le applicazioni disponibili includono, fra le altre cose, un wiki gerarchico, un sistema di gestione della documentazione, uno per fare sondaggi, blocchi appunti e blog.

I membri dell’Associazione Software Libero di Barcellona, che fanno parte dell’alleanza per CommonsCloud, hanno condiviso con gli altri partecipanti l’esperienza della comunità KDE mondiale, che usa proprio Phabricator per gestire lo sviluppo di sofware. Anche la comunità di Wikipedia si organizza sfruttando una sua copia di Phabricator. Da questo si vede che Phabricator non serve solo per gestire sviluppo software (come ad esempio github), ma fornisce un vasto insieme di strumenti utili a qualsiasi gruppo, anche di non-tecnici, con cui gestire in comune attività produttive, di qualsiasi tipo.

NextCloud: l’ambiente per l’ufficio online
NextCloud è un fork del progetto ownCloud, che in molti oggi considerano come la migliore piattaforma online non proprietaria su cui condividere documenti, contatti ecalendari. Con i plugin adatti, Nexcloud consente anche l’editing collaborativo di documenti da ufficio. Questa applicazione è quella che, secondo noi, può consentire finalmente ai nostri utenti di non avere più bisogno di Google Drive.

In NextCloud, ci sono diverse opzioni per gestire online documenti da ufficio. Noi per ora abbiamo scelto e integrato per questo scopo il server LibreOffice di CollaboraOffice. Ci sono anche altre possibilità, come Only Office, per avere lo stesso servizio. Al momento stiamo esplorando insieme qual è la migliore, perché sappiamo bene che se i nostri utenti hanno bisogno di queste capacità, per non dover più dipendere da Google Drive.

In ogni caso, una delle caratteristiche più interessanti di NextCloud è la sincronizzazione di file, calendari e contatti attraverso tutti i dispositivi di ogni utente, da computer a smartphone e tablet. Quando si inizia a scrivere un documento online, si può continuare a farlo con la propria copia locale di LibreOffice e poi riprendere su uno qualsiasi degli altri dispositivi: in qualsiasi caso, l’intero gruppo di lavoro avrà sempre accesso all’ultima versione di ogni documento condiviso, automaticamente.

Oltre alle funzioni già citate, NextCloud ha di recente aggiunto la possibilità di creare “Circoli” (circles) che consentono a ogni utente di creare e gestire gruppi di altri utenti, con cui condividere velocemente qualsiasi documento. Oltre a questo, stiamo studiando anche i Gruppi NextCloud che possiamo gestire direttamente tramite gli elenchi di utenti LDAP, e che permettono a tutti i membri di una stessa organizzazione di condividere automaticamente i loro documenti, calendari e contatti.

NextCloud ha parecchie altre funzioni attivabili tramite plugin, ma finora non le abbiamo incluse in CommonsCloud. Prima di farlo vogliamo che la comunità degli utenti iniziali si abitui alle prime tre piattaforme che abbiamo integrato, per poter poi decidere insieme quali altre funzioni aggiungere e come.

Discourse è l’AGORA di CommonsCloud, dove si discute e decide insieme

Le discussioni online, per essere efficaci, devono svolgersi in un ambiente adeguato, che permetta a persone con abitudini e capacità diverse di collaborare. C’è chi si trova bene con i forum online, e chi con le mailing list. Noi troviamo che Discourse combini entrambi gli ambienti in maniera flessibile, facile da usare e che completa molto bene le altre due piattaforme base di CommonsCloud.

Aspetti dell’esperienza utente

Come abbiamo già detto, una delle prime decisioni prese per CommonsCloud è stata quella di limitare il numero di interfacce diverse, e quindi di paittaforme. Per questo oggi ne abbiamo solo tre, cioè Phabricator, NextCloud e Discourse, più l’interfaccia web per aggiungere e gestire utenti tramite il server LDAP. Nel futuro cercheremo di aggiungere applicazioni scegliendole fra quelle già disponibili all’interno di quegli stessi tre ambienti, ma sicuramente aggiugeremo altre piattaforme nel prossimo futuro.

Per esempio OdooCoop è una piattaforma per l’autogestione economica di progetti di economia sociale e solidale, che stiamo sviluppando, tramite un’altra alleanza, nell’ambito della cooperativa femProcomuns. L’aggiunta di altre piattaforme dipenderà dalle richieste degli utenti, e dalle proposte da parte degli sviluppatori.

Un altro aspetto dell’esperienza utente è il processo di aggiunta utenti (onboarding). In base a nostre esperienze precedenti, preferiamo mantenerlo non completamente automatico, per evitare rischi di spam. D’altra parte renderlo completamente manuale rallenterebbe di sicuro l’aggiunta di utenti. Per questo abbiamo scelto una strada intermedia, in cui i nuovi utenti dichiarano a quale “organizzazione primaria” appartengono, e gli amministratori di sistema ne validano gli account.

Un terzo aspetto, da sviluppare, è la combinazione dei servizi pubblici di CommonsCloud, cioè le tre piattaforme appena descritte, e di quelli privati attivabili per le singole organizzazioni all’interno di CommonsCloud. Ogni utente, per esempio, può avere accesso sia alla copia pubblica di NextCloud contenuta in CommonsCloud, sia a quelle private accessibili solo ai membri della sua stessa organizzazione. L’interfaccia utente definitiva di CommonsCloud dovrà combinare tutte queste possibilità in maniera pulita e facilmente comprensibile

Modalità di produzione di CommonsCloud

Il modo di produrre e gestire i servizi descritti qui è coerente, per quanto possibile, con le motivazioni della “missione” iniziale condivise da tutti i partecipanti. In particolare, in CommonsCloud possiamo distinguere tre livelli di ingaggio e partecipazione:

  • un “driving team”, ovvero una squadra che conduce le operazioni, composta da sviluppatori software, amministratori di sistema, designer, esperti di comunicazione e altro. Queste sono le persone che effettivamente svolgono il lavoro, e le prime a essere pagate, in proporzione al loro contributo, quando sono disponibili degli introiti;
  • i membri dell’alleanza per CommonsCloud: queste sono le organizzazioni che condividono le proprie competenze di ricerca e sviluppo, e partecipano alle decisioni strategiche, perché sono loro che hanno voluto che questo progetto prendesse il via;
  • Gli utenti finali: tutti coloro che sono consapevoli che occorre costruire collettivamente, come Beni Comuni, alternative concrete ai servizi cloud offerti dalle multinazionali, e che per questo contribuiscono alla loro realizzazione, in proporzione ai loro bisogni e capacità. Questi utenti finali possono essere singoli individui, oppure intere organizzazioni che hanno bisogno di una loro “copia privata”, per il loro lavoro, di uno o tutti i servizi disponibili in CommonsCloud.

IIl modello di governance di tutto questo lavoro di sviluppo e gestione delle piattaforme di CommonsCloud verrà descritto in articoli successivi. Nel frattempo, di dettagli da definire ne restano ancora parecchi, ma ora conoscete le linee guida fondamentali su cui stiamo lavorando per realizzare i nostri obiettivi. Unitevi a noi per contribuire alla crescita di CommonsCloud!