# Le fédivers ## et ActivityPub   Antoine Deprez Développeur @ Slickteam   [@Wahahoo@framapiaf.org](https://framapiaf.org/@Wahahoo) ## 📜 Histoire / Généralités ## 🔧 Comment ça marche ? ## ⚠️ Limites et problèmes # C'est quoi ? C'est un réseau social (encore un) Mais celui là est un peu particulier (lui aussi) C'est Mastodon... *Mais* pas que # Un peu d'histoire Années 2000 : montée en puissance des réseaux sociaux propriétaires - 2003 : Myspace - 2004 : Facebook (ouverture au public en 2006) - 2006 : Twitter ## Usages en 2009 : - Facebook : 70M visiteurs / mois - Myspace: 60M visiteurs / mois - Twitter : 6M visiteurs / mois  # Le début des problèmes - Respect de la vie privée - Contrôle de l'information - Manipulation d'élections - Fuites de données # Comment faire ## Proposer des alternatives Techniquement
✅
Financièrement
❌
Sans les problèmatiques associées aux réseaux sociaux
🯄
# Le Fédivers ## C'est quoi ? Un réseau social **fédéré** Un ensemble de logiciels **décentralisés**, communicant en suivant un **même protocole** Décentralisés : Plusieurs instances d'un même logiciel Même protocole : Permet à des logiciels différents de communiquer entre eux Repose sur des logiciels libres : Mastodon, Peertube, Lemmy, Pixelfed... Et majoritairement un protocole : **ActivityPub** D'autres exemples de fédération : - Emails - XMPP Note: Décentralisés : on pourrait avoir plusieurs instances de twitter
Par exemple gitlab : gitlab Même protocole : c'est comme si sans quitter Twitter, je pouvais voir et commenter une vidéo Youtube, qu'un contact Facebook m'a partagée Avec un même compte, on peut suivre des personnes utilisant différents logiciels. # Un peu d'histoire ## Création du fédivers - 2008 : StatusNet (= GNU Social), 1er logiciel "populaire" de réseau social fédéré. OpenMicroBlogging protocol (renommé OStatus) - 2010 : Diaspora*. Protocole custom - 2016 : Mastodon. Protocole OStatus, puis ActivityPub - 2018 : Standard ActivityPub W3C - 2018 : PeerTube # Principaux logiciels actuels  # ⚠️ Vocabulaire **Logiciels** **Instances** **Fédivers** # Démo # Un peu de technique ## Le protocole ActivityPub 2 sous-protocoles : Client <-> Server Server <-> Server # Actor, Inbox, Outbox Actor = Un utilisateur. Possède une **inbox** et une **outbox**  # Actor, Inbox, Outbox  # Actor, Inbox, Outbox Messages privés  ```json[|2|3|4|5] {"@context": "https://www.w3.org/ns/activitystreams", "type": "Note", "to": ["https://chatty.example/ben/"], "attributedTo": "https://social.example/alyssa/", "content": "Say, did you finish reading that book I lent you?"} ``` # Actor, Inbox, Outbox Messages privés   ```json[|2|6-11|4|5] {"@context": "https://www.w3.org/ns/activitystreams", "type": "Create", "id": "https://social.example/alyssa/posts/a29a6843-9feb-4c74-a7f7-081b9c9201d3", "to": ["https://chatty.example/ben/"], "actor": "https://social.example/alyssa/", "object": {"type": "Note", "id": "https://social.example/alyssa/posts/49e2d03d-b53a-4c4c-a95c-94a6abf45a19", "attributedTo": "https://social.example/alyssa/", "to": ["https://chatty.example/ben/"], "content": "Say, did you finish reading that book I lent you?" } } ``` # Collections : Followers, Public addressing Messages publics  ```json[|1|4|5] {"type": "Note", "id": "https://social.example/alyssa/posts/d18c55d4-8a63-4181-9745-4e6cf7938fa1", "attributedTo": "https://social.example/alyssa/", "to": ["https://social.example/alyssa/followers/", "https://www.w3.org/ns/activitystreams#Public"], "content": "Lending books to friends is nice. Getting them back is even nicer! :)"} ``` # Collections : Followers, Public addressing Messages publics Alyssa's followers : ```json [ "ben", "alice", "bob" ] ```     **Et si Alyssa a des milliers de followers... ? 😱😱😱** # Shared inbox Alyssa's followers : ```json [ "ben", "alice", "bob" ] ``` ```json [ "https://chatty.example/ben/", "https://mastodon.example/alice/", "https://mastodon.example/bob/" ] ```   # Federated Timeline ```json {"to": "https://www.w3.org/ns/activitystreams#Public"} ``` # Mais aussi... - Follow - Like - Share / Repost / Boost (Announce) - Securité # Tout n'est pas parfait ## Charge sur les serveurs *Si **quelqu'un de populaire** voulait casser le Fédivers, il n'aurait qu'à le rejoindre* *(il ne casserait que son instance)* ## Charge sur les serveurs  ## Charge sur les serveurs  Une réponse (ou un like) au message d'elon va entraîner **beaucoup** de requêtes ## Charge sur les serveurs     ## Charge sur les serveurs Si Elon a 10 millions de followers. Répartis sur 1000 instances. 1er post : 1000 requêtes. Puis 1000 requêtes à nouveau par like / réponse. Pour 100 réponses : > 100 000 requêtes ## Visibilité des posts On ne voit que les posts qui sont arrivés sur notre instance C'est notamment le cas pour les réponses sous un post ## C'est compliqué Twitter (X) c'est facile, on n'a qu'à s'inscrire sur x.com Le Fédivers, c'est avant tout un protocole
Plusieurs services implémentent ce protocole
Il faut choisir le service sur lequel on veut s'inscrire Des solutions, par exemple [https://joinmastodon.org](https://joinmastodon.org) ## Contrôle des données Quand on publie un message, il est envoyé aux instances de tous nos followers On peut faire confiance à notre instance parce qu'on l'a choisie,
mais on ne connait pas forcément les autres instances Néanmoins, on peut contrôler qui nous "follow" # Merci !