I develop stuff and have opinions on things -
About me/Contact

Articles:

Poezio 0.8 (aka “we’re still alive”)

Deux ans déjà depuis la sortie de poezio 0.7.5 (ainsi que les releases urgentes 0.7.5.1 et .2), il est donc grand temps de sortir une nouvelle version, au moins afin de marquer une étape, et d’avoir une version « stable » pas entièrement décorrélée de la version de développement.

On ne prévoit malgré tout pas de se mettre à une numérotation des versions qui ait un sens particulier, étant donné que ça sera de toute façon ré-évalué à la version d'après. De plus, un certain nombre de choses prévues pour la 0.8 n’ont pas été faites, même si la liste des changements reste assez importante.

poezio_0.8_screenshot

Nouveautés

Nouveau plugin OTR

Le plugin OTR a subi une réécriture complète afin d’exploiter la bibliothèque pure-python-otr (sous licence LGPL). Il devrait être à présent fiable et mature, modulo le support de SMP (vérification d’un secret partagé directement dans poezio) et l'interprétation automatique des messages envoyés en HTML.

La bibliothèque utilisée a néanmoins quelques bugs en python3, mais ils sont principalement cosmétiques (traitement des messages d’erreurs qui plante, aboutissant à un message d’erreur générique au lieu d’une explication précise), et le reste a été patché tant bien que mal.

Documentation du plugin OTR.

Amélioration de la zone de frappe et du roster

La zone d’input devrait être plus agréable à utiliser avec les messages longs, en faisant des décalages de blocs de caractères plutôt qu’un à un. Le formatage de texte en utilisant les propriétés étendues fournies par XHTML-IM (les couleurs, le gras/souligné/etc…) devrait être plus visuel,avec le début de la balise affiché clairement, façon weechat mais avec une visualisation du résultat.

poezio_edit

La recherche dans le roster était relativement inefficace ou cassée dans les versions précédentes, et je pense pouvoir affirmer qu’elle fonctionne plutôt bien maintenant, même si elle est encore assez lente.

Sécurité

Cette version force le chiffrement de la connexion entre poezio et le serveur. Naturellement, ce comportement peut être désactivable en mettant l’option force_encryption à false.

Parallèlement au chiffrement obligatoire, poezio intègre désormais une liste des modes de chiffrement autorisés qui rappellent étrangement ceux de prosody. La liste des modes peut également être configurée pour les utilisateurs qui savent ce qu’ils font et qui veulent plus ou moins de sécurité (comme par exemple, n’autoriser que le chiffrement avec Forward Secrecy).

Note: Ces nouveaux paramètres empêchent la connexion aux serveurs de gmail, mais c’est indiqué dans la documentation avec les paramètres le permettant. (et non, réduire la sécurité offerte par poezio par défaut pour gmail n’est pas une option)

Documentation sur la sécurité dans poezio.

Réorganisation des onglets

Les versions précédentes de poezio numérotaient les onglets de façon purement incrémentale, sans possibilité de réorganisation. Il est maintenant possible de changer cet ordre en choisissant de conserver des « trous » entre les ongles quand on en ferme un, et de déplacer les onglets comme on le désire.

Pour les gens qui conservent des instances de poezio qui tournent en permanence -comme par exemple les auteurs de poezio-, il est pratique de pouvoir réorganiser les onglets de façon à les replacer comme ils étaient lors des exécutions précédentes sans avoir à modifier l’ordre des marque-pages et relancer.

Personal Eventing Protocol

Poezio permet désormais d’afficher l’humeur et l’activité (et autres informations) de vos contacts au travers de petites icônes (caractères utf-8, évidemment) qui apparaîtront à côté de leur nom dans le roster, et qui sera lisible en positionnant le curseur dessus.

Vous pouvez également choisir d’être notifié de ces changements de façon globale ou par contact.

PEP dans la documentation.

Verrouillage des conversations

Dorénavant, poezio va suivre les recommandations pour le verrouillage des conversations proposées dans la XEP-0296, qui vont donc faire que les conversations ouvertes par un contact ou initiées avec le JID global de ce contact seront verrouillées ou dévérouillées en fonction des présences envoyées par ce contact. En pratique, cela signifie que la plupart des conversations avec se contact devraient maintenant se retrouver dans un seul onglet.

