Interview à LinuxFR à propos du projet Replicant

Voici une interview donnée à LinuxFR.org qui détaille plusieurs aspects du projet Replicant et de ma contribution à celui-ci.

Peux-tu te présenter en quelques mots ? Qu'est-ce qui t'as conduit à devenir développeur au sein du projet Replicant ?

Tout juste diplômé du Baccalauréat scientifique, je suis utilisateur de logiciels libres depuis à peu près cinq ans. Replicant est d'ailleurs le premier projet d'envergure auquel je contribue comme développeur et c'est au travers de ce projet que j'ai réellement appris à programmer.

Tout a commencé avec la recherche d'un téléphone portable libre, qui m'a vite conduit au canal IRC du projet Replicant où l'on m'a conseillé l'OpenMoko GTA02, dit FreeRunner, que j'ai utilisé pendant quelques temps pour revenir à la recherche d'un autre candidat (après avoir détérioré le modem du GTA02 suite à une soudure ratée). J'ai finalement opté pour un HTC Dream, qui a été mon premier téléphone Android. Rapidement, j'ai essayé de compiler les sources de Replicant pour ajouter quelques petites modifications et finalement me rendre utile par la suite en permettant la compilation du SDK. Puisque de nombreuses tâches étaient à réaliser, je me suis essayé au vrai développement, et ça m'a plu. Grâce à l'aide précieuse du développeur principal du projet, Denis 'GNUtoo' Carikli, j'ai vite appris beaucoup sur la programmation, l'utilisation de Git, etc. Au bout d'un moment, j'ai pris les devants en portant Replicant en version 2.3 sur le Nexus S, et par la suite sur de nombreux autres appareils, pour finalement en arriver aujourd'hui à avoir beaucoup trop d'appareils, de responsabilités et de travail, mais j'apprécie toujours autant de contribuer au projet, d'autant que j'en suis le premier utilisateur quotidien.

Quels sont les enjeux du projet Replicant, et de manière plus générale du logiciel libre dans le domaine de la téléphonie portable ?

D'un point de vue général, les téléphones portables peuvent-être considérés comme le « rêve de Staline », pour reprendre l'expression de Richard Stallman. En effet, il s'agit là de dispositifs permettant un contrôle et une surveillance de l'individu comme jamais cela n'avait été possible auparavant.

La première raison est qu'il s'agit avant tout d'un outil de communication qui n'offre aucune garantie de sécurité : d'une part les communications sur le réseau GSM sont connues pour être faiblement sécurisées et d'une autre part, l’opérateur téléphonique garde trace de tous les messages et appels effectués par l'utilisateur et les transmet, automatiquement ou sur demande aux gouvernements intéressés.

Ainsi, un historique complet des communications de chaque utilisateur est présent dans une base de données qu'il ne contrôle pas. Mais ce n'est là qu'un problème parmi d'autres. Considérons maintenant la possibilité pour les opérateurs de géolocaliser les utilisateurs du réseau à tout instant : cela est possible en comparant les dates d'arrivée des signaux émis par un téléphone vers plusieurs antennes-relais, on peut déterminer sa position. De telles informations peuvent alors être collectées dans une base de données, retraçant tous les déplacements des individus transportant leurs téléphones portables avec eux. Il s'agit bien là d'une réalité puisqu'il est avéré que ceci est bel et bien en place chez certains opérateurs, particulièrement américains.

Du point de vue de l'appareil, et non plus du réseau, le composant qui gère le dialogue avec le réseau GSM, le modem, exécute du logiciel qui n'est pas libre. De fait, il n'offre aucune garantie de sécurité, en plus de bafouer la liberté de ses utilisateurs. Tout particulièrement, c'est quand le modem est connecté à d'autres dispositifs, comme le microphone, le GPS ou la mémoire, vive ou de stockage du téléphone que le problème prend de l'ampleur. Rien ne garantit que le modem ne tire profit de ces dispositifs sous la commande du réseau. Et il existe bel et bien des exemples de tels comportements, où le logiciel du modem a été altéré à distance afin d'utiliser le microphone d'un téléphone pour surveiller l'utilisateur, en convertissant le dit téléphone en dispositif d'écoute à distance et ce en utilisant une porte dérobée du logiciel du modem.

