Projet de mise en place d'un pont Discord ↔ Matrix au Parti Pirate


#1

Bonjour ! Ce sujet revient souvent sur la table, je me motive aujourd’hui à proposer un projet concret pour qu’on mette enfin en place un pont vers Matrix sur le Discord du Parti Pirate.

Pourquoi un pont Discord :left_right_arrow: Matrix ?

Mettre en place un pont Discord :left_right_arrow: Matrix sur les chans publics du Parti Pirate répond à plusieurs objectifs : permettre de toucher un public plus large, car plus besoin d’accepter les conditions d’utilisation de Discord pour venir discuter de manière instantanée avec nous ; permettre de s’affranchir dans une moindre mesure d’une unique plateforme centralisée, avec des salons Matrix hébergés sur nos serveurs nous sommes protégés de toute fermeture de notre serveur Discord ; mettre en application plusieurs de nos valeurs écrites dans le Code des Pirates (par exemple “II - Les Pirates respectent la vie privée”).

Le but n’est pas de relancer un énième débat “Pourquoi notre communication se fait par Discord et pas par Matrix ?” (dont on a déjà donné la réponse), mais bien de proposer Matrix comme complément (et non comme remplacement) à Discord pour nos chans publics uniquement. Le @Conseil-Technique l’avait évoqué dans son rapport de fonctionnement en septembre 2019 ici.

Comment ça marche ?

La liaison se fait grâce à un bot que l’on hébergerait sur nos propres serveurs informatiques. Côté Discord, on doit d’abord créer un bot (depuis un compte Discord “officiel” du PP pour la pérénnité) puis l’ajouter sur le serveur du Parti Pirate, et doit pouvoir lire les chans que l’on souhaite relier. Côté Matrix, le bot doit être invité sur chaque channel à relier.

Le serveur Discord du Parti Pirate existe déjà, il n’y a rien à faire. Les chans Matrix n’existent pas encore. On peut choisir de créer les différents chans sur une instance publique (matrix.org par exemple), ou héberger notre propre instance et créer nos chans dessus (de la même façon que le PP possède un compte Mastodon sur sa propre instance, plutôt que de passer par une autre instance publique). Synapse est le plus populaire seveur pour Matrix et a seulement besoin de Python 3.5.2 ou supérieur, PostgreSQL (optionnel, mais plus performant que SQLite utilisé par défaut) et au plus 1 Go de RAM (on s’en servirait uniquement pour créer les chans et un compte pour le bot, le serveur serait donc très léger).

Avec notre propre instance, les gens pourraient ainsi rejoindre nos chans publics à l’adresse #accueil-aide:partipirate.org ou encore #discutech:partipirate.org par exemple.

Pour des raisons pratiques (gestion des permissions côté Matrix), il est plus simple de ne mettre en place ce pont que sur nos chans publics : on proposerait ainsi aux visiteurs la même expérience qu’ils choisissent de venir discuter avec nous sur Discord ou sur Matrix (puisque les chans privés de notre Discord ne servent de toute façon qu’au fonctionnement interne).

Je suis volontaire pour installer tout ça (en demandant à rejoindre l’équipe technique ?), documenter et maintenir cela pour le moment (seul le serveur Synapse ainsi que le bot sont à maintenir).

À quoi ça ressemble ?

L’expérience est très fluide, un exemple de conversation :

Côté Matrix (sur le client Element) :
image

Côté Discord :
image

Qu’en pensez-vous ?


#2

J’adore ce projet !

Pour le développer au PP, ne faudrait-il pas que tu sois membre de @EquipeTechnique, au moins temporairement le temps de mener cette mission ?

Est-ce que c’est compatible avec nos actuels bots ? Notamment Congressus ?
Et ça voudrait dire qu’on aurait une instance Matrix à gérer ?
Qui s’en chargerait ?


#3

C’est le minimum pour pouvoir agir sur l’infra.

Non.

De la lecture que j’en ai, oui. Quoi qu’on pense de Matrix ou Discord, aller s’installer sur matrix.org revient à faire la même chose qu’avoir un “serveur” sur Discord.

Bah du coup, @Phokopi

