Sortie de Prosody 0.11

Posté par  (site web personnel) . Édité par Julien Jorge, ZeroHeure, palm123 et Davy Defaud. Modéré par ZeroHeure. Licence CC By‑SA.
40
22
nov.
2018
XMPP

Ceci est la traduction de l’article « Prosody 0.11.0 released », et est également disponible sur JabberFR ainsi que sur le blog de Prosody.

Nous somme ravis d’annoncer la sortie longuement attendue du serveur XMPP Prosody 0.11.0 !

Ceci est la première version de la série 0.11, qui sera maintenant considérée comme la série stable. Cette version, avec plus de 2 000 commits, n’aurait pas pu se faire sans l’aide de nombreux contributeurs, testeurs et autres membres de la communauté. Merci !

Sommaire

Points importants

Si vous êtes impatients d’utiliser 0.11.0, c’est certainement dû au travail important qui a été fait dans cette version sur deux composants : MUC (Multi‐User Conference) et PubSub.

Ces deux composants implémentent les XEP les plus complexes que XMPP fournit actuellement. Même si les versions précédentes fournissaient déjà MUC et PubSub, ceux‐ci sont tous les deux des protocoles complexes ; ainsi, après une première implémentation, il nous semblait important de les revisiter pour mieux couvrir les fonctionnalités décrites dans les XEP, mais aussi pour améliorer la structure du code et permettre la montée en charge.

Cette version comprend beaucoup d’autres changements, corrections de bogues, amélioration de performances, etc. Les principaux changements sont détaillés ci‐dessous.

Fonctionnalités principales

Amélioration des salons

Un des plus gros changements dans cette version est le fait que MUC (Multi‐User Conference) ait été presque entièrement réécrit. Ce projet ambitieux a été démarré plusieurs années plus tôt par daurnimator, qui a développé la majorité de ce nouveau code.

Même si la plupart des changements restent internes au composant, cela nous a permis d’ajouter de nouvelles fonctionnalités plus facilement, mais aussi de permettre la montée en charge des services de MUC (cette nouvelle version de MUC est utilisée par Jitsi Meet, ainsi que d’autres services hébergeant des centaines de milliers de groupes).

Les améliorations sont trop nombreuses pour être toutes citées, cependant quelques points sont mis en avant ici.

Amélioration de la configuration

Le formulaire de configuration a été réorganisé et propose maintenant un agencement et des options plus claires.

Boîte de dialogue de configuration d’un salon

Nous avons hâte d’intégrer des traductions dans une version future !

Archivage des messages

Nous avons ajouté le prise en charge pour l’archivage et la récupération des messages envoyés à un salon, en utilisant le protocole de la XEP-0313 (MAM, Message Archive Management). Cela permet à un client d’afficher des messages qui ont été envoyés lorsqu’il était hors ligne.

Réservation du pseudo

Pour éviter toute confusion, Prosody peut désormais forcer la réservation de pseudo dans un salon, pour empêcher quelqu’un de se faire passer pour un autre, qui ne serait pas au même moment présent dans le salon. Par défaut, seuls les propriétaires et administrateurs d’un salon peuvent réaliser cette action — en rendant un utilisateur membre du salon —, mais il est aussi possible de le configurer pour autoriser les utilisateurs à enregistrer leur propre pseudo et à devenir membre par la même occasion.

Protocole PubSub

Notre implémentation de PubSub a beaucoup été améliorée pour cette version. Link Mauve a travaillé sur la persistance des nodes et des items, ce qui veut dire que les données peuvent être stockées sur le disque plutôt qu’en mémoire et ne seront donc plus perdues lorsque le serveur est relancé.

Nous avons également implémenté la configuration des nodes et la gestion des affiliations, nécessaires à un contrôle d’accès avancé. Et, finalement, nous avons ajouté le fameux publish-options qui permet aux clients de publier des items en spécifiant leurs droits d’accès de façon sécurisée.

PEP

Notre ancien code pour PEP était une implémentation minimale, séparée du code de PubSub, qui implémentait tout ce dont les clients avaient besoin en 2009. De plus en plus de fonctionnalités de PubSub ont été demandées au fil des années pour PEP, qui devenait de plus en plus utilisé. Il devenait évident que PEP devait fournir toutes les fonctionnalités de PubSub et aurait dû utiliser le même code.

Florian Zeitz a démarré ce projet en créant un nouveau module mod_pep_plus. Ce module est maintenant l’implémentation par défaut et est utilisé à la place du module mod_pep d’origine.

