Plugin de tchat Peertube : 2023 sera riche en nouveautés !

, par  John Livingston
[English] [français] [italiano]

 Le plugin de tchat

L’un de mes plus importants projets de logiciel libre, et sans aucun doute celui qui me tient le plus à cœur, est le plugin Peertube livechat.

Peertube est un logiciel libre, permettant de déployer une plateforme de vidéo à la demande et de streaming en direct. Les différentes installations de Peertube (nommées « instances ») peuvent se fédérer entre-elles, faisant partie de ce qu’on appelle le fédiverse, contraction de « fédération » et « univers ». C’est un ensemble de logiciels pouvant communiquer entre eux. On y trouve des plateformes de vidéos, des plateformes musicales, des outils de micro-blogging, de publication, et tous types de réseaux sociaux.

Framasoft pilote le projet Peertube, mais n’a pas souhaité ajouter de fonction de tchat nativement dans le logiciel. Iels ont préféré faire le nécessaire pour que ce soit possible via le système de « plugins » qu’offre Peertube.

Et c’est là que j’interviens !

J’ai tout d’abord été contacté par ritimo, et j’ai développé sur un coin de table (en 3 jours) une première version fonctionnelle.
J’avais fait le choix de me reposer sur une technologie existante, éprouvée et modulable, XMPP. Ce choix était motivé par une vision à long terme : je devais être capable de faire évoluer facilement le logiciel, et y ajouter des fonctions de modération, fédération, robots, ... Bref, le protocole XMPP, et le serveur XMPP Prosody étaient tout indiqués.

Par la suite, le plugin a beaucoup évolué. À l’heure où j’écris ces lignes, il en est à sa 6e version majeure !

Pour voir une démonstration du plugin, vous pouvez aller ici.
Il y a également un salon de démonstration où je teste les futures versions ici.

 La recherche de financement

Cela fait maintenant 3 ans que j’ai décidé de devenir développeur de logiciel libre à mon compte. C’est avant tout un choix idéologique, voulant sortir du marché capitaliste, de ses relations de subordination, et voulant œuvrer à la création de « communs numériques ».

Le développement de ce plugin demande du temps, beaucoup de temps. Et j’essaie d’en vivre. Pour pouvoir travailler dessus, j’ai donc besoin de trouver des financements. Je suis malheureusement obligé de prioriser mes projets en fonction des soutiens financiers que je trouve.

 2021/2022

J’ai bénéficié par le passé de plusieurs financements de la part de ritimo, Framasoft et Code Lutin.

Mais une grande partie de mon année 2022 a été consacrée à chercher des budgets pour travailler sur ce plugin. J’ai également passé pas mal de temps à travailler dessus « bénévolement » (ie : je n’ai trouvé personne pour financer à posteriori le temps passé).

Ce n’est qu’en cette fin d’année que j’ai pu trouver des financements solides, et travailler sur une feuille de route.

 Les dons

Je ne l’ai pas mentionné dans le paragraphe précédent, mais j’ai aussi reçu quelques dons, notamment via ma page liberapay. De cette plateforme, je reçois en moyenne 8.90€/mois.
J’ai aussi reçu un don via Github Sponsor.

Ces dons peuvent sembler anecdotiques, mais en réalité ils sont très motivants. Se dire qu’un⋅e inconnu⋅e est prêt⋅e à me donner 10, 20 ou 50€, juste parce que ce que j’ai fait lui est utile, c’est extrêmement gratifiant.

Donc « gros cœur avec les doigts » à toutes les personnes qui donnent via ce genre de plateforme, que ce soit à moi ou à d’autres. Merci, merci, MERCI !

 Copie Publique

Code Lutin est une entreprise spécialisée dans le logiciel libre. Iels ont décidé, il y a plusieurs années maintenant, de redistribuer au moins 1% de leur chiffre d’affaires annuel à un ou plusieurs projets de logiciels libres. La décision se prend démocratiquement entre membres de l’équipe. C’est une fantastique initiative, qui en plus d’aider financièrement, donne beaucoup de visibilité aux projets choisis.

J’avais déjà eu la chance d’être retenu l’année dernière.

Et pour 2022, iels ont décidé qu’il était temps de passer la vitesse supérieure, et d’encourager d’autres structures (entreprises, auto-entrepreneur⋅euse, ...) à faire de même. Iels ont donc monté la plateforme Rétribution Copie Publique. L’idée est simple : vous bénéficiez d’outils libres et gratuits, c’est un juste retour des choses de donner un peu d’argent en retour. Toute structure voulant rejoindre l’initiative peut définir elle-même ses conditions. Je vous invite grandement à aller visiter leur site, et à jeter un œil aux bénéficiaires passés.

