Quelques nouvelles de LuneOS

LuneOS est une distribution Linux pour smartphones et tablettes, héritière de feu webOS. Une nouvelle version, « Decaf », vient tout juste de sortir

Logo de LuneOS

Sommaire

Introduction

Le projet est porté par l’équipe webOS-Ports, dont le but est de faire revivre webOS sur les matériels contemporains.

Malgré le peu de couverture médiatique autour de LuneOS, le projet est toujours bien vivant, avec une (petite) équipe motivée.

L’ensemble de la distribution est libre (ou presque), et chacun peut s’il le veut recompiler sa propre image chez lui. Une exception dans ce beau tableau : les blobs binaires utilisés pour faire tourner les pilotes Android. Nous y reviendrons plus tard.

Avec à peu près une release mensuelle, LuneOS a gagné en maturité depuis la dernière dépêche : téléphonie, matériel supporté, infrastructure… Voyons un peu ce que propose LuneOS dans la version toute fraîche de ce mois-ci.

Quelques captures d’écran (depuis un LG Nexus 5)

Ecran d’accueil avec quelques applications

Ecran d'accueil avec quelques applications

Lanceur d’applications

Lanceur d'applications

Application de téléphone

Application de téléphone

Recherche globale Just Type

Just Type

Système de compilation

LuneOS utilise OpenEmbedded pour son système de compilation et la génération de la distribution. C’est un framework très souple, orienté « systèmes embarqués ». Il est possible de cibler différentes architectures et de générer les paquets logiciels nécessaires assez facilement. Chaque paquet est décrit par une « recette » qui indique comment compiler le logiciel, de façon similaire aux PKGBUILD d’ArchLinux.

Il faut également citer le projet Yocto, qui maintient une bonne partie des « recettes » utilisées par LuneOS pour compiler la distribution.

Principales caractéristiques de LuneOS

  • ergonomie pensée pour le tactile
  • beaucoup d’actions se font par balayage du doigt (fermer une application, aller à la liste des applications, retour arrière…)
  • concept de « jeu de cartes » pour décrire les applications
  • une intégration forte des éléments du système : champ de recherche central (« Just Type »), fusionnement des conversations pour les différents comptes (« Synergy »)
  • les applications utilisent de préférence HTML5, JavaScript et CSS

Nouveautés

La dernière version de LuneOS repose sur la version « pyro » de Yocto.

Infrastructure

LuneOS utilise Qt 5.9.2 (qui est une version LTS), ainsi que des version récentes pour les briques de base : systemd 232, glibc 2.25, PulseAudio 10, wayland 1.13…

Cela permet d’avoir les dernières corrections mais aussi de profiter de fonctionalités assez récentes, notamment en ce qui concerne Qt :

  • avec le dernier QtWayland, l’API a été grandement remodelée et simplifiée.

  • QtQuickControls 2 facilite l’utilisation de QML sur les smartphones et tablettes, et supporte mieux les thèmes et les hautes densités en pixels (HiDPI, Retina…).

  • LuneOS utilise massivement QtWebEngine : les applications étant écrites en HTML5, avoir un moteur web récent permet de profiter des dernières optimisations et corrections. QtWebEngine 5.9 utilise le même coeur que Chromium 56, sorti début 2017.

Halium

Avec cette version LuneOS utilise maintenant le projet Halium, dans sa version 5.1, pour faciliter la réutilisation des drivers Android sur le matériel cible.

Dans la pratique, ça veut dire quoi ?

Halium consiste en un ensemble de dépôts relatifs à Android, légèrement modifiés afin de ne compiler que la partie bas niveau : services de base et initialisation des pilotes, principalement. La compilation elle-même est faite par webOS-Ports.
Il n’y a finalement qu’un morceau de LuneOS qui n’est pas construit depuis les sources : les blobs propriétaires pour le matériel. C’est un compromis aujourd’hui nécessaire pour arriver à utiliser LuneOS sur des matériels courants et en exploiter tous les périphériques (contrairement à Replicant).

La couche Halium est utilisée de deux façons dans LuneOS :

  • un sous-système Android minimal est lancé dans un conteneur LXC, et s’occupe d’initialiser le matériel et lancer les services de base nécessaires au fonctionnement des drivers

  • certaines bibliothèques Android sont réutilisées directement par les binaires LuneOS : OpenGLES, audio, capteurs… Tout cela est rendu possible grâce à libhybris, qui fait le lien entre un binaire basé sur la glibc et une bibliothèque basée sur bionic.

Quel atout à utiliser Halium ?

Les atouts sont nombreux, et webOS-Ports a participé au projet Halium très naturellement :

  • on se soucie moins de la partie Android, qui n’est pas notre centre d’intérêt principal

  • il est plus facile de faire un nouveau portage, car cela revient surtout à s’assurer que le code Halium pour ce matériel existe. Ensuite il y a quelques ajouts à faire coté LuneOS, mais assez légers normalement

  • passer à une version d’Android plus récente est aussi plus simple : il suffit en gros de changer la version d’Halium utilisée

  • bien sûr, et c’est le but principal, utiliser Halium nous apporte un bon support matériel : capture photo, capteurs d’orientation et GPS, accélération vidéo et audio…

Coté applications

Grâce à l’application Preware 2, il est possible d’installer tout un ensemble d’applications additionnelles. Les applications « legacy » doivent normalement marcher sans problème, pour peu qu’on possède le fichier « .ipk » correspondant.

LuneOS propose aussi les applications de base :

  • Téléphone et historique
  • Conversations (centralisées entre tous les comptes, grâce à Synergy)
  • Appareil photo (encore en cours de développement)
  • Application PDF, basée sur PDF.js
  • Gestionnaire de fichiers

Envie d’essayer ?

Les smartphones Nexus 4 et Nexus 5 sont officiellement pris en charge, ainsi que la tablette HP Touchpad. Il est également possible de tester LuneOS avec VirtualBox à l’aide des images 32bits et 64bits pour l’émulateur.

La suite

Il y aura toujours des choses à faire sur un projet tel que LuneOS ; pour le moment, voici une partie des idées pour la suite :

  • améliorer encore l’intégration de Halium
  • passer de Bluez4 à Bluez5 pour la gestion du Bluetooth
  • repenser l’application « Paramètres », et probablement la réécrire en QML pour mieux l’intégrer au reste du système
  • améliorer l’application « Photos »
  • proposer un SDK pour les développeurs souhaitant créer une application « native » (non HTML5)
  • passer à un framework plus moderne qu’Enyo pour le développement des applications HTML : pour le moment, le choix penche vers Polymer/WebComponents, mais ça reste à confirmer par des expérimentations

LuneOS est un projet vaste, porté actuellement par un groupe assez réduit de bénévoles. Sur de nombreux sujets, les contributions sont donc évidemment les bienvenues, notamment au niveau des applications.

Lire les commentaires

(Source: LinuxFr.org : les dépêches)
Logo