Enfin, si les logiciels exécutés sur le téléphone ne sont pas libres, le même problème se pose, puisqu'il est alors tout à fait possible que les agissements de ces logiciels soient commandés à distance ou qu'il remplissent une fonction malveillante. Là encore, il existe bel et bien des exemples concrets de tels logiciels.

Il apparaît donc de réels enjeux liés à l'utilisation de la téléphonie mobile : d'une part ceux liées à l'utilisation du réseau et qui ne peuvent-être résolus que par la mise en place d'une législation garantissant le respect de la vie privée et, d'autre part, des problèmes qui découlent du fait que les logiciels utilisés sur les téléphones ne sont pas libres. C'est donc sur ce dernier point que le logiciel libre peut apporter une solution et c'est bien dans cette optique que s'intègre le projet Replicant, qui vise à développer un système d'exploitation entièrement libre pour les téléphones portables ou smartphones. Il s'agit d'un dérivé d'Android, puisque la mouture AOSP (pour Android Open Source Project) du système est libre, même si elle ne permet pas de fonctionner réellement sur des téléphones Android sans les pilotes propriétaires nécessaires pour dialoguer avec le matériel. Le projet Replicant remplace donc ces composants propriétaires par des alternatives libres afin que le téléphone soit effectivement utilisable.

Pour autant est-ce que Replicant permet de résoudre l'ensemble des problèmes posés par la téléphonie mobile ?

Bien évidemment, utiliser un téléphone exécutant Replicant ne permet pas d'empêcher l'opérateur d’espionner ses communications ni de localiser le téléphone en temps réel : les problèmes liées à l'opérateur qui existent « naturellement » de par l'utilisation du réseau restent entiers, même avec Replicant qui n'est autre qu'un système d'exploitation. Puisque Replicant est un système entièrement libre, il assure qu'aucune fonction malveillante n'est exécutée par le système (alors que c'est le cas avec certains dérivés d'Android pré-installés sur les téléphones que vendent les opérateurs), en plus d'offrir à l'utilisateur les libertés essentielles qui définissent le logiciel libre. Cela n'est bien entendu valide que si les applications installées avec Replicant sont elles-aussi libres.

Pourtant, il reste bel et bien, dans la plupart des cas, du logiciel propriétaire qui s'exécute sur le téléphone avec Replicant : le chargeur de démarrage (bootloader en anglais) est le plus souvent propriétaire, mais il est aussi souvent signé, c'est-à-dire qu'il ne peut pas être remplacé par un logiciel libre. Il n'est donc pas possible sur les modèles concernés de démarrer son téléphone sans passer par du logiciel propriétaire. En plus du processeur principal, un téléphone portable intègre, tel un ordinateur classique, plusieurs périphériques, qui exécutent tous des programmes non-libres, que ce soit la carte WiFi ou encore le modem (ces logiciels sont parfois chargés par le processeur principal et parfois pré-installés dans le périphérique). Là encore, Replicant ne permet pas de résoudre ces problèmes, mais il existe le projet OsmocomBB qui est un programme libre s'exécutant dans le modem de certains téléphones, qui offre alors une solution aux problèmes soulevés par l'utilisation de programmes non-libres dans le modem (hélas les rares téléphones supportés sont vieux et ne sont pas encore pleinement utilisables). Quelques efforts sont à remarquer concernant les périphériques WiFi, avec la récente libération du micro-code de quelques cartes Atheros HTC.

Puisque Replicant doit faire avec des programmes non-libres qui s'exécutent sur le modem, les modèles sur lesquels Replicant est porté sont choisis (en partie) en fonction de l'isolation du modem : il faut autant que possible veiller à ce que le modem ne puisse pas accéder à la mémoire du téléphone, au GPS, au microphone, etc.

