Journal Forthlift: envoyer des statuts depuis son éditeur de texte

Posté par (page perso) . Licence CC by-sa
Tags : aucun
15
26
sept.
2015

Si vous utilisez des réseaux sociaux et que vous pensez que votre éditeur de texte est le meilleur endroit pour rédiger du texte, ce petit logiciel pourrait vous intéresser.

L'idée de forthlift est de permettre l'envoi en une seule fois de plusieurs statuts (tweets, par exemple) enchaînés (se répondant les uns aux autres), directement depuis un éditeur (Vim, par exemple) où vous les aurez préparés.

Comme tout le monde, j'ai d'abord essayé divers client twitter (en l’occurrence), qui sont relativement pénibles à utiliser : aucune facilité de rédaction en dehors d'un compteur et du correcteur orthographique, ergonomie souvent en-dessous du site web. Il n'y a généralement rien pour préparer l'envoi de plusieurs tweets à l'avance, ce qui s'avère pénible quand vous avez une conversation qui dépasse les 140 caractères. J'avais donc tendance à préparer des tweets dans Vim, car il est extrêmement plus pratique qu'un champ de saisie pour manipuler le texte (déplacement de mots, reformulations) sans perte de fonctionnalités (le correcteur orthographique est là et on peut littéralement voir la limite des 140 caractères).

Il existe bien sûr des clients twitter sous forme de plugin Vim, mais ils ont tous tendance à vouloir tout faire, notamment afficher un fil des statuts et finissent donc invariablement par être casses-bonbons à utiliser (fenêtre à part, trop de commandes mal pensées pour l'envoi, etc.).

Comme tout geek qui se respecte, j'ai donc implémenté ce que je voulais : https://github.com/nojhan/forthlift

En l'état, seul twitter est disponible (je n'ai pas réussi à trouver/faire marcher de module diaspora, mais je suis preneur), mais grâce à une interface basée sur les pipes, il est très facile à appeler en ligne de commande ou depuis tout éditeur disposant d'une interface d'appel de commandes (un éditeur qui se respecte, donc). C'est simple, efficace, intuitif pour un linuxien et facile à intégrer avec les outils habituels.

Par exemple, sous Vim, c'est trivial : :w !forthlift -a twitter envoie tweete le contenu du buffer, :'<,'>w !forthlift -a twitter envoie la sélection visuelle, etc.

Du coup, vous pouvez aussi intégrer forthlift dans un script shell, genre : tail my.log | fold -n -140 | sort | forthlift -a twitter.

