Laihiuyeung Ryanne - CC byAndroid, le système d’exploitation de Google pour la téléphonie mobile, est-il véritablement un logiciel libre ?

C’est la question que s’est posée récemment Richard Stallman dans le colonne du Guardian.

« Presque » pourrait être une réponse optimiste. Mais c’est un presque subtil et complexe qui demande quelques explications et éclaircissements[1].

Parce qu’ici comme ailleurs, le diable se cache souvent dans les détails…

Android et la liberté des utilisateurs

Android and Users’ Freedom

Richard Stallman - 19 septembre 2011 - GNU.org
Traduction : Sylvain Le Menn - Creative Commons BY-ND

Dans quelle mesure est-ce qu’Android respecte les libertés de ses utilisateurs ? Pour l’utilisateur d’un ordinateur qui chérit la liberté, c’est la question la plus importante à se poser pour tout logiciel.

Dans le mouvement du logiciel libre, nous concevons des logiciels qui respectent les libertés des utilisateurs de sorte que vous comme moi puissiez échapper à l’emprise de ceux qui les dénient. Cela contraste avec l’idée de l’« open source » qui se concentre sur la façon de concevoir le code ; c’est une réflexion différente qui s’intéresse principalement à la qualité du code plutôt qu’à la liberté. Ainsi, le souci principal n’est pas de savoir si Android est « ouvert », mais s’il permet à celui qui l’utilise d’être libre.

Android est un système d’exploitation orienté principalement vers les téléphones portables. Il est constitué du noyau Linux (le noyau de Torvalds), quelques bibliothèques, une plateforme Java, et quelques applications. Sans parler de Linux, le logiciel d’Android versions 1 et 2 a été concu essentiellement par Google. Google l’a sorti sous la licence Apache 2.0, qui est une licence libre permissive sans copyleft.

La version de Linux incluse dans Android n’est pas un logiciel entièrement libre puisque qu’il contient des morceaux de code non libres (des « binary blobs »), tout comme la version de Torvalds de Linux, dont quelques-uns sont réellement utilisés dans des machines tournant sous Android. Les plateformes Android utilisent des microprogrammes non libres aussi, ainsi que des bibliothèques non libres. À part cela, le code source des versions 1 et 2 d’Android telles que faites par Google sont libres, mais ce code est insuffisant pour faire tourner l’appareil. Quelques applications qui viennent généralement avec Android sont aussi non libres.

Android est très différent du système d’exploitation GNU/Linux, car il contient très peu de GNU. En effet, le seul élément commun entre Android et GNU/Linux se résume à peu près à Linux, le noyau. Les gens qui font l’erreur de croire que « Linux » fait référence à la totalité de l’écosystème GNU/Linux s’emmêlent les pinceaux, et font des affirmations paradoxales telles que « Android contient Linux, mais ce n’est pas Linux ». Si nous évitons cette confusion au départ, la situation est simple : Android contient Linux, mais pas GNU. Ainsi Android et GNU/Linux sont majoritairement différents.

À l’intérieur d’Android, le noyau Linux reste un programme séparé, avec le code source sous licence GNU GPL version 2. Combiner Linux avec le code sous licence Apache 2.0 représenterait une violation du copyright, puisque les licences GPL version 2.0 et Apache 2.0 sont incompatibles. Les rumeurs que Google a d’une manière ou d’une autre fait passer Linux sous licence Apache sont fausses. Google n’a aucun pouvoir pour changer la licence du code de Linux, et n’a pas essayé de le faire. Si les auteurs de Linux autorisaient son usage sous la version 3 de la licence GPL, ensuite ce code pourrait être combiné avec un code sous licence Apache, et la combinaison pourrait être rendue publique sous licence GPL version 3. Mais Linux n’a pas été publié ainsi.

Google a respecté les règles de la licence GPL (General Public License ou Licence publique générale) pour Linux, mais la licence Apache sur le reste d’Android n’oblige pas à montrer le code. Google a dit qu’ils n’allaient jamais publier le code d’Android 3.0 (à part Linux), même si les exécutables ont été rendus disponibles pour le public. Le code source d’Android 3.1 est aussi retenu. Ainsi, Android 3, en dehors de Linux, est purement et simplement du logiciel non libre.

Google a dit qu’ils gardaient le code source de la version 3.0 parce qu’il était bogué, et que les gens devraient attendre la version d’après. Cela pourrait être un bon conseil pour ceux qui veulent juste faire tourner le système Android, mais les utilisateurs devraient être ceux qui prennent ces décisions. Et de toutes façons les développeurs et les bidouilleurs qui voudraient inclure des changements dans leurs propres versions pourraient très bien utiliser ce code.

Le fait de ne pas rendre publique deux versions du code source est source d’inquiétudes dans le sens que Google pourrait vouloir rendre Android propriétaire de manière permanente, que la publication de quelques versions d’Android ait été une stratégie temporaire afin d’obtenir l’aide de la communauté pour améliorer un logiciel propriétaire. Espérons que ce n’est pas le cas.

Dans tous les cas, la plupart du code source de plusieurs versions d’Android ont été publiées en tant que logiciel libre. Est-ce que ça veut dire que des machines qui utilisent ces versions d’Android respectent les libertés de l’utilisateur ? Non, ce n’est pas le cas pour plusieurs raisons.

