Journal XMPP: sortie de SàT version 0.0.3

Posté par (page perso) .
5
19
août
2010
Bonjour à tous,

ce journal pour vous annoncer la sortie de la version 0.0.3 de Salut à Toi, client xmpp que j'avais présenté il y a plus d'un an.
Pour ceux qui trouvent ce journal long (je les comprends !), quelques captures d'écran sont disponibles sur mon site, et les liens utiles sont ci-dessous:
- mon site web: http://www.goffi.org
- billet avec les captures d'écran: http://www.goffi.org/index.php?post/2010/08/19/Salut-%C3%A0-(...)
- téléchargement direct: http://www.goffi.org/index.php?download/35
- ancien journal: https://linuxfr.org/~Goffi/28287.html

A. Présentation
1) ce que c'est, ce qu'on peut faire avec
2) les frontends existants
- Wix
- Primitivus
- Jp
B. Les nouveautés
0) apportées par la 0.0.2
1) le multi-profile
2) le MUC
3) l'i18n
4) la nouvelle interface console
5) les surprises
- jeu de Tarot
* Notes (script et idée de XEP pour jeux de cartes)
- Plugin CouchSurfing
C. La suite
D. Anecdotes
E. Pas de E
F. Petite larme de fin de journal

A. Présentation
1) SàT est donc un client XMPP qui repose sur un modèle démon/frontend communiquant via une IPC, appelée ici "pont" (DBus pour le moment, mais autre chose pourra être utilisé par la suite). Beaucoup de travail depuis la 0.0.1, et une 0.0.2 annoncée uniquement sur mon site, mais le projet reste encore inutilisable pour un public non averti, et j'espère pouvoir offrir une version grand public à la fin de l'année.

Ce client devrait à terme être multiplateforme, et fonctionne déjà en ligne de commande, interface console et interface graphique, sans oublier que n'importe quelle application peut l'utiliser via DBus.

Pour les développeurs, il est assez facile de faire des expérimentations de XEP avec - Twisted, Python et ses piles aidant -, et de faire un frontend vraiment adapté pour un usage particulier (par ex. un frontend aux fonctions basiques pour borne publique). Ainsi, j'ai pu faire un plugin avec un protocole par dessus MUC pour le jeu de Tarot (cf plus bas), très simplement en m'appuyant sur un autre plugin qui gère MUC.

Avec notamment jp, l'écriture de scripts devrait être un jeu d'enfant: vous pourrez sans problème dire à votre serveur de vous avertir de je ne sais quoi via XMPP, ou de vous envoyer un fichier, ou autre.

Enfin, XMPP peut servir à bien plus de choses que la messagerie instantanée, et SàT est une brique pour de nombreuses idées que j'ai en tête.



2) les frontends existants
Mon précédent journal les décrit, mais pour un rapide rappel:
- Wix est l'interface graphique basée sur WxPython, et donc adaptée à l'environnent (Gtk sous nux, il ne gère malheureusement pas Qt à ma connaissance)
- Primitivus: la nouvelle interface console, cf plus bas
- Jp: l'interface en ligne de commande, particulièrement utile pour envoyer un fichier ou la sortie standard d'une commande (par exemple la liste de vos films via lm ;) ).

B. Les nouveautés

0) Depuis la version présentée ici même, une version 0.0.2 est sortie avec entre autres (cf changelog pour plus de détails) support des gateways, support des VCards et des surnoms/avatars.

1) le multi-profile
SàT gère désormais les profiles multiples, autrement dit il est possible d'avoir deux comptes différents utilisés en même temps. Wix et Primitivus ne gèrent qu'un profil à la fois pour le moment (à choisir au lancement), mais rien ne vous empêche de lancer plusieurs instances de ceux-ci. Le code est là pour gérer les profiles en même temps, ça viendra par la suite quand j'aurai un peu de temps à y consacrer.
Quelques mots-clefs permettent de simplifier l'utilisation, notamment pour les scripts. Ainsi si vous utilisez le mot-clef "@DEFAULT@" comme nom de profil, vous utiliserez le profil principale, sans avoir à vous poser de question.

2) Le MUC
pour ceux qui ne connaissent pas, le MUC (Multi-User Chat) et le système de salons de discussions de XMPP, en gros «l'IRC» de XMPP. L'implémentation est encore très peu fonctionnelle (pas de console d'administration, pas de favori), mais la base est là.

3) l'i18n
c'est à dire la possibilité de traduire l'interface, avec déjà une traduction en français.

