231 lines
11 KiB
Markdown
231 lines
11 KiB
Markdown
---
|
||
title: "Des nouvelles de Poezio et de son ecosystème"
|
||
date: 2022-04-10T12:00:00+01:00
|
||
translationKey: 'poezio-0.14'
|
||
tags: [XMPP, Poezio, Slixmpp, OMEMO, Rust]
|
||
---
|
||
|
||
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][slix], et les plugins OMEMO de
|
||
[poezio][poezio-omemo] et de [slixmpp][slix-omemo].
|
||
|
||
# Corrections de bugs et diverses améliorations
|
||
|
||
<figure class="center-img">
|
||
<a href="/2022/04/poezio-full.avif">
|
||
<picture>
|
||
<source srcset="/2022/04/poezio-full.avif" type="image/avif" />
|
||
<img
|
||
decoding="async"
|
||
src="/2022/04/poezio-full.png"
|
||
alt="Poezio example screenshot 2"
|
||
/>
|
||
</picture>
|
||
</a>
|
||
<a href="/2022/04/poezio-full.2.avif">
|
||
<picture>
|
||
<source srcset="/2022/04/poezio-full.2.avif" type="image/avif" />
|
||
<img
|
||
decoding="async"
|
||
src="/2022/04/poezio-full.2.png"
|
||
alt="Poezio example screenshot 1"
|
||
/>
|
||
</picture>
|
||
</a>
|
||
<figcaption>Examples de screenshots. Merci jonas’ pour le thème bleu !</figcaption>
|
||
</figure>
|
||
|
||
|
||
[Mathieui][mathieui] a déjà rédigé une [note de mise à jour pour Slixmpp
|
||
(en)][slix180] 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+][GPL] !
|
||
Même si je ne suis pas particulièrement en faveur de la propriété
|
||
intellectuelle[^0], c'est un levier facilement accessible que nous avons
|
||
contre le capitalisme[^1]. 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.
|
||
|
||
[^0]: *TODO: article à écrire.* Ça se résumerait certainement à « Abolition de
|
||
la propriété intellectuelle, ainsi que la propriété privée »
|
||
[^1]: Quand ils ne décident pas de l'ignorer et de nous faire le doigt.
|
||
|
||
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][XEP-0392] avec la configuration
|
||
[`autocolor_tab_names`][autocolor_tab_names] à `True`. Vous pouvez lire plus
|
||
[dans le changelog (en)][poezio-changelog].
|
||
|
||
<figure>
|
||
<img
|
||
decoding="async"
|
||
src="/2022/04/poezio-tab-colors.png"
|
||
alt="Numéros de tab colorés dans Poezio"
|
||
/>
|
||
<figcaption>La couleur du nom de la tab au dessus peut-être inversée
|
||
(premier/second plan) et ressembler à la barre d'activité en
|
||
dessous.</figcaption>
|
||
</figure>
|
||
|
||
Les plugins aussi ont été améliorés. Un nouveau plugin `untrackme` remplace
|
||
`remove_get_trackers` qui est maintenant déprecié. [Link Mauve][linkmauve] a
|
||
aussi développé un plugin appelé `sticker` (pour les envoyer), similaire à ce
|
||
que [Movim][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.
|
||
|
||
<figure>
|
||
<video controls="true" poster="/2022/04/poezio-sticker.png">
|
||
<source src="/2022/04/poezio-sticker-av1.webm" type="video/webm;codecs=av1" />
|
||
<source src="/2022/04/poezio-sticker-vp9.webm" type="video/webm;codecs=vp9" />
|
||
<source src="/2022/04/poezio-sticker-vp8.webm" type="video/webm;codecs=vp8" />
|
||
<picture>
|
||
<source srcset="/2022/04/poezio-sticker.avif" type="image/avif" />
|
||
<img
|
||
decoding="async"
|
||
src="/2022/04/poezio-sticker.png"
|
||
alt="L'outil de sélection des stickers devant, avec Poezio et Dino en fond."
|
||
/>
|
||
</picture>
|
||
</video>
|
||
<figcaption>Le plugin sticker de Poezio en action !</figcaption>
|
||
</figure>
|
||
|
||
Beaucoup de ces améliorations et corrections ont été réalisées par
|
||
[mathieui][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][XEP-0313]) 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`][mam_sync] ou [`mam_sync_limit`][mam_sync_limit] pour
|
||
activer/désactiver l'utilisation de [MAM][XEP-0313] ou combien de messages
|
||
sont téléchargés au plus. Et aussi [`use_log`][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][FS]). 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][XEP-0392] -- comme spécifié dans la version actuelle (0.8)
|
||
d'[OMEMO][XEP-0384] -- 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][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 !
|
||
|
||
[poezio]: https://lab.louiz.org/poezio/poezio
|
||
[slix]: https://lab.louiz.org/poezio/slixmpp
|
||
[poezio-omemo]: https://lab.louiz.org/poezio/poezio-omemo
|
||
[slix-omemo]: https://lab.louiz.org/poezio/slixmpp-omemo
|
||
[movim]: https://movim.eu
|
||
[xmpp-rs]: https://xmpp.rs
|
||
|
||
[mathieui]: https://mathieui.net
|
||
[linkmauve]: https://linkmauve.fr
|
||
|
||
[poezio014]: https://lab.louiz.org/poezio/poezio/-/tags/v0.14
|
||
[poezio-changelog]: https://lab.louiz.org/poezio/poezio/-/raw/v0.14/CHANGELOG
|
||
[slix180]: https://lab.louiz.org/poezio/slixmpp/-/tags/slix-1.8.0
|
||
[slix181]: https://lab.louiz.org/poezio/slixmpp/-/tags/slix-1.8.1
|
||
[slix182]: https://lab.louiz.org/poezio/slixmpp/-/tags/slix-1.8.2
|
||
[poezio-omemo050]: https://lab.louiz.org/poezio/poezio-omemo/-/tags/v0.5.0
|
||
[poezio-omemo051]: https://lab.louiz.org/poezio/poezio-omemo/-/tags/v0.5.1
|
||
[poezio-omemo060]: https://lab.louiz.org/poezio/poezio-omemo/-/tags/v0.6.0
|
||
[slix-omemo060]: https://lab.louiz.org/poezio/slixmpp-omemo/-/tags/v0.6.0
|
||
[slix-omemo061]: https://lab.louiz.org/poezio/slixmpp-omemo/-/tags/v0.6.1
|
||
[slix-omemo070]: https://lab.louiz.org/poezio/slixmpp-omemo/-/tags/v0.7.0
|
||
|
||
[GPL]: https://fr.wikipedia.org/wiki/Licence_publique_g%C3%A9n%C3%A9rale_GNU
|
||
[FS]: https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante
|
||
|
||
[XEP-0313]: https://xmpp.org/extensions/xep-0313.html
|
||
[XEP-0384]: https://xmpp.org/extensions/xep-0384.html
|
||
[XEP-0392]: https://xmpp.org/extensions/xep-0392.html
|
||
|
||
[mam_sync]: https://doc.poez.io/configuration.html#term-mam_sync
|
||
[mam_sync_limit]: https://doc.poez.io/configuration.html#term-mam_sync_limit
|
||
[use_log]: https://doc.poez.io/configuration.html#term-use_log
|
||
[autocolor_tab_names]: https://doc.poez.io/configuration.html#term-autocolor_tab_names
|