21ème article d'avancement du Librem 5

Ceci est une traduction libre de cet article concernant les avancées de la société Purism concernant le smartphone Librem 5. L'article original est sous licence CC BY-SA 4.0 tout comme ma traduction.

Ce smartphone a bénéficié d'un crowdfunding et a pour but d'apporter une alternative à Android en proposant un OS basé sur Linux et toutes les briques logicielles opensource qui vont avec. Ils collaborent avec le projet Gnome, le projet KDE, UBPorts et le projet Matrix. Ils sont assez transparents sur leurs avancées et sont reconnus pour leur ligne de laptops.

Bref, voilà l'article :


Bonjour tout le monde ! Et bhé, ces dernières semaines fûrent bien remplies. Voilà un rapport détaillé des avancées faites sur les différents fronts du Librem 5.

Conférences

Diverses collaborations in situ ont eu lieu. Il y a eu un hackfest en Allemagne où une grande partie des membres de l'équipe Librem 5 s'est rendu pour bidouiller (hacker), travailler et renforcer l'esprit d'équipe. Nous avons également participé au Libre Application Summit où nous avons donné une conférence au sujet du Librem 5. C'était aussi génial d'avoir pu participer au XDC où nous avons pu avoir des discussions utiles concernant wlroots et Pengutronix.

Design

Le design logiciel avance et s'améliore afin que les devs puissent avancer. Voici certains de ces derniers designs :

Travail logiciel

Les images

Les images sont toujours basées sur Debian Buster, mais elles peuvent maintenant se baser sur PureOS. Pour décrouter un peu les images, quelques scripts SSHd pour la génération des clés ont été ajoutés à l'image et des dépendances ont été déplacés dans le paquet librem5-base.

Comme à la fois les kits de devs et les téléphones se baseront sur des cartes i.MX 8M SoM, beaucoup de travail a été fait pour rendre le kernel 4.18 compatible et construire les images pour ces cartes.

Phosh

Dans phosh, de nombreux bugs ont été corrigés et le code a été nettoyé. Des efforts ont également été fait concernant les traductions : l'allemand et le français ont été mis-à-jour, les entêtes po ont été standardisés pour simplifier le travail pour de nouveaux traducteurs.

Un premier app switcher a été ajouté ainsi qu'un premier app switcher tactile.

Capture d'écran de l'app switcher

Le panneau de tête a été nettoyé ce qui le rend plus joli et le rapprochant un peu plus des maquettes.

Capture d'écran montrant le fameux panneau ainsi que des terminaux.

Si cela ne suffisait pas, la première version (0.0.1) de phosh a été libellé !

GNOME Settings

L'application GNOME Settings commence à être porté au Librem 5 et continue d'être travaillé.

gnome-session/gnome-settings-daemon

Un bug upstream concernant le démarrage de gnome-session en mode débug est résolu.

Sur le plan des plugins il y a eu des avancées. Un premier plugin WWAN a été proposé upstream pour prendre en charge le déverrouillage de la SIM par code PIN.

Ce gnome-settings-daemon a été ajouté aux images en attendant qu'il soit intégré upstream afin de déjà pouvoir gérer le déverrouillage de la SIM.

capture d'écran du vérrouillage de l'OS demandant un code PIN

Wlroots/Keyboard

De nombreuses améliorations ont eu lieu au niveau de virtboard. Parmis les nombreuses corrections de bugs, il y a notamment eu celui concernant l'affichage et la mise à l'échelle. L'input-method-v2, la text-input-v3 et le liant ont été ajoutés à virtboard et input-method-v2 est en cours d'adoption upstream. Virtboard apparait désormais et démarre par défaut sur les images et le clavier a été amélioré pour se comporter comme on l'attendrait.

Dans le même ordre d'idée, des changements ont été adoptés upstream dans wlroots et GTK+ en plus de tout ça. Nous avons corrigé des problèmes concernant les claviers virtuels dans GTK+. Il est important que les mouvements du curseur soit traités relativement aux surfaces et pas uniquement à l'écran. Nous avons donc codé un patch à ce propos. Il y avait aussi un problème sur la génération de tag qui est corrigé et soumis upstream.

Calls

L'application Calls a connu de nombreuses améliorations récemment avec de nombreuses corrections de bugs, des avancées audio et un ravalement de façade de l'interface utilisateur. On peut désormais ouvrir le GTK+ Inspector sur la version flatpak de Calls.

