Journal Sortie de poezio 0.9

Posté par  (site web personnel) . Licence CC By‑SA.
31
1
août
2015
Ce journal a été promu en dépêche : Sortie de poezio 0.9.

Sommaire

Comme je n'avais encore jamais fait de journal à propos de poezio sur linuxfr, je préfère faire une petite introduction pour que les gens ne soient pas perdus.

Présentation de poezio

Poezio est un client de messagerie instantanée en console pour le réseau XMPP (Jabber) (pour plus de détails, voir la série de très bons journaux rédigés par goffi qui vont en détail dans le protocole et ce qu’il permet d’accomplir).

Poezio est conçu pour être rapide à utiliser au quotidien, avec une utilisation de rapprochant des clients IRC bien connus comme weechat et irssi. Dans cet esprit, il est avant tout conçu pour les salons de discussions (MUC) et ne gérait même pas la connexion a un compte (on peut maintenant en avoir un) dans les premières versions, dans l’idée d’avoir le même genre de client qui ne nécessite pas de configuration préalable.

Il offre néanmoins un certain nombre de fonctionalités avancées liées à XMPP, comme la correction de messages, les accusés de réception, les message carbons (duplication de messages vers toutes les devices), le formatage xhtml-im, une interface de debug XML complète, et bien plus encore.
Un certain nombre de compromis sont malheureusement réalisés du fait de l’interface en ncurses qui limite un peu les options niveau UI.

Du point de vue de la sécurité, poezio force le chiffrement avec le serveur en utilisant des ciphers corrects (l’utilisateur peut cependant désactiver le chiffrement ou réduire la qualité des ciphers), fait du cert pinning (via un hash du certificat à la première connexion, et un gros warning avec un prompt si ça change ensuite). Il intègre également un plugin GPG (que personne n’utilise) et OTR.

Côté technologie, poezio dépend généralement de la dernière version de python en date à chaque nouvelle release, ce qui est rarement du goût de debian stable.

Enfin, poezio est placé sous licence zlib.

Nouveautés de poezio 0.9

Python 3.4 et slixmpp

Une fois de plus, la version de python requise est incrémentée (pour 3.4).

Cette fois c’est parce que nous avons changé de bibliothèque XMPP pour slixmpp, qui est notre fork de SleekXMPP (bibliothèque utilisée auparavant), en y substituant le multithreading évènementiel par asyncio. Pour comprendre les raisons de ce fork, référez-vous à l’article de louiz’ donné en lien ci-dessus. (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 en retour é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

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 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 XEP-0050, 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 ad-hoc à travers une interface dédiée.

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 le salon dans laquelle elle était.
À partir de maintenant, les nicks seront hashés avant d’être projetés sur 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 prend en charge. Évidemment, poezio répond également aux demandes d’accusés de réception, ce qui devrait permettre aux clients mobiles 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 receipts

Gestion de marque-pages

La commande /bookmarks permettait auparavant 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 (plus de 500), 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 nouveautés.

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.

Liens

  • # Bravo

    Posté par  . Évalué à 4.

    Mon principal client XMPP, félicitations à toute l'équipe pour le travail et l'évolution en fonctionnalités de ce logiciel !

    • [^] # Re: Bravo

      Posté par  . Évalué à 2.

      Oui super application, super nom aussi. Je l'avais découvert il y a quelques mois car je cherchais un client avec le support du copie-carbone

  • # Non-IM

    Posté par  (site web personnel) . Évalué à 3.

    Félicitations pour cette release, poezio est vraiment top !

    Est-ce que vous avez prévu de vous diversifier dans le non-IM possible avec XMPP, ou est-ce que vous avez prévu de rester dedans ? Je pense par exemple à pubsub et tous ses dérivés, qui à mon avis sont la deuxième application naturelle de XMPP après la messagerie instantanée.

    • [^] # Re: Non-IM

      Posté par  (site web personnel) . Évalué à 2.

      Il est prévu d’avoir le transfert de fichiers, et j’avais commencé un browser pubsub un jour, mais je l’ai pas terminé par manque de motivation et manque d’intérêt.

      J’aimerais avoir la possibilité de lire (et écrire sur) les microblogs et ce genre de choses basées sur pubsub. Si c’est pas fait encore c’est juste par manque de temps/moyens/motivation.

      Donc oui, c’est prévu. Sans date.

      • [^] # Re: Non-IM

        Posté par  (site web personnel, Mastodon) . Évalué à 4.

        Bravo pour cette sortie. Pour le microblogage, Link Mauve m'avait dit vouloir travailler dessus aussi pour Poezio (mais bon, comme il travaille en même temps sur 10 000 autre projets, ça risque de prendre du temps).

  • # Forge

    Posté par  . Évalué à 1.

    Hello,

    Rien à voir, mais je trouve que la forge que tu utilises à l'air bien, c'est laquelle ?
    Merci

    • [^] # Re: Forge

      Posté par  . Évalué à 1.

      C'est Redmine.

      • [^] # Re: Forge

        Posté par  . Évalué à 1.

        ah ok merci
        ça a bien changé

        • [^] # Re: Forge

          Posté par  (site web personnel) . Évalué à 1.

          C’est peut-être juste le thème qui fait cet effet non ?

          Celui par défaut est bien plus laid et moins moderne (déjà que là c’est pas extra je trouve).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.