Tout d’abord, la majorité des versions comprend des applications non libres de Google pour communiquer avec des services tels que Youtube et Google Maps. Celles-ci ne font pas officiellement partie d’Android, mais cela n’en fait pas un bon produit pour autant. Il y a aussi la présence de bibliothèques non libres. Qu’elles fassent partie d’Android ou pas est discutable, ce qui importe c’est que beaucoup de fonctionnalités en dépendent.

Même les exécutables qui font officiellement partie d’Android peuvent ne pas correspondre au code des versions de Google. Les constructeurs peuvent changer le code, et bien souvent ils ne publient pas le code source de leurs versions. La licence GNU GPL les oblige, en théorie, à redistribuer le code de leurs versions de Linux. Le reste du code sous licence Apache ne les oblige pas à publier le code source des versions qu’ils utilisent réellement.

Replicant, une version libre d’Android qui n’est compatible qu’avec quelques modèles de téléphones, a remplacé beaucoup de bibliothèques, et peut fonctionner sans les applications non libres. Mais il y a d’autres problèmes.

Certains modèles sont conçus pour empêcher leur propriétaire d’installer et de modifier le logiciel. Dans cette situation, les exécutables ne sont pas libres, même s’ils sont faits à partir d’une source libre qui est disponible pour vous. Cependant, certains appareils Android peuvent être «?rootés?», ce qui permet aux utilisateurs d’y installer d’autres logiciels.

Les micrologiciels importants et les pilotes sont généralement propriétaires aussi. Ceux-ci gèrent le matériel pour le réseau, la radio, le wifi, le bluetooth, le GPS, l’accélération 3D, l’appareil photo, les hauts-parleurs, et dans certains cas le microphone aussi. Sur certains modèles, quelques-uns de ces pilotes sont libres, et pour certains on peut s’en passer, mais le microphone et l’accès au réseau sont plutôt indispensables.

Le micrologiciel qui gère l’accès au réseau est préinstallé. Si tout ce que le programme se contentait de faire était de tourner dans son coin, on pourrait le considèrer comme un simple circuit. Quand on insiste sur le fait qu’un logiciel dans un ordinateur doit être libre, on peut passer sur un micrologiciel préinstallé qui ne sera jamais mis à jour, car cela ne fait pas de différence pour l’utilisateur que c’est un programme plutôt qu’un circuit.

Malheureusement, dans ce cas ce serait un circuit malveillant. Des fonctions malveillantes sont inacceptables, quelle que soit la manière dont elles sont implémentées.

Sur la plupart des téléphones Android, ce micrologiciel a tellement de contrôle qu’il pourrait transformer le produit en un appareil d’écoute. Sur certains, il peut prendre le contrôle entier de l’ordinateur principal, à travers la mémoire partagée, et peut ainsi supplanter ou remplacer le logiciel libre que vous avez installé. Avec certains modèles, il est possible d’exercer un contrôle à distance sur ce micrologiciel, et ainsi sur le téléphone tout entier, à travers le logiciel permettant l’accès au réseau. Le principe du logiciel libre, c’est d’avoir le contrôle sur la machine, et cet appareil en l’occurence ne remplit pas cette mission. Bien que n’importe quel système informatique puisse avoir des bogues, ces appareils peuvent être des bogues (Craig Murray, dans Meurtre à Samarkand, fait le récit de son rôle dans une opération de renseignement qui convertit un téléphone portable sans Android d’une cible peu suspicieuse en un appareil d’écoute).

En tout cas, le micrologiciel du téléphone permettant l’accès au réseau n’est pas l’équivalent d’un circuit, car le matériel permet l’installation de nouvelles versions, et il fonctionne dans ce but d’ailleurs. Puisque c’est un micrologiciel propriétaire, en pratique seul le fabricant peut faire de nouvelles versions, les utilisateurs ne le peuvent pas.

Pour résumer, on peut tolérer des versions non libres des micrologiciels gérant l’accès au réseau à la condition que des mises à jour ne seront pas téléchargées, elles ne prendront ainsi pas contrôle de l’ordinateur principal, et il peut seulement communiquer quand et si le système d’exploitation libre le permet. En d’autres termes, il doit avoir un fonctionnement équivalent à un circuit, et ce circuit ne doit pas être malveillant. Il n’y a pas d’obstacles à construire un téléphone Android qui a ces caractéristiques, mais nous n’en connaissons aucun.

De récentes couvertures médiatiques se sont intéressées aux guerres de brevets. Pendant les 20 ans de campagne qui ont été consacrés à l’abolition des brevets logiciels, nous avons prévenu que de telles guerres pouvaient arriver. Les brevets logiciels pourraient contraindre à la disparition de fonctions dans Android, ou même le rendre indisponible (consultez endsoftpatents.org pour plus d’informations sur les raisons nécessitant l’abolition des brevets logiciels).

Pourtant, les attaques sur les brevets, et les réponses de Google, n’ont pas de lien direct avec le sujet de cet article : comment les produits Android sont proches d’un système de distribution éthique, et comment ils échouent de peu. Ce problème mérite l’attention de la presse aussi.

Android représente une étape majeure vers un téléphone portable libre qui soit contrôlé par l’utilisateur, mais il y a encore beaucoup de chemin à parcourir. Les hackers travaillent sur Replicant, mais c’est un gros travail de rendre un nouveau modèle compatible, et il reste encore le problème du micrologiciel. Même si les téléphones Android d’aujourd’hui sont considérablement moins mauvais que les smartphones d’Apple ou de Windows, on ne peut pas dire qu’ils respectent vos libertés.

Notes

[1] Crédit photo : Laihiuyeung Ryanne (Creative Commons By)