Pour préparer les kits de développement, un driver dérivé de QMI pour ModemManager pour les modems SIMCom a été complété pour mélanger QMI et les commandes AT pour le streaming audio et ajouter le support des appels audio. Un paquet Debian de ModemManager a été créé et contient ces patchs pour les appels.

Puisque les modems utilisés sur les téléphones seront potentiellement différents de ceux des kits de devs, des tests sont faits sur le Gemalto PLS8.

Il y a aussi eu une refonte partielle de l'interface utilisateur avec de nombreux changements intéressants à venir !

Il y a un nouveau daemon, Hægtesse pour convoyer le flux de données audio entre le modem et PulseAudio. Le daemon est intégré dans nos images et se lance au démarrage.

Libhandy

La bibliothêque libhandy a aussi eu droit à son lot d'avancées depuis la dernière fois. En plus des corrections de bugs mineurs, deux widgets ont été ajoutés. Un widget HdyTitleBar a été ajouté pour contourner les glitches de la barre de titre et un widget HdyHeaderGroup a aussi été ajouté pour mettre à jour automatiquement tous les entêtes des barres. Le widget existant HdyLeaflet a reçu une nouvelle propriété pour plier. Pour aider la communauté à jouer avec libhandy, l'application d'exemple de libhandy a été mise à jour avec des corrections de style.

Libhandy 0.0.3 est sortie et envoyée à Debian unstable mais une nouvelle version 0.0.4 est sortie entre-temps.

C'est d'autant plus excitant de voir libhandy utilisé dans la nature. Podcasts est la première application tiers à recourir à libhandy ! Voilà une courte vidéo démontrant les avancées de libhandy et le comportement actuel.

GTK+

Notre collaboration rapprochée avec l'équipe GTK+ a amené de nombreux changements dans les séparateurs entre autre. Un bug de style sur les séparateurs selection-mode a été rapporté et l'apparence des séparateurs a été amélioré lorsqu'on sépare deux barres d'entête en mode sélection. Des corrections supplémentaires pour Adwaita concernant les séparateurs, les problèmes de barre de titre et la simplification des réglages de sélection de mode ont été intégré upstream.

D'autres corrections et des modifications de la documentation ont été intégrés upstream. Par exemple, une correction à propos de l'entrée des [numéros de séries lorsque text-input est en cours](https://gitlab.gnome.org/GNOME/gtk/merge_requests/339] (c'est un pré-requis pour le clavier).

Et si vous ne l'avez point encore lu, jetez un œil à l'article de blog de Guido Gunther à propos de GTK+ et des application id. Cela vous sera d'une aide précieuse si vous prévoyez d'écrire des applications flatpak pour le Librem 5.

Upower

Upower est un bon candidat pour devenir l'API que les autres applications utiliseront pour par exemple obtenir des informations concernant la batterie donc de nombreuses améliorations de la documentation ont été ajouté.

Contacts

L'application Contacts doit être rendu adaptive grâce à libhandy donc voilà le fork adaptif de Contacts. Des modifications ont été apportées upstream pour pouvoir être potentiellement fusionné. Une simple correction du style de séparateur et une simple correction des conditions de taille ont été soumis upstream. L'application de menu et de raccourcis des comptes online devaient également bouger.

Messaging

L'application Chatty apporte de nombreuses améliorations et changements. Chatty peut également être empaqueté dans un flatpak désormais.

La vue "en bulle" est en train d'être transformé en widget et une version basique du widget msg-list est en train d'être completée et sera prochainement inclue dans libhandy. Quelques modifications dans GTK+ étaient requis pour afficher les conversations libpurple dans des chat-lists séparées et la liste d'amis est désormais fonctionnelle !

Un plugin libpurple est à l'essai pour la conservation des messages dans une base de données SQLite. Mais pour rendre cela utilisable, il faut d'abord remplacer les fonctionnalités de journalisation de libpurple avec un sous-système capable de gérer la signalisation des SMS (envoyé/lu…). Un parser pour les fichiers de log purple a été créé pour que l'historique de conversation soit affiché dans msg-bubbles. Le parser est la solution temporaire pour afficher l'historique des conversations dans message-view pour le moment.

Nous travaillons actuellement sur la gestion des comptes. Quelques écrans de configuration ont été ajoutés pour la création de comptes XMPP et pour les activer/désactiver séparémment. Il y a aussi eu des avancées sur l'interface utilisateur Blist (formattage des entrées, icônes rondes, passer la police en gras lorsque les messages sont non lus, ajout d'un horodatage) pour améliorer l'esthétique.