Replicant ne permet donc pas de libérer totalement certains téléphones Android, mais c'est une étape de taille vers le respect de la liberté de l'utilisateur dans la téléphonie mobile.

Quels sont les défis techniques, les objectifs déjà atteints et les évolutions du projet ?

Tout d'abord, un gros changement a eu lieu au cours des quelques dernières années, qui nous apporte un certain réconfort : il est désormais possible d'installer une version modifiée d'Android sur la plupart des téléphones Android. De nombreux constructeurs ont fait l'effort de fournir des chargeurs de démarrage (bootloaders) qui permettent à l'utilisateur d'installer un autre système tel que Replicant.

C'est déjà une belle avancée comparé à la situation des débuts d'Android. Ainsi, nous n'avons plus rencontré ce problème lors de la sélection des futurs modèles sur lesquels porter Replicant. De fait, les procédures d'installation sont largement simplifiées (plus besoin d'exploiter une faille du noyau pour gagner les privilèges root afin d'installer une version modifiée). C'est donc un ennui de moins pour nous et une accessibilité accrue pour les utilisateurs souhaitant installer Replicant.

Les critères de choix de la sélection des nouveaux modèles ont donc évolué. Nous regardons maintenant essentiellement deux aspects : le contrôle que le modem exerce sur le reste du téléphone (qui doit être le plus restreint possible) et la quantité de logiciels propriétaires qui est nécessaire pour faire fonctionner le téléphone.

Le premier point est assez difficile à évaluer puisque nous ne pouvons pas vérifier si le modem est effectivement en mesure d'accéder à des zones sensibles (GPS, audio, données, RAM), mais nous avons parfois des preuves que c'est le cas, comme pour les puces Qualcomm. Nous privilégions donc d'autres plate-formes, par exemple Exynos de Samsung, que l'on retrouve dans de nombreux téléphones de la marque, ou encore OMAP de Texas Instruments.

Concernant la quantité de logiciels propriétaires nécessaire, cela varie très largement d'un modèle à l'autre, mais pour de nombreux modèles, les éléments nécessaires au fonctionnement minimal (audio, graphiques 2D, téléphonie, etc) de l'appareil sont soit déjà libres, soit facilement remplaçables. Dans tous les cas, porter Replicant sur un nouveau téléphone n'est pas une mince affaire (qui d'ailleurs est détaillée au travers d'un guide sur le wiki du projet) et de nombreux logiciels doivent être écrits pour faire fonctionner le matériel du téléphone. C'est là que se situe l'essentiel des défis auxquels doivent faire face les développeurs.

Écrire un remplacement libre d'un composant propriétaire implique une longue procédure d'ingénierie inverse. Il s'agit le plus souvent de décoder, d'interpréter, de comprendre et d'implémenter un protocole ou une série d'instructions qui ne sont nulle part documentés. Un exemple remarquable d'un tel travail est l'écriture d'une implémentation libre du protocole utilisé par le modem des téléphones Samsung. Grâce à l'aide de nombreux développeurs (pas forcément affiliés à notre projet), nous avons pu écrire une implémentation libre de la mise en route et du protocole du modem, initialement pour le Nexus S et très vite élargie à de nombreux autres modèles (Galaxy S, Galaxy Tab, Galaxy Nexus, Galaxy S2, Galaxy S3…), ce qui explique pourquoi nous préférons porter Replicant sur des téléphones Samsung : la charge de travail est considérablement réduite puisque le protocole du modem est déjà connu et implémenté. En effet, puisque les logiciels qu'exécute le modem ne sont pas libres, le protocole utilisé pour communiquer avec le processeur principal n'est pas forcément standard ni documenté.

