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

Articles:

Poezio 0.9

Après une durée plus longue que prévu, je suis heureux de pouvoir annoncer la sortie de la version 0.9 de poezio.

Nouveautés

Python 3.4 et slixmpp

Une fois de plus, la version de python requise est incrémentée.

Cette fois c’est parce que nous avons changé de bibliothèque XMPP pour slixmpp, qui est notre fork de SleekXMPP (utilisé auparavant), en y substituant le multithreading par les coroutines d’asyncio. Pour comprendre pourquoi ce fork, référez-vous à cet article sur slixmpp par louiz’ (en anglais).

(pour résumer : un code plus lisible, pas de race conditions, plus de facilité à raisonner sur le code)

Cela ne veut pas dire pour autant qu’on se désolidarise complètement de SleekXMPP qui reste une excellente bibliothèque, puisque slixmpp partage toujours avec elle la majorité de son code sans modification. Nous pourrons donc appliquer des nouvelles fonctionnalités et corrections sans ou avec peu de modifications, et leur envoyer les nôtres également.

Plugin OTR amélioré

Le plugin OTR qui avait été réécrit avec poezio 0.8 manquait encore des fonctionnalités communément attendues dans un plugin de chiffrement, c’est maintenant corrigé.

La nouvelle fonctionnalité majeure est le Socialist Millionaire’s Protocol (SMP) qui permet à deux personnes de vérifier l’identité de leur correspondant respectif, à travers un secret partagé ou une question (auparavant il était possible de vérifier les identés, mais seulement en communiquant les empreintes de clefs sur un autre canal).

D’autres améliorations sont présentes comme un peu de traitement de HTML pour améliorer l’expérience utilisateur, et d’autres options de sécurité pour forcer le chiffrement et la négociation de session.

otr_dialog

Connexion avec des certificats clients

Poezio permet désormais de se connecter sans mot de passe à son serveur en utilisant des certificats X.509 et un mécanisme décrit dans la XEP-0178, et également de gérer ces derniers à travers les fonctionnalités décrites dans la XEP-0257.

Avec ces fonctionnalités vous pouvez, une fois connecté, ajouter, désactiver, lister ou supprimer ces certificats du serveur.

Un bug dans le module prosody empêche malheureusement l’utilisation de la XEP-0257 pour l’ajout d’un certificat, mais on peut le patcher en attendant.

Commandes ad-hoc

Les commandes ad-hoc dans XMPP (définies dans la XEP-0050) permettent à un humain d’interagir avec une entité sans qu’il existe de spécification précise quant à la nature de l’interaction (en dehors de cette XEP, justement). Par exemple, prosody permet avec le chargement du bon module de charger/décharger des modules, de déconnecter ou supprimer des utilisateurs, etc, juste avec des commandes ad-hoc.

Dorénavant, poezio peut donc lister et exécuter ces commandes.

Couleurs de nick

Auparavant, les couleurs de nicks étaient attribuées selon l’ordre d’entrée des participants dans le salon, ce qui était mémorisable en gardant poezio ouvert plusieurs mois, mais restait perturbant quand la même personne avait une couleur différente selon la room dans laquelle elle était.

À partir de maintenant, les nicks seront hashés avant d’être placés dans la liste des couleurs disponibles, ce qui permet d’obtenir une distribution relativement uniforme, aléatoire, et surtout fixe des couleurs. Les gens qui utilisent le même nick partout devraient donc toujours garder la même couleur. Si vous préfériez l’ancien comportement (pour des raisons étranges sûrement valides), il existe toujours et peut être réactivé en changeant une option.

De plus, Perdu a ajouté une commande pour régler définitivement la couleur d’un nick, donc si vous trouvez qu’une couleur attribuée ne convient pas à quelqu’un, vous pouvez le modifier.

Accusés de réception

Les messags envoyés par poezio demandent maintenant des accusés de réception, si le correspondant les supporte. Évidemment, poezio répond également aux demandes d’accusés de réception, ce qui devrait permettre aux clients mobile plus de fiabilité. Ce comportement peut être personnalisé, mais il est activé par défaut. Si un accusé de réception est reçu pour un message envoyé, un caractère de validation en vert s’affichera à côté du message.

poezio_receipt

Gestion de marque-pages

La commande /bookmarks permettait au paravant de lister tous les marque-pages connus, de façon un peu brute. Désormais cette commande ouvre un onglet vous permettant d’éditer les marque-pages, mots de passe, et de choisir l’emplacement de stockage ainsi que l’autojoin à l’ouverture du client.

poezio_bookmarks

Performance

Certains bouts de poezio étaient affreusement mal optimisés. Certains le sont certaiement encore, mais quelques scénarios assez communs devraient être plus rapides de façon exponentielle (par exemple rejoindre un salon avec plusieurs milliers de participants). La lenteur est habituellement invisible dans les cas normaux (comme quelqu’un utilisant poezio sur un ordinateur contruit après 2002 en ayant quelques tabs ouverts), mais ça devient plus problématique quand poezio tourne sur une board ARMv7 à faible consommation avec plusieurs centaines de salons ouverts et un flux constant de nouveaux messages ou présences.

Plugin IRC

louiz’ a écrit entre temps un composant IRC appelé biboumi (qui est pour moi la meilleure passerelle IRC disponible). Malheureusement, mélanger des onglets IRC et des MUC normaux est un peu perturbant, j’ai donc écrit un plugin IRC simpliste qui, une fois configuré correctement, gère l’authentification avec nickserv et la connexion aux salons ensuite, ainsi que des commandes préfixées par irc_ pour plus de fluidité dans un fonctionnement normal. Le fonctionnement interne est un hack, mais ça reste bien plus agréable que de tout faire soi-même à chaque fois.

Reconnexion aux salons

Le problème quand une connexion timeout ou qu’un serveur redémarre est que vous pouvez ne jamais être prévenu que vous n’êtes en fait plus dans le salon avant que vous n’essayiez d’envoyer un message ou une présence et que ce dernier vous réponde par une erreur.

Cette nouvelle version introduit in mécanisme appelé le self-ping qui, une fois activé (et éventuellement configuré plus finement), fera en sorte que poezio s’envoie un ping à travers chaque salon au bout d’un certain temps d’inactivité. Si le salon lui reçoit par une erreur, il va quitter le salon (afin d’être certain de ne plus y être) puis y revenir.

Cela devrait permettre de ne plus découvrir le matin que l’on a été déconnecté de tous les salons juste après avoir été se coucher parce qu’un serveur a rebooté quelque part.

Et bien plus encore

Bien évidemment, il y a plus de commits que ça, que ce soit pour des nouvelles fonctionnalités ou des corrections de bugs. Par exemple, des améliorations de la commande /set, une refonte de l’onglet de debug XML, une commande de destruction de salon, le passage au SHA-2 pour la vérification du certificat, etc… Vous pouvez regarder le CHANGELOG ou l’historique git pour plus de raisons de mettre à jour.

Packaging

Comme dit précédemment, poezio dépend maintenant de la bibliothèque slixmpp, cette dernière dépendant d’aiodns, ainsi qu’optionellement de cython afin d’optimiser un module (et dans ce cas libidn sera requis également, ainsi que ses headers pendant la compilation).

Contributeurs

En dehors de moi (mathieui), louiz’, et Link Mauve, je veux remercier les autres contributeurs Perdu, Ge0rG, eijebong, Florian Duraffour et Akim Sadaoui pour leur apport en fonctionnalités et corrections.

Bugs

Comme toujours, si vous essayez la release et que vous remarquez un bug également non corrigé dans la version git, merci de le rapporter.

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