Et j’ai l’immense joie d’avoir à nouveau été retenu pour une subvention en 2022 (pour le plugin de tchat Peertube, et plus largement pour les autres plugins Peertube sur lesquels je travaille).

 Framasoft

En cette fin d’année, Framasoft a également décidé de dégager un budget pour le plugin de tchat.

Framasoft m’a toujours soutenu dans ce projet, et Chocobozzz (le créateur de Peertube) a toujours été très réactif quand j’ai eu besoin de modifications dans le système de plugin Peertube. C’est un réel bonheur de travailler avec des gens comme elleux.

Je me dois de préciser les points suivants :

  • Ce financement a pu se faire grâce aux dons (essentiellement de particuliers) fait à Framasoft les années précédentes.
  • Framasoft est financée uniquement par les dons, donc « + de dons à Framasoft => + de capacités de financement de prestations libres autour de PeerTube & autres projets Framasoft » (et des projets, Framasoft en a énormément pour les années à venir !).
  • Framasoft est en pleine campagne de don pour 2023. Il leur manque encore une grosse partie de ce dont iels ont besoin pour 2023, donc allez les soutenir !

Si vous voulez un peu plus d’informations, il se trouve que les deux co-directeurs de Framasoft étaient en live au poste pour en parler ce matin (c’est un lien Twitch, mais je remplacerais par un lien Peertube dès que celui-ci sera disponible).

 NlNet

NlNet est une fondation hollandaise qui finance des projets de logiciels libres. Iels lancent plusieurs campagnes de financement par an, sur des thématiques différentes. L’argent provient de sponsors, dont entre-autre la commission européenne.

Après avoir postulé une première fois sans être retenu, j’ai retenté ma chance pour l’appel NGI Zero d’août 2022. Et cette fois, je peux maintenant l’annoncer publiquement, nous avons signé !

Cela va me permettre de travailler plusieurs semaines sur le plugin, et d’y apporter des évolutions très attendues ! (voir plus loin dans cet article).

 Et pour 2023 ?

Après cette longue recherche de financements, je peux maintenant enfin m’attaquer aux évolutions du plugin !

J’ai dores et déjà publié une version 6.0.0 qui est détaillée ici en anglais, ou plus sommairement ici en français.

J’ai réordonné toutes les tâches à faire sous forme de tickets Github (en anglais). J’y ai ajouté des jalons pour donner un calendrier approximatif (je dois toujours jongler entre différents projets, alors j’espère que vous serez tolérant sur mes retards éventuels 😉).

J’ai également créé un projet Github qui permet de voir l’état des différentes tâches (et de filtrer par jalon).

Enfin, j’ai ajouté sur les tickets Github des tags précisant le sponsor lié à la tâche (le cas échéant). Vous pouvez donc filtrer les tickets par sponsor, pour grâce à qui les fonctionnalités vont voir le jour.
NB : Code Lutin n’est associé à aucune tâche en particulier, mais leur financement existe bien, et m’a grandement aidé !

Je vais maintenant détailler les plus grandes fonctionnalités à venir.

 Affichage du tchat dans les « embed »

Il est possible d’inclure une vidéo Peertube sur un site tiers. Mais jusqu’à récemment, il n’était pas possible pour les plugins Peertube d’ajouter des fonctionnalités dans les vidéos ainsi incluses.

Aujourd’hui, il est déjà possible d’inclure le tchat, en construisant « à la main » la balise « iframe » qui va bien. Si vous n’avez pas compris de quoi je parle, bah... vous avez compris le problème ;).

La première chose que je vais faire, c’est ajouter une option pour générer facilement le nécessaire pour qu’il n’y ait plus qu’à copier/coller sur son site web. À l’instar de ce qu’il faut faire pour y inclure la vidéo. Vous n’aurez alors qu’à générer « l’iframe » pour la vidéo, et celle pour le tchat, et placer les deux à votre convenance.

Ensuite, je vais également proposer une autre option. Quand vous générerez « l’iframe » de la vidéo, vous aurez une option qui permettra d’inclure/exclure le tchat directement dans la même « iframe » que la vidéo (et/ou un bouton pour ouvrir le tchat dans une nouvelle fenêtre, la décision n’est pas prise).

Je proposerai les deux solutions fonctionnelles, car je pense que les deux sont utiles. En effet, rien ne sert d’afficher le tchat par dessus la vidéo si on est dans une toute petite miniature, et inversement.

Ces fonctionnalités sont sponsorisées par Framasoft.

 Refonte de l’UI/UX

