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

Articles:

Poezio 0.10

Initialement, la version suivant la 0.9 aurait dû être la 1.0, mais je n’avais pas envie d’attribuer la version 1.0 à l’état actuel de poezio ; donc voici la 0.10 !

Poezio est un client XMPP qui fonctionne dans un terminal et qui veut donner la même impression que les clients IRC comme irssi ou weechat ; c’est d’ailleurs pourquoi les premières versions ne prenaient en charge que les salons de discussion.

Nouveautés

Performances

Link Mauve a passé pas mal de temps à rendre poezio plus rapide, ce qui le rend plus agréable et plus réactif sur des machines avec une puissance de calcul faible dans une situation avec beaucoup de contacts et de salons remplis.

Il a ainsi passé beaucoup de temps à profiler poezio pour déterminer les endroits critiques pour les performances, ainsi qu’à se plaindre de la lenteur de python pour des opérations des plus classiques ; ensuite est venu un nombre de micro(et pas si micro que ça)-optimisations. Son objectif à terme est de rendre tout compilable via cython, afin d’avoir des performances encore meilleures.

Stream Management (XEP-0198)

Allant de pair avec la réparation du plugin slixmpp pour la XEP-0198 est venue l’implémentation dans poezio. Il n’est néanmoins pas activé par défaut car il ajoute une quantité substantielle d’échanges avec le serveur, et n’est pas foncièrement utile dans les cas standard d’utilisation de poezio (i.e. des sessions longues laissées à tourner dans une fenêtre screen ou tmux). Il suffit de mettre l’option idoine à true pour le réactiver.

Cette extension (qui a besoin d’une prise en charge côté serveur) permet à un client de restaurer une session après une déconnection abrupte, tant qu’un certain délai n’est pas dépassé côté serveur. Elle permet également d’avoir une meilleure fiabilité dans le flux entre le client et le serveur en ayant des accusés de réception à intervalle régulier avec des numéros de séquence. Si les numéros de chaque côté ne correspondent pas, l’entité qui a envoyé les messages manquants les renvoie simplement à l’autre.

Activation de carbons

C’était un oubli, mais un oubli notable ; l’extension “Carbon Copies (XEP-0280)” est maintenant activée par défaut dans poezio 0.10. Cette extension permet une transition naturelle entre différents terminaux xmpp en dupliquant les messages reçus et envoyés sur chaque terminal. On peut donc continuer sur son ordinateur une conversion entamée sur son téléphone en voyant tous les messages.

Fichier de configuration commenté

Encore un oubli : comme les options du fichier de configuration étaient décommentées par défaut (et que ce fichier est copié au premier lancement de poezio), il n’y avait aucun moyen de savoir si une valeur était là parce que l’utilisateur le désirait, ou si c’était juste la valeur par défaut. Il n’y avait donc pas de possibilité de changer les valeurs par défaut dans les nouvelles versions pour les gens utilisant déjà poezio. En fait, il n’y en a toujours pas, mais dorénavant les options du fichier de configuration sont toutes commentées par défaut, donc les nouveaux utilisateurs n’auront pas ce problème.

P.S. : Il est possible d’utiliser poezio -c pour voir quelles options diffèrent de leur valeur défaut.

Script poezio_logs

Les fichiers de logs de poezio sont depuis un moment déjà dans un format proche de mcabber. Cependant, lire ces logs depuis poezio est au mieux compliqué, mais surtout impossible. Même si ce problème est connu et voué à être résolu un jour, c’est toujours appréciable de pouvoir lire ses logs sans avoir à se coltiner le format spécifique de stockage.

Cette release inclut donc un outil poezio_logs qui reçoit en paramètre le chemin d’un fichier de logs et sort le résultat nettoyé sur la sortie standard, avec quelques couleurs. Il peut également prendre quelques paramètres pour enlever la couleur, la date et heure, ou les messages d’information.

Vérification HTTP (XEP-0070)

L’invité surprise de cette release est l’arrivée d’un onglet de vérification de requêtes HTTP utilisant la XEP-0070 pour authentifier des requêtes HTTP en utilisant seulement votre JID.

http_verif

Un plugin mediawiki est en cours d’écriture afin de tirer parti de cette extension, et un plugin wordpress est déjà disponible depuis un bon moment. Comme les composants comme celui-là parlent en HTTP, aucune prise en charge d’XMPP n’est requise dans l’application qui fait la vérification ; il suffit d’entrer votre JID, puis de vérifier et accepter la requête dans votre client.

