Le nom est temporaire. Nous en trouverons un mieux !
Statut : en développement.
Posca est le nom de code d’un projet de réseau social expérimental basé sur Matrix. Le but est d’implémenter les fonctionnalités des réseaux sociaux classiques (Twitter, Reddit, Facebook, Instagram, Discourse et Discord), dans une interface unifiée et d’une façon décentralisée et interopérable.
Différentes interfaces pour différents besoins
Si Matrix a été principalement conçu pour la messagerie instantané, son fonctionnement le rend adaptable à tout type de contenus. Son utilisation pourrait donc permettre de répondre à tous les besoins des communautés, au sein d’une même plateforme. Ainsi, il est prévu que Posca implémente plusieurs interfaces, avec la possibilité d’en regrouper plusieurs au sein d’une même communauté (en utilisant les “spaces”) :
- Une interface de microblogging, permettant l’affichage de statuts, comme Twitter et Facebook : elle permettrait l’affichage de réponses “en arborescence” et servirait à la fois pour l’affichage de salons thématiques, de murs et de feeds ;
- Une interface de forum, comme un mélange de Reddit et de Discourse, permettant aussi les réponses en arborescence et le fonctionnement par topic (sujet) ;
- Une interface de messagerie instantanée, implémentant la plupart des fonctionnalités que l’on retrouve dans Element et Discord ;
- Une interface médias, permettant le parcours rapide de salons de partage d’images et de vidéos, inspirée par Instagram et TikTok.
Feeds personnalisés
Si la fonctionnalité de feed n’est pas encore présente dans Matrix, et nécessitera probablement d’ajouter de nouvelles fonctionnalités au principal logiciel de serveur, elle nous semble cruciale pour permettre de suivre facilement un grand nombre de rooms. L’utilisation de rooms spécifiques débloquerait aussi de nouveaux usages : la création de feeds personnalisés (en choisissant de filtrer sur un type de room, ou sur une sélection de rooms, ou encore sur les publications publiques d’une même personne, ce qui permettrait l’existence d’un feed d’activités), le partage de ces feeds personnalisés, ou peut-être même un jour le choix d’un algorithme de mise en avant des contenus.
Autres fonctionnalités
Les autres fonctionnalités qui nous semblent nécessaires pour l’implémentation d’un réseau social utilisable sont les suivantes :
- Des outils de modération puissants ;
- La recherche dans les contenus publics ;
- Le transfert de contenus (partage/retweet) ;
- Le chiffrement bout-à-bout.
La création de versions mobiles de l’application sera faite dans un second temps.
L’interopérabilité avec les plateformes ActivityPub sera faite grâce à notre projet Kazarma.
Comment Matrix évite certains problèmes d’ActivityPub
La création d’ActivityPub a permis l’émergence de nombreuses alternatives aux réseaux sociaux commerciaux, dont le succès a montré l’existence d’une demande certaine.
Nous pensons cependant que le fonctionnement d’ActivityPub implique des défauts qui les rendent inadaptées, particulièrement dans le cas des communautés les moins publiques :
- Le côté particulièrement public d’ActivityPub est potentiellement très dérangeant : il est difficile de savoir qui peut lire un post public sur Mastodon, alors même que c’est son principal mode de fonctionnement, et que beaucoup de personnes ne cherchent pas à maximiser la visibilité de leurs publications mais plutôt à les distribuer dans leur cercle proche (la limitation aux uniques followers implique non seulement une difficulté pour les nouveaux arrivants, mais aussi un contrôle permanent des différents followers). Cela peut entraîner un stress permanent pour les personnes qui de fait utilisent un outil fait pour une utilisation publique pour des besoins qui ne le sont pas.
- Il rend du coup visibles et cruciaux des concepts qui sont originellement des concepts techniques, l’instance et la fédération. À cause du fonctionnement public d’ActivityPub, la modération ne peut se faire qu’au niveau de l’instance et la fédération, qui ne devrait être qu’un détail technique et donc “invisible” devient un choix politique, comme on peut le voir avec les discussions autour du blocage des instances d’extrême-droite ou de Threads. Cette question de modération, ainsi que la nécessaire confiance dans les administrateur·ices système due à l’absence de chiffrement bout-à-bout, et l’existence d’un feed dédié au contenu local, rend plus compliquée qu’elle ne devrait la compréhension de la nature du réseau décentralisé (le choix d’une instance est simultanément peu important, grâce à la fédération, mais aussi “plutôt important”)
Matrix
Le fonctionnement de Matrix diffère totalement, en ce que tout contenu appartient à une “room” dans laquelle il est publié. La présence d’instances potentiellement indésirables n’est pas nocif pour le réseau, car les contenus ne sont partagés qu’aux serveurs des utilisateur·ices ayant rejoint la room en question (l’existence de rooms privées – sur invitation – est ici très importante). La modération se fait aussi par room, ce qui permet de la distribuer entre membres de différents serveurs, et la possibilité de chiffrer les messages des rooms privées rend non nécessaire la confiance dans les personnes qui administrent les serveurs.
En comparaison avec ça, le fonctionnement public (celui de Twitter, Mastodon, Instagram…) consiste à ne pas publier dans un espace particulier, mais plutôt “dans le vide”, ce qui le fait apparaître dans le feed des followers (ou pas, ou à d’autres personnes, suivant l’algorithme même du feed). Si ce comportement est contre-productif pour les contenus privés, il est cependant désirable pour certains usages : dans le cas d’une personne postant ses dessins, par exemple, elle pourrait ne pas vouloir les poster dans le groupe d’une communauté de dessins, et ainsi s’exposer à de nombreuses autres personnes, mais plutôt les poster uniquement sur son mur, à destination de ses followers uniquement.
Détails techniques
Posca est construit avec Melange, un transpileur OCaml-JavaScript. L’utilisation d’un langage hautement typé, ainsi que le fait de se baser sur un serveur déjà existant et le SDK Matrix permet de se concentrer sur les fonctionnalités elles-mêmes, et d’avoir un développement rapide malgré la taille réduite de notre équipe de développement.
Le code source est publié sous licence libre AGPLv3, et est disponible sur GitLab.com.