Replicant, le système embarqué entièrement libre dérivé d'Android
Cela fait un long moment que je n'ai rien publié sur mon blog. Du coup, aujourd'hui alors que je nettoyais les commentaires indésirables laissés sur mon blog (j'ai de gros problèmes de spam et j'ai l'impression que l'antispam dotclear ne fonctionne qu'une fois sur deux), j'ai pris l'initiative d'écrire un petit billet pour faire part de mon investissement récent dans le projet Replicant.
Mon premier « smartphone » a été un Neo FreeRunner, que j'ai vaguement présenté dans un billet précédent. Pourtant, j'avais des problèmes de batterie qui se déchargeait trop vite. Armé de mon fer à souder pour CMS, j'ai entrepris d'effectuer un Autonofix, mais… sans succès : j'ai fini par endommager la puce GSM du FreeRunner. Du coup, il n'était plus utilisable comme téléphone pour tous les jours.
J'ai finalement choisi d'acheter un HTC Dream, qui tourne donc avec un noyau Linux et Android. Le problème, me direz-vous, c'est qu'Android bien que 100% libre (qu'on ne me dise pas qu'Android n'est pas totalement libre, c'est faux) nécessite des librairies et firmwares non-libres qui sont spécifiques à chaque appareil. Par exemple, pour le HTC Dream, on ne peut quasiment rien faire avec uniquement le code libre: pas d'audio, pas de GSM ni de 3G, bref rien.
Pourtant, un projet (en fait, c'est plutôt un développeur et une petite communauté autour) nommé Replicant tend à produire une version 100% libre d'Android pour le plus grand nombre de téléphones, tablettes, etc, qui fonctionnent sous Android. Et le HTC Dream est un des téléphones des mieux supportés par Replicant. Pour avoir une idée de l'état de la prise en charge des appareils pour lesquels Replicant fournit des images, vous pouvez consulter http://trac.osuosl.org/trac/replica....
Le HTC Dream est donc bien supporté par Replicant : seuls quelques éléments assez négligeables sont absents, tels que l'appareil photo ou les accéléromètres. C'est Replicant en version 2.2 (qui est basée sur CyanogenMod 6 qui est basée sur Android 2.2 FroYo) qui tourne sur le HTC Dream. Pourtant, certains points restent très négatifs, comme l'absence d'un chargeur de démarrage (un genre de BIOS pour le matériel embarqué) libre ou encore le fait que le modem a accès à la RAM principale du téléphone et à d'autres choses gênantes comme le GPS.
J'ai donc installé Replicant sur mon HTC Dream et non sans peine : pour faire tourner Android 2.2, la mémoire flash (NAND) doit-être repartitionnée pour laisser une plus grande place au système.
Après plusieurs semaines d'utilisation, j'étais déjà relativement présent sur le canal IRC #replicant sur irc.freenode.net et j'ai commencé à faire quelques petites choses pour aider un peu, vu l'énorme quantité de travail qu'il reste. Ayant toujours rêvé (et je ne dis pas de bêtises, j'ai toujours voulu le faire) compiler Android depuis le code source, j'ai téléchargé le code source de Replicant et l'ai compilé. Il y avait des erreurs de compilation, auxquelles j'ai trouvé solutions : et hop, ma première contribution au code de Replicant : corriger les erreurs de compilation ! J'ai aussi écrit des scripts pour mettre en place la liaison réseau par USB afin d'avoir internet sur l'appareil sans utilise le WiFi (qui demande un microcode non-libre). Enfin, j'ai voulu utiliser le SDK Android pour écrire des applications, mais il n'est disponible qu'en version 32 bits, alors que mon ordinateur est un 64 bits : j'ai donc modifié tout ce qu'il fallait pour à la fois pouvoir compiler Replicant sur un système 64 bits sans librairies de compatibilité ou autre mais aussi pour avoir un SDK en 64 bits (avec tous les outils qui vont avec, adb, fastboot, etc). Après quelques temps, tout cela fonctionnait (j'avais commencé à documenter la marche à suivre mais c'est vraiment un gros travail et je n'ai pas eu le courage de tout reprendre pour bien documenter), mais il restait de nombreuses erreurs de compilation du SDK, que j'ai corrigé afin d'avoir quelque chose qui fonctionne. Du coup, mes corrections ont été intégrées au code de Replicant et hop, une version 100% libre du SDK Android (sans les API non-libres de Google) !
L'étape d'après a été de regarder le code bas-niveau, tel que le code qui touche directement au hardware. Jusque-là, seul GNUtoo, le développeur principal du projet, avait apporté des améliorations à cette partie là du code (au sein du projet Replicant), pourtant la plus essentielle. Ma première contribution au code bas-niveau a été d'activer le contrôle du volume lors des appels et d'activer le support des adaptateurs permettant de brancher des jacks 3.5mm : pour des écouteurs. Passé cette étape, je suis vraiment devenu développeur Replicant et j'ai commencé à y consacrer pas mal de temps.
Depuis, j'ai apporté un certain nombre de choses à Replicant, et dernièrement, la majorité de ce que je fais pour le projet tourne autour de la prise en charge du Nexus S, le nouveau smartphone de Google. L'avancement de sa prise en charge est disponible sur http://trac.osuosl.org/trac/replica.... Heureusement, je suis entouré de personnes formidables et compétentes pour m'aider et me conseiller !
Le développement et la diffusion de Replicant dépend d'un effort communautaire et volontaire : c'est grâce à vous que le projet pourra se développer afin de permettre la réalisation d'un système Android entièrement libre pour le plus grand nombre de smartphones, tablettes et autres ! Ainsi, toute forme d'aide serait fortement appréciée, et les moyens d'aider le projet ne manquent pas :
- Aider à faire connaitre Replicant, soit sur Internet en utilisant des réseaux sociaux tels que identi.ca ou directement en parlant du projet avec des personnes qui pourrait-être intéressées
- Installer Replicant si votre appareil est supporté
- Tester ce qui fonctionne et ce qui ne fonctionne pas dans les nouvelles versions ou tester la téléphonie dans votre pays si cela n'a pas encore été fait
- Proposer des logiciels libres pour Android dans le dépôt F-Droid, l'alternative libre au Market d'Android
- Écrire de la documentation et des tutoriels quand à l'utilisation de Replicant
- Si vous êtes un développeur, nous rejoindre afin d'achever le remplacement des parties manquantes sur les périphériques que nous supportons déjà
- Si vous êtes un développeur, lancez-vous dans la tâche de faire fonctionner Replicant sur d'autres périphériques (e.g. smartphones récents, tablettes, etc)
Le meilleur moyen de commencer à s'investir dans le projet est sans doute de venir sur IRC : #replicant sur irc.freenode.net de vous présenter et de venir discuter (en anglais de préférence).