4) la nouvelle interface console
Pour le frontend en interface console, j'ai abandonné NCurses au profit d'Urwid, ce que je ne regrette pas vu que j'ai fait un équivalent de Sortilège - l'ancien frontend interface console - en très peu de temps et que je n'ai plus besoin de bidouiller pour utiliser DBus, au seul coût d'une réactivité un poil en dessous. Du coup le nom n'étant plus adapté, le nouveau frontend s'appelle Primitivus.
L'interface n'est pas vraiment standard (mais y a-t-il vraiment un standard en interface console ?): une barre de menu commune en haut reproduit à peu près celles de wix, une zone de saisie reste en permanence en bas, avec une zone de notification apparaissant au besoin au dessus. Je pense mettre par la suite un mode commande fortement inspiré de vi dans la zone de saisie.

Pour le moment une seule fenêtre de chat est visible à la fois, je songe à une méthode agréable d'en afficher plusieurs par la suite (divisions d'écran ? Empilement de fenêtre scrollable ?). Ce sera probablement configurable de toute façon. Je suis ouvert à toute idée.
J'ai développé quelques widgets pour Urwid qui peuvent éventuellement servir à d'autre projets, notamment une boite de dialogue assez évoluée pour sélectionner un fichier, n'hésitez pas à vous servir.