Avec le temps, le projet CyanogenMod a également commencé plusieurs initiatives de remplacement du code non-libre présent dans plusieurs téléphones (entre autres les Samsung), qui nous bénéficient directement. L'avantage pour eux est de pouvoir corriger les bugs ou les problèmes rencontrés avec les composants propriétaires, pas toujours conformes aux définitions des interfaces propres à Android, mais aussi de faire suivre le code sur de nouvelles versions d'Android, sans attendre les mises à jour du constructeur. Le code écrit par le projet Replicant est également parfois réutilisé dans CyanogenMod (c'est le cas des modules audio et camera du Galaxy S2) et peut à cette occasion être amélioré par les développeurs CyanogenMod : le projet Replicant bénéficie en retour des améliorations ! Ce genre de partage de code bidirectionnel enrichit alors chacun de nos projets.

Pour les évolutions très récentes du projet, nous avons pu finaliser et annoncer le programme de donations au projet Replicant via la Free Software Foundation (Fondation pour le Logiciel Libre), qui se charge de collecter et mettre à notre disposition les fonds. L'argent ainsi récolé nous permettra d'acheter de nouveaux appareils (téléphones, tablettes) mais également de contribuer aux frais de déplacement des développeurs au nombreux événements du logiciel libre, afin de pouvoir y présenter Replicant.

Pourtant, le projet a également grand besoin de nouveaux contributeurs : nous ne sommes que deux développeurs à ce jour, de moins en moins disponibles pour le projet. Alors que j'envisage très prochainement un cycle préparatoire, le second développeur du projet, Denis 'GNUtoo' Carikli doit gérer en plus d'un travail en entreprise, la contribution à de nombreux autres projets de logiciels libres essentiels, tels que Coreboot ou OsmocomBB. Si la contribution au projet Replicant vous intéresse, n'hésitez pas à nous contacter via notre canal IRC, #replicant sur irc.freenode.net ou encore via notre liste de diffusion.

L'évolution récente de la situation du logiciel libre dans la téléphonie mobile, tant au niveau logiciel que matériel constitue-t-elle un pas de plus vers la liberté ?

Plus ou moins récemment, de nombreuses évolutions ont eu lieu, d'une part avec l'apparition de nouveaux systèmes d'exploitation dits libres visant les téléphones mobiles et d'une autre part avec l'apparition de nouveau matériel, soit comme support des nouveaux systèmes libres, soit se présentant eux-mêmes comme libres ou ouverts.

Abordons tout d'abord Firefox OS : le système d'exploitation mobile de la fondation Mozilla, issu du projet Boot2Gecko, apporte une perspective technologique innovante : faire le pari des langages du web pour réaliser tout un système mobile. L'avantage résidant dans la rapidité et l'optimisation avérée de ces langages web. Bien entendu, l'ensemble du système n'est pas écrit avec les technologies du web, mais seulement la partie applications et framework. Pour faire court, les langages du web sont à Firefox OS ce que Java est à Android. Dans les deux cas, le noyau utilisé est le noyau Linux et une couche d'abstraction matérielle est nécessaire entre le noyau et le langage natif du système (langage web pour Firefox OS, Java pour Android). C'est bien entendu dans cette couche d'abstraction que réside l'implémentation et le support du matériel, qui constitue la majeure partie des composants non-libres que Replicant s'efforce de remplacer (de fait, les composants que le projet Replicant remplace ne sont pas des briques de Java mais des couches d'abstraction en C ou C++). Les développeurs de Firefox OS ont fait le choix d'utiliser les mêmes interfaces et les mêmes API qu'Android pour leur couche d'abstraction matérielle. Ceci permet en effet de porter plus facilement vers Firefox OS les téléphones Android, mais aussi de pouvoir réutiliser les composants non-libres (et donc non adaptables pour d'éventuelles interfaces spécifiques à Firefox OS) des téléphones Android. De fait, les problèmes auxquels Replicant doit faire face sur Android se retrouvent être les mêmes sur Firefox OS. Finalement, seules les parties déjà libres d'Android sont réécrites dans Firefox OS, avec les langages du web plutôt qu'en Java. L'intérêt et l'avancement vers la liberté de l'utilisateur est donc très minime. Puisque Android est mature et parfaitement utilisable, il n'y a pour nous aucun avantage fondamental à réaliser un dérivé totalement libre de Firefox OS.