Changement de l’avertissement de certificat

La façon qu’avait poezio d’afficher un changement de certificat auparavant n’était vraiment pas pratique et, après avoir implémenté la XEP-0070, c’était naturel de réutiliser l’onglet créé pour l’occasion avec des couleurs différentes pour avoir une façon plus agréable de vérifier le nouveau certificat (particulièrement depuis le passage de SHA-1 vers SHA-512).

cert_warn

Détournement des corrections de messages

Cela s’apparente plus à de l’abus de protocole qu’autre chose, mais puisque nous avons déjà un nombre conséquent de plugin « rigolos », en voici deux nouveaux :

  • marquee, qui reproduit le comportement d’une balise html <marquee/> en déplaçant du texte de gauche à droite dans une boucle, tout ça dans un seul message en utilisant les corrections.
  • dice, pour faire « rouler » un certain nombre de dés durant une durée fixe, une fois de plus dans un seul message en utilisant les corrections.

Indication de l’état du client (CSI, XEP-0352)

CSI est une extension plutôt portée sur le mobile qui demande un support côté client et côté serveur, et qui permet au client de dire au serveur qu’il est "off" (par exemple, un client mobile avec l’écran éteint en étant dans une poche).

Étonamment, cette XEP s’applique plutôt bien à poezio, puisque le plugin screen_detach fait exactement ça, en ayant un état "off" et un état "on".

Régler l’état à actif ou inactif permet au serveur d’activer un certain nombre de filtres pour limiter les échanges entre le client et le serveur (et donc les réveils du téléphone en cas d’information inutile). Par exemple, quand l’écran est éteint, le client n’a que faire des informations de présence des contacts, qui seront donc filtrées, alors qu’il est encore intéressé par des nouveaux messages.

Les filtres activés sont à la discrétion de l’administrateur du serveur.

VCards

Prendre en charge VCard-Temp (XEP-0054) qui permet de récolter des informations sur son interlocuteur est toujours appréciable, et cette version ajoute un plugin pour visualiser les informations fournies par une entité distante. L’implémentation est encore un peu brute car elle n’implémente qu’une partie de la spécification et réutilise un onglet de poezio qui n’était pas fondamentalement prévu pour ça, mais cela s’améliorera.

Bien sûr, une fois que la prise en charge de vcard-temp sera finalisée, celle de Vcard4 (XEP-0292) viendra.

Bits of Binary

Bien que poezio ne dispose toujours pas de vraies capacités de partage de fichiers, nous avons désormais un plugin BoB (XEP-0231), qui permet d’envoyer des petits fichiers à travers la connexion XMPP. Comme la bande passante est souvant limitée à raison à quelques kilobits/octets par seconde, il doit être utilisé avec raison, mais est pratique pour envoyer de petits fichiers.

Et bien plus encore

Il y a bien sûr bien plus de commits que juste ceux-ci, par exemple l’intégralité du code a été refactorisé pour éviter un hack du chemin python durant l’import, plusieurs corrections d’interface ont été apportées, les thèmes sont mieux respectés (moins de valeurs en dur), les reconnexions dans certains conditions ne provoquent plus une boucle infinie sans pause, etc… Vous pouvez consulter le CHANGELOG ou l’ historique git pour plus de raisons de mettre à jour.

Informations d’empaquetage

Cette version comme la précédente dépend toujours de la bibliothèque slixmpp, qui elle-même requiert aiodns, et peut être optimisée avec cython (auquel cas libidn ainsi que ses headers seront requis durant la compilation).

Contributeurs

À part moi-même (mathieui), louiz’, and Link Mauve, je veux également ermercier les autres contributeurs, eijebong, Lasse Aagren, Frédéric Meynadier, Nicolas Braud-Santoni, Lancelot SIX, Luke Marlin, pour leur ajout de fonctionnalités ou corrections de bugs.

Je veux également remercier tous les utilisateurs et testeurs qui nous remontent des bugs et des suggestions d’améliorations, que ce soit via des remarques constructives dans le salon ou des rapports de bugs.

Bugs

Comme toujours, si vous rencontrez un bug inconnu qui n’est pas corrigé dans la version git de poezio, merci de nous en faire part, merci.

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