Quelques nouvelles de LuneOS

Posté par  . Édité par olivierweb, claudex, ZeroHeure, bubar🦥, RyDroid, palm123 et Davy Defaud. Modéré par bubar🦥. Licence CC By‑SA.
Étiquettes :
67
10
oct.
2017
Distribution

LuneOS est une distribution GNU/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 publication mensuelle, LuneOS a gagné en maturité depuis la dernière dépêche : téléphonie, matériel pris en charge, 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)

Écran d’accueil avec quelques applications

Écran 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 cadriciel 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’Arch Linux.

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 HTML 5, 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 à support étendu), ainsi que des versions 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 fonctionnalité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 téléphones mobiles et tablettes, et gère mieux les thèmes et les hautes densités de pixels (HiDPI, Retina…) ;
  • LuneOS utilise massivement QtWebEngine : les applications étant écrites en HTML 5, avoir un moteur Web récent permet de profiter des dernières optimisations et corrections. QtWebEngine 5.9 utilise le même cœur 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 pilotes 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 pilotes ;
  • certaines bibliothèques Android sont réutilisées directement par les binaires LuneOS : OpenGL ES, audio, capteurs, etc. 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 côté 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 de Halium utilisée ;
  • bien sûr, et c’est le but principal, utiliser Halium nous apporte un bonne prise en charge matérielle : capture photo, capteurs d’orientation et GPS, accélération vidéo et audio, etc.

Côté 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 que l’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 ;
  • etc.

Envie d’essayer ?

Les mobiles 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 32 bits et 64 bits 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 Bluez 4 à Bluez 5 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 HTML 5) ;
  • passer à un cadriciel 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.

Aller plus loin

  • # Ressources?

    Posté par  . Évalué à 8.

    Super projet, s'il arrive à faire comme les distributions GNU/Linux sur PC : réutiliser les vieilles machines, dont les logiciels ne sont plus supportés par les fabricants.

    J'ai ainsi un très courant Samsung Galaxy One qui n'a que 256Mo de RAM. Est-ce envisageable de l'utiliser basiquement avec LuneOS?

    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: Ressources?

      Posté par  . Évalué à 6.

      Malheureusement non, 256Mo de RAM ça risque de ne pas suffire. Actuellement notre recommandation c'est 1Go de RAM et un noyau Linux >= 3.4. Donc même si on faisait un effort pour tenir sur 256Mo de RAM, ça coincera sûrement au niveau du noyau.

      De plus apparemment personne n'a jamais testé libhybris sur ce matériel ( Matériel pris en charge par libhybris ) donc j'ai peu d'espoirs.

  • # consolidation Qt

    Posté par  . Évalué à 10.

    Ça fait quand même pas mal de projets d'OS pour smartphone libres (ou moins) qui reposent sur Qt:
    -Plasma mobile
    -LuneOS
    -Ubuntu Touch
    -Sailfish OS

    Arrivé là, est-ce qu'il y aurait moyen de consolider encore un peu plus une base smartphone Halium+Qt et laisser chaque projet se concentrer sur tout ce qui se passe au-dessus de Qt?
    En particulier, ça mettrait un tronc commun pour le noyau, systemd et pousser jusqu'aux libs Wayland et Qt.

    Si Halium fait tellement gagner, peut-être qu'une base "jusqu'au Qt" ferait encore mieux?

    • [^] # Re: consolidation Qt

      Posté par  . Évalué à 10.

      En effet, la question mérité d'être posée. Cependant plus on ajoute de composants dans une base commune, et plus on va remarquer les différences de besoin entre les projets…

      Le but de Halium, en soi, est de mettre en commun l'effort de réutilisation des pilotes Android. Il faut bien voir qu'Android a sa propre chaîne de compilation, et se base sur une bibliothèque de base différente de tout le reste de l'écosystème. Là où on perd du temps avec Android, c'est justement parce qu'il faut faire ce grand écart.

      Ce gap est bien moindre lorsqu'on parle de Qt: c'est bien intégré à l'écosystème "classique" glibc/systemd/Wayland/DBus, on le compile avec notre GCC 6 classique (là où Android utilise souvent un GCC 4.8)… La majorité de l'effort va finalement consister à adapter légèrement Qt pour que l'intégration dans la distribution soit aux petits oignons. Et ça, malheureusement, ce n'est pas quelque chose qui peut être mis en commun.

      Regardons les distributions que tu as citées:
      - Plasma Mobile: je connais peu, mais apparemment ils utilisent un Qt peu patché, proche de la dernière version
      - LuneOS: pareil, Qt dernière version, mais QtWebEngine est patché pour ajouter des intégrations dans le coeur Chromium
      - Ubuntu Touch: un seul mot: Mir ;)
      - SailfishOS: ils ont mis 2 ans à passer de Qt 5.2 à Qt 5.6, et comme ils ont des engagements commerciaux la priorité est à la maîtrise et la stabilité des APIs. Donc Qt 5.9, c'est pas pour demain…

      En résumé, le travail fourni pour intégrer Qt est spécifique à chaque distribution; je ne crois pas qu'on y gagnerait à essayer de mettre ça en commun. Ou alors ça devient une nouvelle distribution - un peu comme PostmarketOS.

  • # Project Treble et Halium

    Posté par  (site web personnel) . Évalué à 2.

    Avec treble, on peut espérer avoir un support simplifier pour les nouveaux téléphones, et avoir plus de ROMs/distributions disponible.

    Enfin j'espère..

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.