Framasoft m’a demandé de travailler sur l’interface (UI, User Interface) et l’expérience utilisateur⋅rice (UX, User eXperience).
Je vais donc revoir de fond en comble l’intégration du plugin. Dans l’idéal, celui-ci s’intégrera mieux dans Peertube (mêmes polices d’écriture, bordures, ...). Et je vais voir si je peux faire en sorte qu’on puisse déplacer la fenêtre de discussion librement.

Je vais également rendre plus visibles, et plus pratiques à utiliser, les fonctions de modérations. Car oui, le plugin permet déjà de faire de la modération avancée, mais... c’est un peu planqué. Faute d’avoir eu le temps de faire mieux par le passé.

Enfin, je vais également améliorer l’intégration du tchat dans les outils de streaming (notamment OBS). Actuellement, c’est déjà possible (et documenté). Mais on m’a donné des pistes pour avoir un bien meilleur rendu.

 Gestion de la fédération

Peertube est une technologie fédérée. Vous pouvez créer des « ponts » entre « instances ». Par exemple, je peux voir un live diffusé sur le serveur de l’association A, depuis mon serveur perso B. Seulement pour l’instant, le plugin ne sait pas du tout gérer la fédération. Le tchat ne s’affiche que sur l’instance d’origine (A).

Grâce à un financement de NlNet, je vais faire en sorte que le tchat s’affiche sur l’instance d’où on regarde, et qu’on y soit connecté avec son compte sur celle-ci (le cas échéant).
Le fait d’avoir choisir la technologie XMPP va me faciliter la vie, celle-ci était déjà faite pour être décentralisée. J’ai juste quelques difficultés techniques à surpasser (Peertube dois agir comme un proxy web devant le service, il faut donc « proxyfier » les communications par une couche web).

Il faudra bien sûr accompagner ceci avec des fonctions de modération, pour éviter les comportements hostiles (type « raid de bots » ou « spam »). Le⋅a streameur⋅euse devra pouvoir choisir d’ouvrir ou non aux instances distantes, bannir en masse, etc.

Dans un second temps, j’essaierais également de standardiser ces mécanismes de tchat sur le fédiverse, afin de permettre de s’y connecter depuis d’autres logiciels ! (pourquoi pas Mastodon par exemple). Mon travail consistera à proposer un standard « ActivityPub » pour annoncer le(s) tchat(s) associé à un objet, et à l’implémenter dans Peertube et le plugin de tchat.

 Bot de modération/interaction

J’ai dans mes cartons plein d’idées sur des fonctionnalités de « bots » (liste non exhaustive) :
 publication automatisée de texte dans le tchat (pour les liens de sponso, les règles, ...)
 modération automatisée (blocage de certains mots, ban, etc)
 réaction à des commandes

Bref, plein de fonctionnalités que vous avez peut-être déjà vu passer sur Twitch et cie. Je sais que c’est très attendu, et bonne nouvelle, ce sera fait en 2023 grâce à NlNet !

Je pense également à une interface pour le⋅a streameur⋅euse, avec une liste de boutons d’actions. Pour par exemple bannir en un click, ou balancer des messages pré-remplis.

Et enfin, je pense aussi à des outils d’interaction dans l’autre sens : une action dans le tchat provoquerait un affichage/son dans le stream. C’est par exemple ce qu’on peut voir sur Twitch quand il y a un don.

N’hésitez pas à proposer vos idées (en anglais de préférence, mais français possible) ici si vous avez un compte.

 Traductions

Je vais également travailler sur les traductions du plugin, pour essayer de supporter un maximum de langues.

 Accessibilité

NlNet fourni un service d’audit en accessibilité à ses bénéficiaires. Je vais donc pouvoir m’assurer grâce à l’aide de personnes compétentes que le plugin de tchat est accessible (personnes mal-voyantes, daltonisme, handicap moteur, ...), et corriger les problèmes si nécessaire.

 Autres

Il y a d’autres évolutions prévues, mais je ne vais pas les détailler ici et maintenant. Le projet Github en donne une vue assez complète.

 Conclusion

Voilà, ce sont les nouvelles concernant ce plugin de tchat Peertube. J’espère que vous serez aussi enthousiastes que moi. J’ai hâte de m’attaquer à toutes ces fonctionnalités !

Si vous voulez en discuter, vous pouvez passer par Github, le forum Peertube que je lis quasi-quotidiennement, ou mon compte Mastodon.

PS : l’image d’illustration de cet article est Sepia, la mascotte de Peertube. Publiée sous licence libre CC-BY-SA par David Revoy