Enregistrement des erreurs

La plupart des erreurs rencontrées par poezio durant son exécution seront dorénavant enregistrées dans $XDG_DATA_HOME/poezio/errors.log, afin de faciliter le report des bugs. Si vous y jetez un œil de temps à autre et que vous y voyez des erreurs parlant de « last activity » ou « correction », c’est relativement normal. En revanche, si vous constatez un comportement anormal et que vous voyez des erreurs apparaître au même moment dans le fichier, venez en parler.

Nouvelle documentation

La documentation est maintnant basée sur sphinx, et devrait être plus complète et plus facilement naviguable (cf un de mes précédents articles à ce sujet).

Message Carbons

Poezio prend maintenant en charge la XEP-0280, qui permet de dupliquer les conversations privées avec vos contacts entre vos différents appareils connectés.

Si vous initiez une conversation avec Yaxim (ou n’importe quel autre client) depuis votre téléphone, puis que vous arrivez devant votre ordinateur avec un poezio qui était lancé durant cette conversation, vous devriez avoir reçu tous les messages que vous avez envoyés et reçus, affichés de manière transparente. Cela permet de basculer sur un autre client au besoin, sans perdre le contexte de la conversation.

Cette fonctionnalité est désactivée par défaut, bien que cela puisse changer dans les versions futures.

Carbons dans la documentation.

Correction des messages

Cette version prend également en charge la XEP-0308, qui permet aux utilisateurs de corriger des messages dans un salon de discussion ou une discussion privée. Cette fonctionnalité est utilisable avec la commande /correct, ainsi qu’un plugin qui permet de visualiser les versions d’un même message.

Attention toutefois: cette fonctionnalité risque de ne jamais marcher sur des serveurs comme conference.jabber.org, car le serveur procède à une réécriture de l’identifiant unique de chaque message, dont cette fonctionnalité a besoin.

poezio_correct

Attention également, les clients ne supportant pas cette fonctionnalité verront simplement un deuxième message correspondant à la deuxième version que vous avez envoyer. Merci donc de ne pas abuser de cette fonctionnalité.

Correction dans la documentation.

Nouveau format des logs

Notre ancien format de logs était ambigu à traiter et n’avait pas certaines informations essentielles, c’est pourquoi nous avons décidé d’adopter le format utilisé par mcabber, en le modifiant (ajoutant un espace insécable après le nick, afin d’être sûr de parser le message correctement) car la syntaxe originale était ambigue mais fonctionnait 99% du temps.

Cela nous permet de réduire la fragmentation en ayant un format de log à peu près commun entre les clients, et cela nous permet également de ré-utiliser les fichiers de syntaxe vim de mcabber.

Et bien plus encore

Évidemment, tout ce qui a changé ne se résume pas à cette courte liste, et il y a d’autres nouvelles fonctionnalités comme un nouveau parseur XHTML, et bien sûr des corrections de bugs. Vous pouvez regarder le fichier CHANGELOG ou l’historique git pour plus de raisons de mettre à jour.

Pour les packageurs

Cette version stable dépend enfin d’une version stable upstream de SleekXMPP (la 1.2), ce qui devrait permettre un packaging plus simple dans d’autres distributions et éviter le risque d’une API qui casse après release comme ce fut le cas pour la 0.7.5.

Je suis également heureux d’annoncer que le paquet Fedora est finalement à jour, grâce à Casper, et je vais bien évidemment continuer à maintenir le paquet Archlinux.

À propos des bugs

Le processus de debug de poezio passe principalement par le dogfooding, ce qui veut dire que s’il y a des fonctionnalités ou recoins de poezio que nous n’utilisons pas souvent, ils pourraient ne plus marcher sans qu’on s’en rende compte (comme par exemple les carbons, les marque-pages stockés sur le serveur, le chiffrement e2e…).

C’est pourquoi les bug reports avec des scénarios reproductibles et des traces de debug nous aident grandement à déterminer ce qui ne va pas. Si vous trouvez un bug qui n’est pas corrigé dans la dernière version git, vous êtes encouragé à le signaler.

Si vous avez des remarques ou commentaires à propos de cet article, n’hésitez pas à me contacter.