5) Les surprises:
  • jeu de Tarot:
    Il en existe déjà des libres (rares cependant), mais je ne crois pas qu'il y en ait d'autres qui se jouent également en console. Toute les règles ne sont pas encore implémentées (notamment les bonus types petit au bout ou les poignées), mais c'est jouable (à 4 uniquement pour le moment).

    * À noter que je fourni le script qui m'a permis de découper les cartes du jeu trouvé sur wikicommons, il fonctionne avec n'importe quelle résolution, et pourra éventuellement servir à d'autre développeurs désirant faire leur propre jeu de Tarot. Avec une légère adaptation il pourra être utilisé pour d'autres types de cartes.

    J'ai fait un protocole Q&D par dessus MUC. Cependant, n'ayant rien trouvé dans les XEP existantes, je pense qu'il pourrait être sympa d'avoir une XEP générale pour les jeux de cartes, avec notamment:
    - possibilité du choix du type de carte (Tarot, jeu de 32/52/54 cartes, Italienne, etc)
    - déroulement d'un jeu (qui joue quoi, carte invalide, affichage des points, etc)
    - soyons fou ! Un système générique pour décrire les règles et éventuellement avoir un arbitre sur le serveur :)
    Si d'autres personnes sont intéressées par une telle XEP, contactez moi !

  • Extension CouchSurfing:
    Pas grand chose à voir avec XMPP, mais j'ai également fait une extension couchsurfing. C'était plus une excuse pour améliorer le système d'extension qu'autre chose, mais il permet d'envoyer un message à plusieurs amis en même temps, chose impossible sur le site. C'est aussi, à ma connaissance, le premier client indépendant pour CS, même si j'ai entendu parler d'un ou deux scripts.
    Petite parenthèse sur CS: j'utilise activement depuis plusieurs années, et j'apprécie beaucoup la qualité du site et le travail effectué, ainsi que la rapidité de réponse aux questions; mais je regrète 2 choses:
    - leurs position face au logiciel Libre, qui est à mon sens (et je pense ne pas être le seul à penser ça sur ce site) complètement à côté de la plaque
    - leurs prises de décisions, qui est un peu obscure, et sans trop poser de questions aux utilisateurs
    J'ai entendu parler dans un des commentaires ici même de BeWelcome, qui semble répondre à ces 2 problèmes. Aussi il est fort probable que BeWelcome soit également pris en charge dans le futur, même si je ne compte pas quitter CS - que j'apprécie toujours beaucoup - pour le moment.

  • C. La suite
    Au niveau de l'interface utilisateur, en particulier pour wix, je sais que c'est moche est dépassé: mon but pour le moment est d'avoir un client qui offre les fonctionnalités minimales attendues, et je me concentre sur ça avant l'interface. J'ai pas mal d'idées de ce côté, mais ça attendra la fin de l'année au plus tôt.

    Pour le futur:
    - immédiat: D'abord évidemment améliorer l'existant, je compte en priorité améliorer la copie de fichiers - et implémenter l'extension fast-mode de Psi -, puis le MUC. Je vais m'attaquer au PubSub, et j'ai beaucoup d'idées qui attendaient cette brique pour être lancées. Dans les priorités également, un chiffrement de bout en bout, le plus automatique possible. J'envisage d'implémenter OpenPGP (XEP-0027) et OTR.
    - juste après: J'ai 2 frontends prévus: le frontend web, et le frontend Qt (voire Kde).
    - plus long terme: les fonctions modernes attendues, notamment jingle (qui sert notamment pour la vidéo/voix temps réél, mais pas seulement).

    Un dépôt Mercurial public et un wiki sont prévus, mais pas avant Décembre. Dans la même optique, un outil de report de bugs, et éventuellement une mailing list si ça intéresse d'autres personnes. Je ne suis pas encore décidé sur le fait d'utiliser une forge communautaire ou de mettre ça en place par mes propres soins.
    Un travail sur la qualité va aussi être nécessaire: normalisation du code (le coding style change parfois d'un fichier à l'autre), système de tests, stabiliser et nettoyer l'API DBus. Je serai ouvert à la contribution probablement vers Décembre, et si des personnes sont intéressées, une discussion sur les desiderata pourra avoir lieu avant un grand refactoring.
    Enfin, SàT s'appuie sur Wokkel qui n'est pas très actif en ce moment, si l'auteur est d'accord (je vais lui en parler sur la mailing list), il va être nécessaire d'y contribuer (notamment pour le support MUC qui est partiellement implémenté mais dans une branche à part).

    Quoi qu'il en soit, la base de SàT est là et à peu près fonctionnelle, les plus courageux peuvent tester.


    D. Anecdotes:
    Pour la petite histoire, SàT est développé sur les routes avec des connections internet parfois plus que douteuses, en devant suivre les horaires des bibliothèques, et un ordinateur qui a un écran qui devient régulièrement blanc.
    En outre, cette version a failli être en pause technique à durée indéterminée car on a forcé la porte de mon van récemment, volé un sac, mais mon sac contenant entre autres l'ordinateur (et mon porte monnaie, et surtout mon passeport !) a été épargné.

    F. Petite larme de fin de journal:
    Enfin, pour ceux qui ne croyaient plus en XMPP, je crois que la communauté est particulièrement active de ce côté depuis quelques temps, je pense notamment à Movim ou Jappix, sans oublier les grands classiques comme Gajim ou Psi ne cessent de s'améliorer. J'ai pris contact avec quelques dév de Jappix et Movim suite à la dernière dépêche sur le sujet, et je pense qu'il pourrait être intéressant d'unir nos efforts sur certains points, en particulier les propositions d'extensions.


    Rédigé depuis mon vim
    • # B-BUS est multiplateforme ?

      Posté par (page perso) . Évalué à 1.

      Personnellement j'éviterais de dépendre de D-BUS pour faire un soft multi-plateforme.

      La dernière fois que je m'y suis intéressé, le port Windows avait l'air de pas être encore prêt.
      • [^] # Re: B-BUS est multiplateforme ?

        Posté par (page perso) . Évalué à 2.

        Donc pour re-répondre, non je ne dépends pas de D-Bus.
        Comme expliqué dans le journal, j'utilise un "pont" (une IPC) pour communiquer entre le démon et les frontends.
        Pour le moment c'est D-Bus qui est utilisé, mais rien n'empêche d'utiliser autre chose, comme par exemple xml-rpc. Je compte d'ailleurs automatiser la génération du pont, probablement depuis un fichier XML ou équivalent. On peut même envisager d'avoir un pont qui passe un réseau, et ainsi le démon sur un nux, et un frontend sur zin (ce que d'ailleurs D-Bus devrait permettre à terme).
    • # Rédigé depuis mon vim

      Posté par (page perso) . Évalué à 2.

      Honte à toi, utilise WebOOB !
      https://linuxfr.org/2010/08/06/27217.html

      Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

    • # Erreur

      Posté par (page perso) . Évalué à 3.

      Suite à une maladresse d'un des modérateurs, ce journal et les commentaires associés ont été supprimés. Nous avons restauré ce que nous pouvions depuis le backup de cette nuit, mais les commentaires postés aujourd'hui sont définitivement perdus.

      Nous présentons nos plus plates excuses pour les commentaires perdus.
      • [^] # Re: Erreur

        Posté par (page perso) . Évalué à 9.

        Ouai ouai c'est ça, tout ça parce que j'ai dit que j'utilisais vim, c'est bas, c'est très très bas !

        En fait j'ai cru que c'est parce que j'avais écrit \_o<~ COIN, je me suis dit "merde, ils ont vraiment fait pan! pan! ce coup-ci" :)



        Bon sérieusement, merci d'avoir restauré rapidement, et pour ce commentaire :)
    • # En plus d'avoir Hortefeux au cul

      Posté par . Évalué à 3.

      Pour la petite histoire, SàT est développé sur les routes avec des connections internet parfois plus que douteuses, en devant suivre les horaires des bibliothèques, et un ordinateur qui a un écran qui devient régulièrement blanc.


      -->[]

    Suivre le flux des commentaires

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