The name is temporary. We'll find a better one!
Status: in development.
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.
Different interfaces for different needs
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 ;
- A forum interface, like a mixture of Reddit and Discourse, also allowing tree replies and topic-based operation;
- An instant messaging interface, implementing most of the features found in Element and Discord ;
- A media interface, allowing quick browsing of image and video sharing rooms, inspired by Instagram and TikTok.
Custom feeds
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.
Other features
Les autres fonctionnalitĂ©s qui nous semblent nĂ©cessaires pour l’implĂ©mentation d’un rĂ©seau social utilisable sont les suivantes :
- Powerful moderation tools;
- Public content search;
- Content transfer (share/retweet);
- End-to-end encryption.
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.
How Matrix avoid ActivityPub issues
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.
We believe that the way ActivityPub works involves flaws that make them unsuitable, particularly in the case of private communities:
- The way ActivityPub handles “public” posts is obtuse for the user and can cause them harm: it’s difficult to know who can read a public post on Mastodon, even though this is its main mode of operation. Many people don’t want to maximize the visibility of publications and are instead intending them to be read by closer connections (limiting access to posts to followers is restrictive for newcomers and it requires a constant monitoring of individual followers). This can cause permanent stress for people who are in fact using a tool designed for public use, but who have more nuanced privacy needs.
- 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.
Technical details
Posca is made with 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.
The source code is released under the AGPLv3 free license, and is available on GitLab.com.