Voilà. Je suis preneur de code pour d'autres réseaux, d'exemple sous emacs ou autres lignes de commande utile pour démonstration, etc.

  • # Passerelles ?

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

    Salut,

    ben en fait on fait exactement la même chose avec SàT et son interface ligne de commande (pour le chat uniquement pour le moment, mais on c'est prévu pour le blogging dans la version à venir), en passant par XMPP (et j'utilise également depuis vim avec « :w ! »

    C'est probablement un peu tard maintenant que t'as bossé sur ton outil, mais ça te dirait pas de développer des passerelles XMPP ? Ça a de nombreux avantages, et en particulier pas besoin de faire les mise à jour côté client, c'est la partie serveur qui s'en occupe… Et puis ça servirait à tout les projets XMPP, en particulier Jappix, Movim et SàT.

    Enfin dans tous les cas merci pour le partage :)

    • [^] # Re: Passerelles ?

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

      Moi je veux bien (forthlift est un tout petit bout de code), mais je ne suis pas sûr de saisir où tu veux en venir, tu pourrais développer ?
      Comment Salut à Toi remplace avantageusement forthlift en pratique ?
      Comment se placent exactement les passerelles XMPP vis à vis de Twitter ?

      • [^] # Re: Passerelles ?

        Posté par (page perso) . Évalué à 4. Dernière modification le 27/09/15 à 16:34.

        Salut à Toi est multi-interfaces, et l'une d'elle, jp, est dédié à la ligne de commande.

        Si j'ai bien compris, ton outil récupère stdin, et le met en forme/l'envoi sur un réseau (ici Twitter).

        jp gère aussi les pipes, et peut le transformer stdin en diverses choses, par exemple en flux de données brutes (comme expliqué ici) ou comme message de chat (par exemple j'envoie souvent un bout de code à mon correspondant en le sélectionnant dans vim en mode visuel et en tapant « :w !jp message mon_correspondant@son_serveur.tld ».

        Nous avons travaillé beaucoup sur le (micro)blogging, et la prochaine version permettra de rédiger un message dans vim dans la syntaxe de ton choix (par exemple markdown) et de l'envoyer en tant que message de blog (la syntaxe n'est pas encore définie, mais ça pourrait être « :w !jp blog send »).

        D'un autre côté, XMPP permet de gérer des passerelles, en gros une passerelle se contente de convertir une syntaxe de réseau extérieur en XMPP (et vice versa). Du coup ça donnerait quelque chose comme ça (attention les yeux):

        +---+         +--------+         +-----------+         +----------+         +------------+
        |VIM|  ====>  |jp (SàT)|  ====>  |Server XMPP|  ====>  |Passerelle|  ====>  |autre réseau|
        +---+         +--------+         +-----------+         +----------+         +------------+

        Alors dans l'immédiat, ça n'apporterait pas grand chose par rapport à ton projet (le choix de la syntaxe tout de même) et pour ton utilisation.

        Mais ça aurait quand même certains intérêts:

        • la passerelle est côté serveur, si X utilisateurs sont sur le serveur et utilisent l'outil, et que ça casse du jour au lendemain (l'autre réseau change de protocole), il suffit de mettre à jour une fois la passerelle, et y'a rien à faire pour l'utilisateur (à part attendre et râler).

        • la passerelle servira pour tous les projets XMPP qui parlent (micro)blogging, soit à ce jour Jappix, Movim et SàT.

        • la passerelle ne servira pas que dans la cadre de la rédaction d'un message, tu pourras aussi si tu le souhaites recevoir les messages de ce réseau extérieur et en envoyer depuis le client XMPP de ton choix.

        • comme la passerelle servira à plusieurs projets et à plus de cas, le jour où t'en as assez et que t'arrêtes le développement, y'a de fortes chances que quelqu'un le reprenne.

        C'est peut-être un poil plus complexe que ce que tu voulais faire (parce qu'il faut la couche XMPP en plus), mais je cherche à pousser au maximum l'utilisation d'XMPP pour qu'on que ça soit réutilisable, et vu qu'on est en plein dans la création d'un outil similaire (sauf que nous on ne fera pas de passerelles pour des réseaux non libres), je me suis dis que ça peut valoir le coup de regrouper les efforts.

        • [^] # Re: Passerelles ?

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

          OK merci. J'ai longtemps été utilisateur de passerelles XMPP et je n'en ai pas gardé un souvenir impérissable. De plus, par expérience, ce genre de montage - quoique techniquement satisfaisant - est trop complexe pour être vraiment utilisé en pratique. En tous cas, moi je sais que je lâcherais prise sur l'adminsys que ça nécessite si je voulais me faire ma petite installation.
          Du coup je me tâte.

          • [^] # Re: Passerelles ?

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

            Oui je comprends, les passerelles de chat à l'époque où c'était à la mode (y'a entre 10 et 5 ans je dirais) étaient souvent incomplètes, mal maintenues et difficiles à mettre à jour. Mais c'est un point qui j'espère va aller mieux avec la nouvelle génération qui vient.

            Pour IRC par exemple, biboumi est une bonne passerelle: facile à installer et utiliser, elle est très complète (à comparer à la passerelle Spectrum qui est trop compliquée à installer/utiliser, ou à celle de jabberfr qui n'est pas non plus le top pour IRC).

            Je vois que ton code est en Python, et nous on a l'intention de travailler sur les passerelles d'ici 2 à 3 mois. Ce qui serait pas mal, c'est de séparer la partie interface (la ligne de commande) de la partie qui gère la communication avec les réseaux que tu veux gérer, et on pourrait réutiliser ça derrière pour faire des passerelles. En fait ça pourrait même être une idée que tu te rapproches de weboob vu qu'ils font justement une abstaction des sites webs.

            Ce sont juste des pistes pour regrouper les efforts, je comprends aussi si tu veux rester sur ton outil qui fait ce que tu veux.

            • [^] # Re: Passerelles ?

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

              Franchement, tout ça tient en quelques lignes (ça utilise le module tweepy), c'est trivial à coder.
              Par contre, je suppose que la gestion de tous les aspects du micro-blogging (réception, abonnements, favoris, etc.) serait un peu plus délicate, mais ça serait vraiment overkill pour forthlift.

              Tu fais bien de me rappeler weboob, je les avais oubliés et c'est vraiment cool !

              • [^] # Re: Passerelles ?

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

                ah oui en effet, et Twitter ne m'intéresse pas, c'est plus pour les futurs réseaux que tu pourrais ajouter que je disais tout ça.

                Enfin bref, bon continuation en tout cas :)

  • # Gaz factory

    Posté par . Évalué à 8.

    Je sais que c'est inévitable, hein. Mais quand même.

    Utiliser Twitter pour publier une histoire la rend totalement illisible. Y a des boîtes entre les lignes, les phrases sont coupées entre les mots.
    Un système de fédération de blog aurait tellement été plus pratique. Et pas que pour les geeks barbus…

    Et du coup, on se retrouve à perdre notre temps à écrire des logiciels qui débitent des mots en petits tronçons pour les faire rentrer dans des boîtes trop petites pour exprimer nos idées.

    Mais je sais, utiliser Twitter est aujourd'hui inévitable. Je n'ai pas de compte, mais je me retrouve à devoir lire les contenus de ce site… Dommage.

    • [^] # Re: Gaz factory

      Posté par . Évalué à 3.

      Je n'ai pas non plus de compte, et par chance n'est pas d'obligation d'en lire le contenu. Ma raison est simple : 140 signes c'est trop court, on ne peut rien dire. Encore que je peux admettre le principe pour signaler du contenu qui, lui, est développé en un autre lieu de la toile.

      Mais là, si je comprends bien le principe : pour exprimer une pensée qui nécessite plus de 140 signes, on la découpe en morceaux que l'on envoie un par un pour que ça rentre dans la taille des boîtes ? :o L'espèce humaine m'étonnera toujours…

      Pour la fédération, la notification temps réel, la décentralisation, etc. il me semble que XMMP et Pub-Sub le permettent allégrement. Le dossier de Goffi sur le sujet (fort passionnant, merci à lui) est instructif. Cela semble avancer, avec simplification de la XEP qui n'était pas complètement implémenter dans les serveurs car juger trop complexe (bien qu'après lecture de la XEP, je ne vois pas ce qu'il y a de compliqué dedans).

      Sapere aude ! Aie le courage de te servir de ton propre entendement. Voilà la devise des Lumières.

      • [^] # Re: Gaz factory

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

        Diaspora fait déjà de la fédération et n'a pas de limite de caractères.
        Par contre, si vous voulez pouvoir suivre des infos intéressantes ou converser avec des gens, c'est tout de suite plus difficile.
        Pourquoi ?
        Parce que le succès d'un réseau social n'a que très peu à voir avec son intérêt technique, c'est avant tout les gens qui en font l'intérêt.

Suivre le flux des commentaires

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