Après je rappelle qu’il y a des règles de gestion des serveurs au sein du Parti Pirate et qu’il y a en plus une migration en cours. À savoir qu’on a aussi une machine de test pour vérifier l’installabilité de la solution.


#4

Exact, l’idée d’avoir notre propre instance est de ne pas dépendre d’une plateforme tierce (que ce soit Discord, l’instance Matrix matrix.org ou toute autre instance Matrix).

Les messages de bots ne sont pas retransmis entre Discord et Matrix (dans les deux sens). Pour la gestion de rôle du bot Congressus, pas compatible non plus : la gestion des permissions sur Matrix est bien moins poussée que sur Discord.

Point d’attention : on ne peut pas modérer (rendre muet, kick, ban) une personne qui est sur Matrix depuis Discord, et inversement. Parmi les personnes habilitées à modérer le Discord, cela implique que certaines doivent être présentes sur Matrix (puisse s’y connecter rapidement en cas de pépin) avec le rôle de modérateur sur nos salons.

Article 15-1 : Les membres de l’équipe technique sont recrutés par cooptation. L’Assemblée Permanente doit approuver la nomination des nouveaux membres de l’équipe technique.

À voir pour une cooptation par l’AP de ce mois-ci, ou s’il faut attendre le mois prochain :slight_smile:


#5

Ça peut attendre, parce que rentrer dans l’équipe technique pour ne pas pouvoir faire ce pour quoi tu serais rentré serait désolant.

En l’occurrence, il faut arrive à convaincre le CT de l’utilité de la chose, convaincre le CT de l’installabilité et de la maintenabilité de l’outil, convaincre le CRP et le CVI qui vont devoir se taper de la modération sur une autre plateforme, et enfin convaincre les pirates que c’est utile.


#6

Pour ça, des arguments sont dans mon premier post :smiley: Si d’autres Pirates voient des pours ou des contres sur la mise en place d’un pont, n’hésitez pas !

Pour ce point, il est vrai que les membres du CRP et du CVI auront une (légère) charge supplémentaire de modération puisqu’ils devront être prêts à intervenir côté Matrix en cas de soucis (mêmes règles et donc même modération que sur le Discord, mais ils devront effectivement avoir un compte Matrix et un client pour s’y connecter aussi rapidement qu’ils le feraient sur Discord). S’ils soutiennent l’utilité d’un pont Discord <-> Matrix (cf point précédent), je ne peux qu’espérer qu’ils acceptent un léger effort de ce côté :pray:

Installation : le serveur Synapse est léger et facile à installer (cf. la documentation ; une image docker officielle existe aussi si jamais), aussi besoin d’un reverse proxy. Une fois les chans crées, il n’y a plus qu’à maintenir le serveur à jour : les changelogs indiquent les éventuels changements à faire dans le fichier de configuration du serveur, cela se fait donc à priori sans problème.
Je ne connais pas l’infrastructure (VM, OS, etc.) des serveurs, donc je ne peux pas m’avancer plus sur ce point :sweat_smile:


EDIT: Pour parler rapidement de l’espace disque : ce qui prend le plus de place sur le disque sont les pièces jointes de messages (images, fichiers audio ou vidéo, etc.). Grâce à l’API admin on peut supprimer :

  • les fichiers en cache sur le serveur (fichiers qui proviennent d’un autre serveur matrix que le nôtre) dont le dernier accès par un utilisateur de notre serveur est supérieur à une certaine date ;
  • les fichiers locaux (téléversés par un utilisateur de notre serveur, y compris l’utilisateur “bot” qui respostera les images envoyées sur notre Discord directement dans le salon Matrix associé de notre serveur) dont le dernier accès est supérieur à une certaine date (et éventuellement plus grand qu’une certaine taille).

Ainsi, si trop d’images sont repostées depuis Discord vers Matrix de sorte que la place sur le disque commence à trop grossir, on peut faire une purge de ces deux types de fichiers. Pour les premiers (fichiers distants en cache sur notre serveur), si un utilisateur de notre serveur remonte une conversation, les fichiers seront à nouveau téléchargés sur le serveur ; pour les seconds (fichiers locaux), ces fichiers seront définitivement supprimés.