Kernel/mesa/etnaviv/libdrm

Comme mentionné plus tôt, un nouveau CPU (i.MX8) sera dans les devs kits et les téléphones en lieu et place des I.MX6 initialement prévus. Du coup, il faut redoubler d'effort pour faire tourner un nouveau kernel sur ce nouveau CPU ainsi que sur etnaviv et mesa. Voilà les principaux points.

Puisque les dev kits et les téléphones auront un USB type-C avec Power Delivery, un patch a été soumis upstream pour supporter cela.

Etnaviv fonctionne quasiment avec notre couche drm (direct rendering manager, pas digital right management) sur arm64 avec un kernel 4.18. Etnaviv a été activé sur la version Debian de libdrm. Plus de décalages vers les états sensibles ont été ajouté à etnaviv pour éviter les alertes et un patch a été intégré upstream pour permettre au parser de commandes de travailler.

Notre arbre mesa est disponible en attendant que les patchs soient intégrés upstream. Les compilations aarch64 de mesa ont été amélioré. Un patch pour une vérification d'alignement a été proposé et des problèmes de mappage non mis en cache sur arm64 furent corrigés.

Nous aimerions remercier les mainteneurs d'etnaviv, du kernel linux, libdrm et mesa pour leur support puisque nous nous appuyons fortement sur ce qu'ils ont déjà construis au préalable et qu'ils sont d'une grande aide pour l'intégration upstream de ces patchs.

Fractal

Puisque nous investissons également dans l'effort de fractal pour le chiffrement de bout-en-bout (E2E pour end-to-end), nous sommes contents d'annoncer que le module E2E en développement supporte les fonctionnalités basiques désormais. Nous pouvons déjà commencer à l'intégrer et travailler dessus. Il reste beaucoup de travail à faire, mais on y arrive petit à petit.

Côté matériel

Nos ingénieurs matériel et Nicole travaillent étroitement avec l'équipe d'assemblage des devkits. Pour cela, les fichiers finaux de prototypage (de fabrication de prototype et les dessins d'assemblage de KiCad) ont été envoyé a l'équipe d'assemblage. Nicole s'est rendu à Carlsbad (Californie) pour les assister pour la fabrication, l'assemblage et les tests d'un premier ensemble de devkits pour vérifier la qualité de notre design électronique. Nous avons eu quelques soucis, comme par exemple des composants perdu lors de la livraison qu'il a fallu se re-procurer mais tous les obstacles ont été surmontés ! Si tout se passe bien avec les tests sur ces prototypes, la première fournée de devkits (qui sera livré aux backers) devrait commencer incessement sous peu.

Côté communauté

L'équipe Librem 5 continue de collaborer avec l'équipe Plasma afin de créer une image utilisable avec les devkits. Pour l'instant, des tâches Jenkins sont nécessaires pour construire les paquets Plasma nécessaires et les membres de l'équipe Plasma travaillent avec nous pour corriger les soucis.

La documentation pour devs a vu des mise-à-jour concernant GTK+ et de nouveaux exemples de code.

Puisque nous avons reçu des offres d'aide pour la traduction du système d'exploitation, nous avons monté une instance Zanata publique pour permettre à la communauté de collaborer. Pour l'instant, le projet phosh est disponible sur Zanata, les autres projets suivront (libhandy, calls, chatty, virtboard).

Un grand "Merci !" pour toutes les équipes externes qui nous ont aidé à évaluer et intégrer nos modifications dans les différents projets upstream. Le temps et les contributions de chacun sont grandement appréciées !

Merci pour tout, les gens. Continuer de nous suivre pour le prochain rapport à venir.


Heather Ellsworth

Encore un article qui résume pas mal tout ce qu'ils font un peu partout. C'est pas mal du tout, surtout d'un point de vue kernel.

Mine de rien c'est sympa de voir qu'un produit commercial va permettre à tout un écosystème libre d'avancer et de bien progresser.