Android e la libertà degli utenti
di Richard StallmanIn che misura Android rispetta la libertà degli utenti? Per l'utente di un computer che dà valore alla propria libertà questa è la domanda principale da porsi riguardo a qualsiasi sistema software.
Nel movimento per il software libero noi sviluppiamo software che rispetta la libertà degli utenti affinché tutti assieme possiamo evadere dal software che non rispetta la nostra libertà. Al contrario, l'idea dell' “open source” si centra principalmente sulla metodologia di sviluppo; è una diversa corrente di pensiero il cui valore massimo è la qualità del codice piuttosto che la libertà. Perciò la questione da porsi qui non è se Android sia “open source”, ma se garantisce la libertà degli utenti.
Android è un sistema operativo per telefoni cellulari ed altri dispositivi formato da Linux (il kernel di Torvalds), alcune librerie, una piattaforma Java ed alcune applicazioni. A parte Linux, il software delle versioni Android 1 e 2 è stato sviluppato principalmente da Google; Google lo rilasciò sotto licenza Apache 2.0, una licenza libera permissiva sprovvista di copyleft.
La versione di Linux inclusa in Android non è completamente libera dal momento che contiene “blob binari” (proprio come la versione del Linux di Torvalds), alcuni dei quali vengono effettivamente utilizzati in alcuni dispositivi Android. Le piattaforme Android utilizzano anche altri firmware proprietari come pure librerie proprietarie. A parte questi, il codice sorgente delle versioni 1 e 2 di Android, così come rilasciate da Google, è software libero – questo codice però non è sufficiente per il corretto funzionamento del dispositivo. Alcune applicazioni preinstallate in Android sono altrettanto proprietarie.
Android si differenzia radicalmente dal sistema operativo GNU/Linux poiché il componente GNU è in effetti minimo. Infatti l'unico elemento comune tra Android e GNU/Linux è Linux, il kernel. Coloro che in maniera erronea credono che “Linux” si riferisca alla combinazione completa di GNU/Linux rimangono interdetti allorquando confrontati con questi fatti e profferiscono argomenti paradossali come ad esempio: «Android contiene Linux ma non è Linux». (1). Una volta liberatisi da questa confusione, la situazione diventa chiara: Android contiene Linux ma non GNU; perciò Android e GNU/Linux sono essenzialmente molto differenti dal momento che l'unico elemento comune tra i due è Linux.
All'interno di Android, Linux il kernel rimane un programma separato, con il codice sorgente relativo sotto licenza GNU GPL versione 2. Combinare Linux con un codice sorgente sotto licenza Apache 2.0 comporterebbe la violazione del copyright, dal momento che la versione 2 della GPL e Apache 2.0 sono licenze incompatibili. Le voci di un'ipotetica conversione di Linux verso la licenza Apache operata da Google non rispecchiano la realtà; Google non può in alcun modo modificare la licenza del codice di Linux ed infatti non ha nemmeno tentato di farlo. Se gli autori di Linux ne permettessero l'uso sotto licenza GPL versione 3, allora quel codice potrebbe essere combinato con il codice distribuito sotto licenza Apache, e la combinazione potrebbe venire rilasciata come GPL versione 3. Linux però non è stato rilasciato in tale maniera.
Google ha soddisfatto i requisiti della GNU General Public License per Linux, però la licenza Apache delle parti rimanenti di Android non richiede il rilascio del codice sorgente. Google ha affermato che non rilascerà mai il codice sorgente di Android 3.0 (eccetto Linux). Il codice sorgente di Android 3.1 è stato altrettanto trattenuto, facendo di Android 3, escluso Linux, un software pienamente ed evidentemente proprietario.
Google affermò di aver trattenuto il codice sorgente della versione 3.0 a causa della presenza in esso di errori di programmazione e che le persone dovrebbero aspettare la versione successiva. Ciò potrebbe essere un buon consiglio rivolto a coloro che vogliono semplicemente avere accesso ad un sistema Android, però gli utenti dovrebbero avere il diritto di decisione in merito. In ogni caso, i programmatori e gli sperimentatori che desiderino includere modifiche nelle loro versioni personali potrebbero avvalersi benissimo di tale codice.
Fortunatamente, Google in seguito rilasciò il codice sorgente per Android 3.* assieme alla versione 4 (rilasciata altrettanto con il codice sorgente). Il problema discusso sopra risultò essere una aberrazione momentanea piuttosto che un cambiamento di rotta nella politica di Google in relazione ad Android. Comunque, ciò che accade una volta può sempre ripetersi nuovamente.
Ad ogni modo, il più del codice sorgente di Android è stato rilasciato in qualità di software libero. Ciò significa che i dispositivi con queste versioni di Android rispettano la libertà dell'utente? No, per vari motivi la risposta a tale domanda è negativa.
Innanzitutto la maggior parte dei dispositivi in questione contengono applicazioni proprietarie di Google che comunicano con servizi come YouTube e Google Maps. Questi non fanno ufficialmente parte di Android, ma ciò non rende tali dispositivi più accettabili dal punto di vista etico. Molte applicazioni libere disponibili nelle versioni più vecchie di Android sono state sostituite da applicazioni proprietarie; nel 2013 comparvero dispositivi Android in cui la visione di immagini non era possibile se non attraverso un'applicazione proprietaria di Google+. Nel 2014 Google annunciò che le versioni di Android per le TV, gli orologi e le automobili saranno ampiamente non libere.
La maggior parte dei dispositivi Android vengono venduti con il software proprietario Google Play preinstallato (precedentemente “Android Market”). Tale software incoraggia gli utenti, con un account Google, ad installare applicazioni proprietarie. Inoltre Google Play contiene una backdoor attraverso la quale Google può forzatamente installare o rimuovere applicazioni. (Probabilmente ciò fa di Google Play una backdoor universale, anche se questo non è stato dimostrato.) Google Play non fa ufficialmente parte di Android, ma ciò non lo rende più accettabile dal punto di vista etico.
Google ha spostato molte funzioni di base nella Google Play Services library (non libera). Se il codice di una app è libero ma usa questi servizi, in concreto la app è non libera perché non può funzionare su una versione libera di Android, come Replicant.
Se tenete in gran conto la libertà, non installerete le applicazioni proprietarie offerte da Google Play. Per installare applicazioni libere per Android non vi serve Google Play poiché potete ottenerle da f-droid.org.
I dispositivi Android inoltre contengono librerie proprietarie. Queste non fanno ufficialmente parte di Android, ma dal momento che diverse funzionalità di Android dipendono da esse, le stesse fanno effettivamente parte di ogni installazione di Android.
Perfino i programmi ufficialmente inclusi in Android potrebbero non corrispondere al codice sorgente rilasciato da Google. I produttori potrebbero modificare tale codice e spesso il codice modificato non viene accompagnato dal codice sorgente. La licenza GNU GPL li obbliga a ridistribuire il codice sorgente delle loro versioni di Linux, ammesso che essi rispettino la licenza. Il resto del codice, sotto la licenza debole Apache non richiede il rilascio della versione di Android che questi dispositivi effettivamente contengono.
Un utente confermò che diversi programmi del sistema Android preinstallati nel suo telefono cellulare vennero modificati affinché inviassero dati personali a Motorola. Alcuni produttori occultano nel dispositivo Android un pacchetto di sorveglianza universale come ad esempio l'IQ Carrier.
Replicant è la versione libera di Android. I programmatori di Replicant hanno sostituito molte delle librerie proprietarie per alcuni modelli di smartphone. Le applicazioni proprietarie sono state rimosse, ma comunque voi non vorreste usarle dal momento che sono proprietarie. D'altra parte CyanogenMod (un'altra versione modificata di Android) non è free software dal momento che contiene alcuni programmi proprietari.
Molti dispositivi Android sono “tiranni”: sono progettati in modo che l'utente non possa installare od eseguire alcun software personalmente modificato bensì solamente le versioni approvate dalla relativa società. In tal caso i file eseguibili non sono software libero anche se ottenuti da codice sorgente libero e disponibile all'utente. Tuttavia, su alcuni dispositivi Android possiamo ottenere i permessi di “root” al fine di installarvi diversi tipi di software.
Firmware e driver importanti sono generalmente altrettanto proprietari. Questi ultimi gestiscono la rete cellulare, il WiFi, il bluetooth, il GPS, la grafica 3D, la videocamera, l'altoparlante e in alcuni casi persino il microfono. In alcuni dispositivi un paio di questi driver sono liberi e poi ci sono alcuni driver di cui potreste farne a meno – ma certamente il dispositivo necessita di un microfono e di una rete cellulare per un corretto funzionamento.
Il firmware della rete cellulare viene preinstallato nel dispositivo. Qualora la sua unica funzione fosse quella di comunicare con la rete cellulare allorquando e solo quando l'utente lo desiderasse potremmo considerarlo come equivalente di un circuito. Quando marchiamo con insistenza il concetto che il software in un dispositivo di calcolo deve essere libero, possiamo ignorare il firmware preinstallato che non sarà mai aggiornato poiché per l'utente non fa nessuna differenza se si tratta di un programma o di un circuito.
Sfortunatamente, in questo caso si tratta di un circuito malevolo. Funzionalità malevole sono inaccettabili a prescindere dalla natura della loro implementazione.
Nella maggior parte dei dispositivi Android tale firmware esercita un controllo talmente grande sul dispositivo da poter trasformare il telefono in una microspia. In alcuni dispositivi tale firmware controlla il microfono. In altri può appropriarsi del totale controllo del computer principale attraverso la memoria condivisa, e in tal modo può raggirare o rimpiazzare qualunque software libero installato nel dispositivo. Con alcuni, e forse tutti i modelli, è possibile esercitare un controllo remoto di tale firmware al fine di sovrascrivere il resto del software presente nel dispositivo. Il punto principale del software libero è quello di garantire all'utente il controllo del suo software e il modo d'uso del computer stesso; un sistema provvisto di backdoor è inammissibile. Nonostante sia certamente vero che ogni sistema di calcolo può contenere bug, è altrettanto vero che questi dispositivi sono veri e propri microfoni spia. (Craig Murray, nel libro Omicidio a Samarcanda, racconta del suo coinvolgimento in una operazione di intelligence che convertì a distanza il cellulare non-Android dell'ignaro bersaglio in una microspia.)
Ad ogni modo, il firmware della rete cellulare di un telefono Android non è l'equivalente di un circuito poiché l'hardware rende possibile l'installazione di nuove versioni, e di fatto esegue l'installazione di nuove versioni. Essendo il detto firmware proprietario, in pratica solo il produttore può creare versioni aggiornate – non gli utenti.
Sommando i punti precedentemente elencati, potremmo tollerare il firmware proprietario della rete cellulare soltanto qualora avessimo la garanzia che nuove versioni di esso non saranno caricate, che non prenderà il controllo del computer principale ed infine sia in grado di comunicare con la rete solo quando, e nella maniera in cui, il sistema operativo libero permetta che tale comunicazione avvenga. Detto altrimenti, il firmware deve essere equivalente a un circuito elettrico, e tale circuito non deve essere malevolo. Non vi è un ostacolo di natura tecnica che impedisca la produzione di un telefono Android provvisto di tali caratteristiche, ma a nostra conoscenza un telefono del genere non esiste.
Android non è un sistema self-hosting; Android deve essere sviluppato in un altro sistema. Gli strumenti del “software development kit” (SDK) di Google sono in apparenza software libero, ma è molto difficile verificarlo. I file di definizione per alcune API di Google sono proprietarie. L'installazione del SDK richiede la sottoscrizione di una licenza software proprietaria, sottoscrizione che voi dovete declinare. L'SDK di Replicant ne è un sostituto libero.
Di recente l'attenzione della stampa si è focalizzata sulle dispute brevettuali. Da 20 anni conduciamo campagne per l'abolizione dei brevetti software e avvisiamo del rischio concreto del verificarsi di tali dispute. I brevetti software potrebbero forzare l'eliminazione di diverse caratteristiche da Android, o persino renderlo indisponibile. Vedasi endsoftpatents.org per ulteriori informazioni sul perché è necessario abolire i brevetti software.
Tuttavia l'assalto ai brevetti e la risposta di Google non sono direttamente attinenti all'argomento trattato in questo articolo: la modalità in cui i prodotti Android rispettano soltanto parzialmente un sistema etico di distribuzione e la natura in cui gli stessi vengono meno a tale compito. Tale questione merita una equa attenzione della stampa.
Android è un importante passo in avanti verso alla realizzazione di un telefono cellulare etico, controllato dall'utente e basato sul software libero, ma la strada è ancora lunga e Google la sta percorrendo nella direzione sbagliata. Gli hacker stanno lavorando su Replicant, ma il supporto di un nuovo modello di dispositivo è un compito difficile, cosa a cui si aggiunge il problema del firmware. Anche se i telefoni Android oggigiorno sono notevolmente meno nocivi rispetto ai telefoni della Apple o quelli Windows, certamente non possiamo affermare che rispettino la vostra libertà.
Nota
- Una esemplificazione paradossale di questo tipo di confusione di termini appare sul sito linuxonandroid.com, dove si offre assistenza nella «installazione di Linux [sic] sul vostro dispositivo Android». Questo è assolutamente erroneo: ciò che essi installano è una versione del sistema GNU, eccetto Linux, il quale è già parte integrante di Android. Dal momento che il sito web in questione supporta soltanto distribuzioni di GNU/Linux non libere noi non lo raccomandiamo.
Originariamente pubblicato sul sito The Guardian
Sostenete la campagna Liberate il vostro Android.