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.