Firefox OS, développé par Mozilla, poursuit son objectif visant à "bâtir un système d'exploitation complet et autonome pour un web ouvert”, et permet aux utilisateurs d'installer et d'exécuter des applications créées avec HTML, CSS et JavaScript. Le système est basé sur Linux et Gecko de Mozilla, et sa structure ouverte est 100% libre, dénuée de technologies propriétaires.
Contribuer à Firefox OS
Firefox OS est complètement open-source et peut être cloné depuis GitHub. Sur le portail développeur de Mozilla, vous pouvez trouver des instructions détaillées pour compiler et installer ces sources sur un émulateur ou sur un mobile, comme par exemple un téléphone Android configuré pour un dual boot.
Les fonctionnalités au coeur de Firefox OS sont organisées en trois couches majeures :
- Gaia, qui est l'interface utilisateur de Firefox OS. Gaia inclut, entre autres, un écran d'accueil et de verrouillage, des applications pour téléphoner et gérer ses contacts, et d'autres applications assez classiques : mail, calendrier, calculatrice et magasin d'applications. Gaia est écrit entièrement en HTML, CSS, et JavaScript.
- Gecko, qui est le runtime pour les applications du système et qui implémente les standards ouverts définis pour HTML, CSS et JavaScript. Gecko inclut une couche réseau, une couche graphique, un moteur de rendu et une machine virtuelle JavaScript.
- Gonk, qui se constitue d'un noyau Linux et d'une couche d'abstraction matérielle (HAL). C'est la partie la plus bas niveau du système, sur laquelle Gecko fonctionne. Gonk s'interface avec Gecko pour lui permettre d'avoir accès au matériel, par exemple à la couche téléphonie ou au framebuffer de l'écran, qui ne sont pas usuellement accessibles à Gecko sur les autres systèmes.
Des compétences en C++ sont nécessaires pour contribuer à Gonk ou Gecko, alors que pour Gaia c'est plutôt HTML, CSS et JavaScript qu'il est préférable de maîtriser.
Une ressource fondamentale pour contribuer à Firefox OS est bugzilla, l'outil de suivi de bugs de Mozilla. En plus de la possibilité de choisir et de fixer des bugs via bugzilla, Mozilla a fait un réel effort pour aider les nouveaux contributeurs à se familiariser avec la plateforme et les processus de contribution en offrant un encadrement ("mentored bugs"). Ce mentorat devrait amener suffisamment d'informations pour débuter sur la plateforme et permet d'être en contact avec un mentor qui a déjà fait ses preuves, habitué aux procédures usuelles imposées aux développeurs. S'il n'y a pas de bugs "mentorés" disponibles, la liste de “good first bug” offrira un autre point de départ idéal.
Une fois qu'un bug est fixé, le développeur doit soumettre son patch pour review, qui sera finalement integré aux sources officielles par une personne ayant les droits nécessaires.
Développer des applications pour Firefox OS
Si vous préférez ne pas vous salir les mains avec les composants bas niveau du système, vous pouvez développer une application. Les outils basiques pour le développement sur Firefox OS sont la dernière version du navigateur firefox, Firebug, et le plugin simulateur Firefox OS.
Les ressources les plus intéressantes à connaître sont les suivantes :
- Boilerplate app : un template basique qui montre la structure d'une application et l'utilisation de WebAPI.
- IndexedDB : une API qui permet de stocker côté client de grands volumes de données, à la différence du LocalStorage qui s'adapte plutôt à de petits volumes.
- App Manifest : le manifeste est l'une des différences clés entre une application et un site. Il s'agit d'un fichier JSON avec le nom et une description de l'application. Il peut également renseigner son origine, les icônes utilisées et les permissions requises pour son installation.
- App Manager : un set d'outils pour gérer des applications, des appareils et une assistance au développement (inspecteur, debugger, etc.).
- Brick web components : une spécification qui vise à supporter la réutilisation de code HTML5 via des composants.
- Firefox OS style guide : un guide décrivant les éléments d'interfaces et leurs comportements.
Shafiul Azam de Mozilla a également rendu publique une présentation décrivant les étapes de base pour développer une application pour Firefox OS.