Pourtant, Firefox OS a produit, en plus d'un système, un certain nombre de téléphones en partenariat avec la société espagnole Geeksphone, déjà connue pour ses téléphones Android libellés comme ouverts. Si ces nouveaux téléphones semblent eux aussi être libellés comme libres et ouverts, la réalité n'est sur les grandes lignes pas bien différente des téléphones Android : les modèles Firefox OS de Geeksphone utilisent les plate-formes de Qualcomm, réputées pour offrir un contrôle écrasant au modem sur le processeur principal. De plus, ces plate-formes demandent de nombreux composants non-libres sur le processeur principal (les couches d'abstraction matérielles) pour que Firefox OS, comme Android, fonctionne effectivement.

Le second nouveau système mobile apparu récemment est Ubuntu Touch, qui matérialise la volonté de Canonical de dériver Ubuntu sur les plate-formes mobiles. La situation est quasiment identique à Firefox OS : Ubuntu Touch utilise également les couches d'abstraction matérielles d'Android, à quelques finesses près (Ubuntu Touch est bien un système GNU/Linux et ne tient pas tout d'Android). Le problème fondamental qu'est le support du matériel reste le même, d'autant plus que, pour le moment, Ubuntu Touch ne fonctionne que sur des téléphones Android qui eux-même ne peuvent fonctionner sans un certain nombre de composants non-libres. Certains de ces modèles sont pris en charge par Replicant : il serait donc possible de voir apparaître un dérivé entièrement libre d'Ubuntu Touch basé sur les remplacements libres développés par le projet Replicant, à condition que le tout reste assez fluide et utilisable. Mais encore une fois, Android est déjà stable, utilisable et bien en place, et prendre le temps de développer un dérivé entièrement libre d'Ubuntu Touch n'apporterait pas de réel avantage sur le plan des libertés. Là encore, un projet de développement de téléphone, le Ubuntu Edge, support du système Ubuntu Touch, est en cours, au travers d'un appel à contributions de Canonical mais peu de détails sur le matériel et sa compatibilité avec le logiciel libre sont à ce jour disponibles.

D'autres systèmes mobiles, peut-être moins médiatisés ont également fait leur apparition. Après le rachat de Palm par HP, le système WebOS a été peu à peu libéré sous le nom Open WebOS, ce qui a permis le début de l'initiative WebOS-ports, qui effectue le portage de WebOS sur quelques téléphones Android. Là-encore, plusieurs blobs non-libres sont encore utilisés, mais les interfaces Android ne sont plus directement intégrées au système : c'est libhybris qui se charge de faire interface entre les modules Android et le reste du système. WebOS-ports est finalement plus dans la continuité du projet SHR, duquel de nombreux développeurs ont d'ailleurs migré, avec un système de compilation semblable. On peut donc espérer que les développeurs WebOS-ports pourront contribuer à la libération de téléphones comme c'était le cas avec SHR, même si pour l'instant les appareils Android supportés fonctionnent avec des composants non-libres.

Depuis quelques temps déjà, le projet MeeGo, initialement dérivé de Maemo et Moblin est en situation d'échec avec le départ du Nokia du projet, qui avait jusque là construit les quelques téléphones officiellement supportés par le projet (N900, N9). MeeGo demeure soutenu par la Fondation Linux et Intel, mais il semblerait que Tizen, nouveau système également soutenu par la Fondation Linux et développé par Samsung a repris le flambeau. Là encore, il existe peu (voire pas du tout) de téléphones témoins qui permettraient d'évaluer à quel point Tizen est libre et d'envisager un dérivé entièrement libre. Même si le tout semble prometteur et définitivement séparé des interfaces Android que les autres systèmes mobiles dits libres utilisent, il sera sans doute plus fructueux d'évaluer le système lorsqu'un téléphone permettant d'exécuter Tizen sera disponible, ce-qui devrait-être le cas dans le futur d'après Samsung.

Concernant le nouveau matériel particulièrement propice au logiciel libre, on peut noter le Goldelico GTA04, qui est une version améliorée et à jour de la carte de l'Openmoko GTA02 dit FreeRunner, avec un chip OMAP3, qui n'a donc pas d'accélération graphique libre, mais le reste du matériel est tout à fait compatible avec le logiciel libre (même si le firmware non-libre du WiFi doit être chargé par le processeur principal). Le téléphone est distribué sous Debian et SHR peut y être installé, ce qui est alors plus adapté à la téléphonie.

Enfin, le projet Fairphone développe un téléphone qui devrait faire tourner Android mais pour lequel peu de détails techniques sont disponibles. La particularité du Fairphone est de fournir un téléphone socialement équitable, réalisé sans conflits sociaux, de l'extraction des matières premières jusqu'à la vente mais également plus responsable (filière de recyclage) et écologique. L'esprit de transparence du projet semble très propice au logiciel libre et ses membres indiquent clairement leur préférence pour le logiciel libre dans leur produit, même si on peut s'attendre à ce que plusieurs composants non-libres soient tout de même présents.

Quel téléphone est à recommander pour utiliser Replicant avec la plus grande liberté, et d'ailleurs quel téléphone utilises-tu personnellement ?

À ce jour, la meilleure solution pour le respect de la liberté est de ne pas utiliser de téléphone portable du tout, pour les raisons explicitées plus haut. Dans les autres cas, c'est le Goldelico GTA04 qui se révèle être le meilleur candidat, mais il n'est pas encore supporté par Replicant. Les téléphones récemment supportés par le projet sont meilleurs que les anciens au niveau du respect des libertés et, compte tenu des fonctionnalités prises en charge, le meilleur candidat est à ce jour le Galaxy S2.

Pour mon utilisation personnelle, je change régulièrement de téléphone pour m'assurer de leur stabilité au quotidien, parmi les suivants : Nexus S, Galaxy S, Galaxy S2 et Galaxy S3. Ma préférence reste portée sur le Galaxy S2 puisqu'il dispose du plus de fonctionnalités supportées.

Sur quoi travaillent les développeurs en ce moment ? Quelles sont les prochaines avancées prévues ?

Très récemment, l'effort s'est concentré sur le Goldelico GTA04, dont la situation demande un travail technique de haut niveau que nous ne pouvons pas forcément fournir. De fait, ceci entraîne beaucoup de frustration et peu d'avancées réelles. De plus, certaines tâches sont simplement trop complexes à réaliser (particulièrement le protocole de certains GPS).

Globalement, les avancées des prochains mois seront essentiellement consacrées à l'amélioration de la prise en charge des téléphones sur lesquels Replicant tourne déjà, avec une amélioration des fonctionnalités de téléphonie (les appels multiples sont manquants par exemple) ou des aspects spécifiques à certains téléphones, comme la prise en charge de l'appareil photo du Galaxy S3, ou encore le GPS du Galaxy S2. Toute ceci demande beaucoup de travail d'ingénierie inverse et n'est jamais certain d'aboutir à un résultat concret.

Enfin, dernière (et inévitable) question : quelles distribution et quels environnements graphiques utilises‐tu à la maison ?

Une partie des mes ordinateurs utilise Trisquel GNU/Linux, qui est une distribution entièrement libre dérivée d'Ubuntu, mais j'ai récemment été convaincu par les efforts du projet Debian pour être reconnu comme un système entièrement libre : c'est donc ce que j'utilise sur mon ordinateur portable et serveurs. Pour ce qui est de l'environnement graphique, je suis toujours fidèle à GNOME (et GTK+) avec son interface classique (gnome-panel) qui me semble plus adaptée au développement que Gnome-Shell.

Merci pour cet entretien et tes contributions.

Vus : 2458
Publié par PaulK : 9