April 10, 2022

Des nouvelles de Poezio et de son ecosystème

De nouvelles versions des logiciels proches de Poezio, un client TUI (Terminal UI) pour XMPP, ainsi que Poezio lui-même, sont récemment sorties. Parmi ceux-ci, la bibliothèque XMPP Slixmpp, et les plugins OMEMO de poezio et de slixmpp.

Corrections de bugs et diverses améliorations

Poezio example screenshot 2 Poezio example screenshot 1
Examples de screenshots. Merci jonas’ pour le thème bleu !

Mathieui a déjà rédigé une note de mise à jour pour Slixmpp (en) et je vous invite à la lire ! Cette nouvelle version inclut évidemment plein de corrections de bugs, mais aussi des changements internes concernant une API async, qui peuvent peut-être vous concerner.

Poezio lui aussi a reçu beaucoup d’améliorations.

En interne, d’une part, notre branche par défaut a été déplacée vers « main ». Plein d’annotations de types on été ajoutés, des convertions implicites retirées. La gestion des évènements est maintenant en majorité async. Les API de Slixmpp sont utilisées au profit de celles qui avaient précédemment été refaites pour poezio. Du refactoring, et aussi des améliorations concernant les performances de l’application.

Le support de Pypy3 a été retiré dû au fait que beaucoup d’utilisateurices en arrivaient à utiliser un module cffi spécialement réalisé pour Pypy3 à la place de l’implémentation plus performante en C. Pour celleux qui utilisent Poezio directement à partir des sources et qui n’utilisent pas le script de mise-à-jour, n’oubliez pas de lancer make pour compiler le module en C.

La license a aussi été changée, et Poezio est maintenant sous GPLv3+ ! Même si je ne suis pas particulièrement en faveur de la propriété intellectuelle1, c’est un levier facilement accessible que nous avons contre le capitalisme2. Poezio est aussi un endroit où trouver plein d’exemples d’utilisation de Slixmpp, et en ce sens du code GPL pourrait permettre aux 4 libertés d’atteindre les utilisateurices. Ça nous permettrait aussi d’intégrer poezio-omemo dans poezio directement. Je souhaite personellement que la license de Slixmpp soit aussi changée.

Et d’autres améliorations plus visibles pour les utilisateurices ! Pour en citer quelques-unes, il est maintenant possible d’utiliser des URI comme xmpp:...?join en utilisant /join, la création de salons « impromptus » est maintenant plus fiable et ces salons auront des noms plus courts, ainsi que les noms des tabs dans la barre d’activité qui peuvent être coloré en utilisant Consistent Color Generation avec la configuration autocolor_tab_names à True. Vous pouvez lire plus dans le changelog (en).

Numéros de tab colorés dans Poezio
La couleur du nom de la tab au dessus peut-être inversée (premier/second plan) et ressembler à la barre d'activité en dessous.

Les plugins aussi ont été améliorés. Un nouveau plugin untrackme remplace remove_get_trackers qui est maintenant déprecié. Link Mauve a aussi développé un plugin appelé sticker (pour les envoyer), similaire à ce que Movim fait depuis des années. La gestion des présences étendues (activity, gaming, mood, user tune) a été enlevée de Poezio et déplacée dans le plugin user_extras. Ainsi que plein de corrections.

Le plugin sticker de Poezio en action !

Beaucoup de ces améliorations et corrections ont été réalisées par mathieui, qui est de loin le plus gros contributeur sur cette version, et de manière générale la personne qui connait le mieux le projet. Merci aussi à louiz de nous avoir fourni l’infrastructure tout ce temps, et à eijebong, Ge0rG, Kaghav Gururajan, kaliko, Thomas Hrnciar, jonas’ et southerntofu pour les nombreux patchs.

Les archives

La gestion de l’archive (MAM) faisait déjà partie de la dernière version, mais elle a été retravaillée, et devrait aussi être plus fiable.

En ouvrant une tab, Poezio va télécharger autant de messages nécessaires pour remplir 2 pages d’écran, si il n’a aucune archive pour cette tab. Par défaut, les archives sont enregistrées automatiquement en local, ce qui permet de ne pas re-télécharger les messages la prochaine fois qu’ils sont demandés, mais de les lire directement de la copie locale.

Pour lire des messages plus anciens dans une tab, il suffit de scroller avec PageUp et Poezio se chargera d’aller chercher plus de messages si nécéssaire.

Tout ceci est configurable avec des nouvelles options, comme mam_sync ou mam_sync_limit pour activer/désactiver l’utilisation de MAM ou combien de messages sont téléchargés au plus. Et aussi use_log pour configurer l’enregistrement des messages en local.

Du travail autour de la gestion des ID de messages – que notre format de log n’enregistre pas – devra être prévu par la suite pour permettre de dédupliquer plus facilement les messages.

Chiffrement de bout-à-bout

L’API E2EEPlugin de Poezio a été améliorée pour répondre aux besoins des plugins poezio-omemo et slixmpp-omemo ainsi qu’aux changements dans la bibliothèque OMEMO. Ces deux plugins ont aussi eu le droit à leur lot de changement !

Les heartbeats (« pulsation ») sont maintenant supportés. Les heartbeats sont des messages méta qui ne contiennent que les informations nécessaires au chiffrement, et sont utilisés pour renforcer la forward secrecy (confidentialité persistante). Ceci est particulièrement utile dans des clients comme Poezio qui peuvent tourner en fond, et qui reçoivent beaucoup de messages sans pour autant y répondre.

D’autres changements sont apparus, comme la coloration des empreintes de clés (fingerprints) utilisant la méthode décrite dans Consistent Color Generation – comme spécifié dans la version actuelle (0.8) d’OMEMO – ou l’envoi de fichiers chiffrés (URI aesgcm).

Ce qui n’a pas encore changé, c’est le manque d’interface utilisateur, et la gestion de la confiance des clés. Avec un peu de motivation pour travailler sur l’interface, ça ne devrait pas trop tarder.

La suite

Dans l’ensemble, il n’y a pas ou peu de changements révolutionnaires, mais cette version vient corriger plein de petites coupures qui je l’espère devraient rendre la vie des utilisateurices plus agréable. Ce qui me fait penser que même si Poezio est loin d’être parfait, il n’y a plus à priori de gros changements à faire.

Il reste pourtant quelques changements qui vont demander beaucoup de refactoring, des changements comme la gestion de comptes multiples, ou de façon général une maintenance plus facile.

Nous avons décidé de convertir Poezio vers Rust. D’une part pour être capable de refactorer le projet plus facilement, mais aussi parce que c’est un langage que nous avons appris à apprécier au fil des années via l’expérience d’autres projets, et plus particulièrement au sein de xmpp-rs, une bibliothèque XMPP en Rust.

Tout ça devrait commencer dès la version sortie, et nous invitons les personnes intéressées à nous rejoindre !

P.S.: Je suis à la recherche des screenshots de Poezio avec différentes configurations pour afficher publiquement, sous license libre. N’hésitez pas à envoyer vos images en qualité plutôt élevée à blog à bouah.net. Et aussi, n’oubliez pas de demander la permission aux pixels que vous prenez en photo !


  1. TODO: article à écrire. Ça se résumerait certainement à « Abolition de la propriété intellectuelle, ainsi que la propriété privée » ↩︎

  2. Quand ils ne décident pas de l’ignorer et de nous faire le doigt. ↩︎

© Maxime “pep.” Buquet 2022. Sous license CC-BY-SA 4.0 sauf indication contraire.

Powered by Hugo & Kiss.