Ceci nous permet de prendre en charge OMEMO pour les gens n’étant pas dans votre liste de contacts. Ça permet aussi aux clients d’utiliser PEP pour stocker les marque‐pages et autres données.

Nouveau format de vCard

Cette version implémente la nouvelle version de la spécification vCard (vCard4), décrite dans la XEP-0292, et gère de nombreux nouveaux champs.

Votre vCard est aussi stockée dans PEP, ce qui autorise un contrôle d’accès avancé (par exemple, vous pouvez choisir que votre vCard soit publique, ou disponible uniquement pour vos contacts).

Peu de clients, voire aucun, ne prennent en charge vCard4, mais l’ancien protocole vcard-temp est toujours pris en charge en utilisant mod_vcard_legacy, qui traduit vers le nouveau format de manière transparente, jusqu’à ce que les clients se mettent à jour.

Optimisations de l’autonomie des portables

Cette version vient avec quelques modules communautaires visant à améliorer l’autonomie des clients mobiles. Un trafic constant peut empêcher un téléphone de passer en mode d’économie d’énergie, par exemple avec les changements de statut des contacts, ou beaucoup de messages des salons. Mais ces informations ne sont généralement pas importantes, surtout quand le téléphone est en veille ou que l’application est en arrière‐plan.

Les clients qui prennent en charge la XEP-0352, tels que Conversations, peuvent informer le serveur quand leur application est mise en arrière‐plan, et Prosody va réagir en optimisant le trafic sur la connexion.

Ceci est implémenté dans mod_csi_simple.

Changements internes

API asynchrones

Nous avons consacré beaucoup d’efforts à ajouter des tests et à rendre notre API asynchrone interne plus robuste. Cette API sera utilisée pour améliorer les performance des plus gros services.

Avec ces changements, l’authentification ou les grefons de stockage asynchrones sont maintenant pris en charge de façon expérimentale. Prosody ne gèrera pas cette API officiellement pour cette version car il reste beaucoup de changements prévus.

Automatisation des tests

Une des plus grosses améliorations récentes au projet a été le nombre croissant de tests automatisés. Les versions précédentes ont été presque entièrement testées à la main, à cause du peu de tests automatiques disponibles, mais nous avons désormais une large batterie de tests qui tourne après chaque changement. Plus de détails dans un futur article !

Prise en charge native d’epoll

Ce nouveau back‐end réseau expérimental fournit une alternative à libevent. Parmi ses avantages, il est plus petit et plus simple, mais disponible uniquement sous GNU/Linux.

Mise à jour depuis une version précédente

Si vous mettez à jour depuis une version précédente, nous vous recommandons très fortement de lire les notes de version.

Quelques changements importants sont listés ici.

Mise à jour de MySQL

Les utilisateurs de MySQL doivent mettre à jour leur schéma avant que Prosody 0.11 puisse fonctionner. Ceci afin de corriger quelques bogues qui empêchent le bon fonctionnement des nouvelles fonctionnalités de PEP.

Après la mise à jour, exécutez : prosodyctl mod_storage_sql upgrade

Lua 5.2

Prosody dépend de Lua 5.1 depuis le tout début. Comme nous l’avons annoncé lorsque Prosody 0.10 est sorti, nous sommes en train de le mettre à jour vers des versions de Lua plus récentes.

La version de Lua recommandée pour Prosody 0.11 est Lua 5.2, mais Lua 5.1 est toujours compatible pour les plates-formes qui en ont besoin. Cependant, les versions 0.11.x sont les dernières versions à être compatibles avec Lua 5.1 (et par extension, LuaJIT).

Tutoriels

Si vous prévoyez d’installer Prosody pour la première fois, le Homebrew Server Club a publié un excellent tutoriel sur comment configurer un serveur XMPP moderne sur Debian, en utilisant Prosody 0.11.

Téléchargement

Comme d’habitude, vous pouvez trouver les instructions de téléchargement pour de nombreuses plates‐formes sur notre page de téléchargement.

Si vous avez des questions, commentaires ou problèmes quelconques avec cette version, dites‐le‐nous !

Aller plus loin

  • # Utilité de Metronome ?

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

    Le fork Metronome est-il encore utile ? Il me semble que sa raison d'être était la faiblesse de l'implémentation de PubSub…

    • [^] # Re: Utilité de Metronome ?

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

      Pour pubsub ça fait des années que nous avons écris une implémentation alternative qui fonctionne avec Prosody (et qui est probablement l'implémentation pubsub libre la plus avancée à l'heure actuelle au niveau des fonctionnalités).

      Après encore utile ou pas, c'est à toi de voir, c'est une implémentation alternative, et c'est maintenu (enfin après un long moment sans maintenance, ce qui n'a pas été pas super).

  • # Un peu HS

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

    Est-ce qu'il y a un moyen propre d'installer un serveur xmpp sans avoir de nom de domaine ?
    J'ai essayé il y a quelques temps une installation en réseau local avec des identifiants du type keuronde@192.168.1.1 mais j'ai l'impression que ça marchottait.
    L'idée serait de rester sur un réseau local seulement.

    • [^] # Re: Un peu HS

      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 24 novembre 2018 à 01:00.

      Tu peux toujours utiliser un nom de domaine de ton choix, localhost est très populaire si tu ne souhaites pas utiliser plus d’une machine, sinon il y a toujours les semi-réservés .lan ou .local, ou alors .zeroconf si tu as un setup du genre.

      Ensuite tu as le choix pour dire à tes clients ou autres serveurs comment résoudre ta machine, soit automatiquement si tu as un serveur DNS local, soit en mettant l’adresse IP manuellement dans le fichier /etc/hosts ou dans la configuration avancée de la connexion dans chaque client.

      Mais utiliser une adresse IP comme « domaine » est une très mauvaise idée.

    • [^] # Re: Un peu HS

      Posté par  (site web personnel) . Évalué à 1. Dernière modification le 26 novembre 2018 à 10:51.

      Pour clavarder sur un réseau local, tu peux utiliser BeeBeep.

      • [^] # Re: Un peu HS

        Posté par  (site web personnel) . Évalué à 4. Dernière modification le 29 novembre 2018 à 18:32.

        À noter que grâce à la XEP-0174, XMPP permet également la discussion sur réseau local sans serveur, en passant par Avahi sous Linux.

        Avec Gajim par exemple, tu peux l’activer dans Gajim > Comptes > Local.

    • [^] # Re: Un peu HS

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

      Pour compléter le commentaire de Link Mauve, j'ai utilisé prosody sur un réseau local pendant un temps à l'aide d'Avahi. Chaque machine a un nom de domaine dérivé de son nom (hostname) en .local.
      C'est très facile ensuite de communiquer en se servant du nom généré sans devoir se farcir la configuration d'un Bind ou des fichiers hosts multiples.

  • # Bravo pour la release

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

    Hello,

    Prosody est un chouette projet, j'ai commencé à connaître le côté serveur de XMPP grâce à leur logiciel et sa facilité de configuration.

    Je suis vraiment content que cette version amène la persistance à pubsub: maintenant, les projets de clients comme Movim et Salut-à-toi vont pouvoir proposer une installation plus simple pour monter des instances complètes indépendantes assez facilement.

    Je pense notamment aux entreprises qui ont besoin d'un outil de communication interne entre employés.

    Enfin, à l'époque ça m'a fait migrer vers ejabberd qui est aussi un serveur XMPP très utile, même si sa courbe d'apprentissage est, je trouve, plus élevée.

    Merci à la communauté XMPP, c'est du très bon boulot !

  • # PostgreSQL

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

    Merci ! J’ai hâte de basculer de 0.10 à 0.11.

    Vous mentionnez MySQL. Qu’en est-il des utilisateurs de PostgreSQL ? La ligne de commande qui est montrée n’a par l’air d’être spécifique à MySQL…

    • [^] # Re: PostgreSQL

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

      PostgreSQL fonctionne quasiment toujours beaucoup mieux que MySQL, il ne nécessite aucun script de migration pour cette version, de même que SQLite ou les backends non-SQL.

      MySQL est la cause du retard de la release de chaque version de Prosody depuis 2012…

      • [^] # Re: PostgreSQL

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

        Merci pour l’information !

        …et me voilà conforté dans le choix de n’utiliser que PostgreSQL sur mon serveur :-)

  • # Attention à mod_csi_simple

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

    Juste un petit commentaire pour signaler que le nouveau module officiel mod_csi_simple m'a posé des soucis et rendu la mise à jour un peu plus pénible que je ne l'eus espéré. J'ai donc dû le désactiver et utiliser les modules communautaires mod_csi_battery_saver et mod_csi_compat. Si ça peut éviter à certains de galérer autant que moi…

    Les problèmes étaient les suivants, tous concernaient Conversations (client Android):
    - réception retardée voire perte des messages privées (apparemment lié à l'utilisation de OMEMO)
    - pas de reconnexion aux MUCs lors de déco/reconnexion du client

    Merci à Ge0rG du salon de discussion prosody pour son aide.

Suivre le flux des commentaires

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