Accueil > La Newsletter de RESINFO > Newsletter 5 > Mastodon - un réseau social distribué innovant...

Mastodon - un réseau social distribué innovant...


Matthieu Herrb1 - LAAS, CNRS, Université de Toulouse.
Janvier 2018

 

Une courte histoire du projet

On reproche principalement deux choses aux réseaux sociaux commerciaux (Twitter, Facebook…)  : d’une part leur centralisation extrême qui permet à leurs propriétaires de collecter des données sur une grande partie de la population et leur donne un pouvoir excessif de contrôle des contenus ; d’autre part les messages haineux, injurieux ou menaçants qui y profèrent, rendant très difficile (voire impossible) la fréquentation de ces réseaux pour certaines populations. 

En face, il existe depuis de nombreuses années des spécifications et des implémentations de protocoles de réseaux sociaux distribués permettant d’échapper au contrôle de la paire Facebook / Twitter (Gnu Social, Disapora…).  Cependant ces réseaux n’ont jamais réellement rencontré leur public et sont restés plus que confidentiels. 

Depuis début avril 2017, un nouveau venu a fait beaucoup parler de lui et a attiré en six mois plus d’un million de nouveaux abonnés  : Mastodon. 

Mastodon est un projet créé par Eugen Rochko, un développeur qui ne se satisfaisait pas de la situation des réseaux sociaux actuels.  Il est parti du constat que les réseaux alternatifs étaient créés par des développeurs pour des développeurs et que par conséquent l’expérience utilisateur n’avait aucune chance de séduire un·e non-informaticien·ne. 

Mastodon a donc été développé en choisissant de réutiliser un protocole existant (OStatus), à la fois pour ne pas réinventer la roue et permettre de connecter le nouveau réseau à ceux qui l’ont précédé.  Eugen a travaillé le design de l’interface et l’ergonomie de Mastodon pour attirer des utilisateur·rices de tous horizons. 

Au départ, en octobre 2016, un seul serveur public, mastodon.social, était disponible et a été rejoint petit à petit par quelques milliers de personnes, essentiellement issues de communautés LGBT+ déjà de fait mal à l’aise sur Twitter.  Début avril 2017 l’effet boule de neige s’est déclenché sans que l’on ne parvienne à l’expliquer et en quelques jours le nombre de comptes sur mastodon.social été multiplié par 10, causant la saturation du serveur. 

C’est alors que le caractère distribué et libre du protocole OStatus et de l’implémentation de Mastodon sont intervenus  : parmi les nouvelles arrivées sur le réseau, un certain nombre de personnes avec des compétences en administration système ont relevé le défit, et ont commencé à déployer de nouvelles «  instances  » de Mastodon, bien sûr connectées (on dit « fédérées » dans le jargon GNU social) à mastodon.social et aux serveurs GNU social existants. 

Ces déploiements ont bénéficié du travail initial d’Eugen et de quelques contributeurs de la première heure qui avaient bien documenté les procédures d’installation d’un serveur et prévu des modes simples (à base de containers) pour les moins expérimenté·e·s. 

Ensuite tout l’effet magique du logiciel libre a profité à plein à la communauté Mastodon  : les contributions ont afflué sur la page Github du projet avec traductions dans presque toutes les langues, des corrections de bugs et des améliorations du code.  Des nouveaux clients sur mobile (Android, IOS) et des APIs pour à peu près tout ce que la planète compte de langages de programmation ont également vu le jour élargissant encore d’avantage la communauté et les usages de Mastodon. 

Dans le même temps le réseau a continué à croître (plus doucement en général, mais avec parfois des accélérations soudaines, comme lors de l’arrivée quasi instantanée de centaines de milliers de japonais·e·s. 

Le développement de Mastodon est maintenant financé par des contributions des utilisateur·rices via Patreon 2 ou Liberapay 3 alimentant un noyau de personnes qui animent le développement. 

Techniquement aussi, Mastodon a évolué.  Depuis la version 2.0, disponible depuis début novembre, le protocole distribué OStatus a été remplacé par ActivityPub 4, un nouveau standard du W3C en cours de finalisation.  Mastodon va rester compatible avec OStatus pendant quelque temps pour conserver la cohérence du fediverse, mais il faut noter que la plupart des autres logiciels implémentant OStatus ont entrepris la migration vers ActivityPub. 

Au niveau des contenus, Mastodon partant de communautés sensibles aux notions de bienveillance tout en étant majoritairement hostiles à l’idée de censure, chaque instance peut fixer ses règles d’utilisation  : certaines définissent une charte très stricte (jusqu’à une instance Oulipienne qui bannit l’utilisation de la lettre «  e  »), d’autres se contentent de rappeler que seuls les contenus reconnus illégaux dans le pays de l’instance seront bannis.  Les mécanismes de fédération permettent aux membres du réseau de rejeter les messages d’instances ou d’utilisateurs non désirés, soit au niveau global de l’instance, soit au niveau d’un compte. 

Cette possibilité de filtrage a généré quelques cas que l’on peut considérer comme abusifs (avec quelques dérives diffamatoires accusant nommément certains membres de racisme ou d’homophobie sans éléments pour justifier leur censure.  Cependant la variété des instances a permis au système de s’auto-réguler, chaque communauté partageant des règles communes se répartissant sur des instances compatibles, tout en gardant une ouverture possible vers d’autres instances.  Le réseau a ainsi pu absorber et rejeter une tentative d’invasion par des groupes extrémistes cet été. 

 

Mastodon pour l’utilisateur 

Pour une personne habituée à Twitter ou à d’autres plateformes de micro-blogging, il est assez facile de retrouver ses marques sur Mastodon.  La première chose à faire pour rejoindre Mastodon est de choisir son instance.  Pour cela le site https://joinmastodon.org propose un outil d’aide au choix.  Mais on peut aussi aller directement vers une instance connue. 

On choisit ensuite un pseudonyme à utiliser.  L’identifiant Mastodon complet sera alors de la forme @pseudo@instance.  On peut faire le parallèle avec les adresses de courier électronique (nom@domaine) pour comprendre le mécanisme.  L’ensemble des instances interconnectées s’appelle le «  fediverse  ». 

Sur Mastodon, on poste des «  Pouets  » en français (ou «  Toot  » en anglais).  Le fait de rediffuser un message s’appelle un «  Boost  ».  Une des caractéristiques importantes de Mastodon est la gestion du niveau de visibilité d’un pouet.  Ceux-ci peuvent être publics (visibles par tous), non-listés (visibles par tous mais pas affichés par défaut), privés (visibles seulement par les abonnés) ou enfin directs (visibles seulement des destinataires listés en tête). 

Un pouet a une longueur maximale de 500 caractères.  On peut y attacher des images (jusqu’à quatre) ou une video.  Les URLs sont automatiquement cliquables. 

En cas d’erreur on peut détruire un pouet.  Cependant en raison du caractère distribué du fediverse, il n’y a pas de garantie que toutes les instances obéiront à la commande de destruction.  Il est donc possible que des copies restent en circulation.  Il vaut donc mieux tourner sept fois sa langue dans sa bouche avant de poueter.  (Il faut noter que ce problème affecte aussi les réseaux centralisés  : il y aura toujours un· malin·e pour faire une copie d’écran d’une bétise avant qu’elle ne soit effacée). 

Par ailleurs un compte peut être verrouillé  : les abonnements à ce compte font alors l’objet d’une demande de validation auprès du ou de la titulaire du compte.  Il est ainsi impossible de lire les messages privés d’un compte verrouillé sans y avoir été explicitement autorisé. 

Les pouets publics des autres forment les fils de discussion («  timeline  » en anglais).  À cause du caractère distribué de Mastodon, il y a deux fils publics principaux  : le fil public local de l’instance, sur lequel n’apparaissent que les pouets émis par les utilisateurs de l’instance et le fil public global qui rassemble tous le pouets des utilisateurs des différentes instances connectées à son instance. 

L’interface utilisateur de l’application web par défaut est inspirée d’une application populaire pour Twitter et comporte quatre colonnes  : de gauche à droite une colonne pour la saisie de nouveaux pouets et les recherches, le fil personnel (où apparaissent les pouets de ses abonné·e·s, les réponses à ses pouets et les pouets directs), les notifications et enfin une colonne qui peut contenir alternativement une conversation complète, ou le fil local ou global.  Le rôle des colonnes peut être personnalisé. 

Pour filtrer les pouets visibles, plusieurs choix sont possibles  : on peut masquer (ignorer) les pouets de cet auteur ou bien le bloquer ce qui est plus radical (ça empêche entre autres à la personne titulaire du compte bloqué de suivre le compte d’origine pour lire ses messages).  Si cela ne suffit pas, les modérateurs d’une instance peuvent masquer ou bloquer des comptes ou des instances entières au niveau de leur instance. 

Pour celles et ceux à qui l’application web par défaut ne conviendrait pas, il existe d’autres applications, notamment sur Android (Tusky 5 ou Twidere 6) ou iOS (Amaroq 7). Il existe aussi des API mastodon pour la plupart des langages (Mastodon.py 8 pour python par exemple), permettant de réaliser des bots.

 

Mastodon pour les sysadmins

Le logiciel Mastodon, c’est deux parties  : un frontend en HTML + Javascript pour l’application Web par défaut, et un backend en Ruby on Rails + Nodejs + PostgreSQL pour la partie serveur.  Un reverse proxy (nginx ou apache) complète le tout pour fournir le support de HTTPS.  Le code source de l’ensemble est disponible sur Github (https://github.com/tootsuite/mastodon) accompagné d’une documentation pour l’installation et l’administration des instances (https://github.com/tootsuite/documentation). 

Chaque version de Mastodon est installable soit via des containers Docker, soit via des recettes pour le déploiement sur certains services d’hébergement, soit sous forme d’installation manuelle pour Ubuntu ou Debian.  Mais le serveur peut tourner n’importe quel système Unix-like (il y a des instances installées sur FreeBSD ou OpenBSD par exemple). 

Lors de l’installation, il y a deux points auxquels il faut faire attention pour le bon fonctionnement de l’instance  : le plus important est d’avoir une configuration de la partie TLS de HTTPS la plus correcte possible (choix du certificat, renouvellement automatique, gestion des entêtes HSTS…).  Ensuite il faut également avoir une configuration de serveur SMTP la plus rigoureuse possible pour éviter que les messages de confirmation de l’inscription et les notifications par mail ne se perdent ou soient classées comme SPAM par les anti-spams des destinataires.  Comme ces deux points sont assez fortement dépendants des conditions locales de l’installation, ils ne sont pas forcément traités à fond dans les documentations fournies sur Github. 

Les ressources nécessaires pour l’exécution d’une instance dépendent en partie du nombre d’utilisateur·rices de celle-ci.  En particulier l’espace disque va augmenter au cours du temps pour conserver les pouets.  Il est possible de supprimer d’une instance les copies des pouets venants des autres instances, mais la base de données garde une référence vers ceux-ci.  Une instance de taille moyenne (600 comptes) occupe 40 Go de disque au bout de 9 mois.  Les instances les plus populaires sont à près d’un tera octet d’espace disque à l’heure actuelle.  Au niveau processeur et mémoire, pour 600 comptes, un cœur et quatre Go de RAM suffisent, alors que les instances les plus chargées sont obligées de répartir les différentes fonctions (base de données, frontend, backend, reverse-proxy) sur plusieurs serveurs. 

Depuis la version 2.1, Mastodon permet de bien séparer le rôle de modérateur de celui d’administrateur du serveur.  Il est donc possible de gérer le côté sysadmin d’une instance Mastodon en délégant la responsabilité de la modération à des personnes qui n’ont aucune compétence sysadmin. 

 

Quelques défauts 

Malgré tout, Mastodon n’est pas pas exempt de défauts ou de limitations.  Parmi ceux qui sont cités le plus souvent, un certain nombre de limitations proviennent directement de la nature distribuée du réseau. Il n’est ainsi pas simplement possible de connaître le nombre total exact de membres du réseau ou plus simplement le nombre d’abonné·es d’un compte si on n’est pas sur la même instance que celui-ci. 

Les questions de censure ou de liberté d’expression face aux mécanismes de modération reviennent aussi assez souvent dans les critiques.  Pour certain·es, il n’y a pas assez de censure, pour d’autres il y en a trop.  Avec plusieurs milliers d’instances de tailles très variées, il est difficile voire impossible pour un modérateur de réagir en temps réel à toutes les violations du code de conduite de son instance. 

Il y a ensuite des reproches plus techniques, qui pourront être corrigés dans la suite du développement. Parmi ceux-ci, l’un qui m’est cher, est le dysfonctionnement de l’implémentation de la double pile IPv4/IPv6 rapporté sur Github 9.  Une instance Mastodon qui annonce à la fois une adresse IPv6 et une adresse IPv4 cesse de fonctionner correctement si l’une des deux adresses ne répond pas pour une raison ou une autre. 

Enfin, le réseau actuel fonctionne plutôt bien avec environ un million de comptes, mais il est difficile d’imaginer que sa taille puisse être multipliée par mille, avec des comptes avec plusieurs centaines de milliers d’abonnements sur l’architecture actuelle des instances.  Et en même temps, Mastodon n’a pas atteint la taille suffisante pour permettre de remplacer sérieusement Twitter. Pour les organismes ou les personnes pour qui la présence sur les réseaux sociaux est une nécessité commerciale ou politique, être présentes sur Mastodon est un plus, mais ne peut remplacer la présence sur Twitter. 

 

Conclusion

Mastodon est un nouveau réseau social plutôt intéressant, à la fois sur le plan technique (protocole distribué, conception orientée vers l’expérience utilisateur…) que sociologique (modération des instances, lutte contre le harcèlement…). Il connaît un succès supérieur aux autres tentatives de micro-blogging concurrentes de Twitter, même s’il n’a pas encore réussi à rendre Twitter négligeable, ce qui n’est après tout pas nécessairement son but. Déployer une nouvelle instance du réseau est relativement facile et est un bon moyen d’y être présent en rendant son identité (laboratoire, université…) visible.

 

Annexe  : quelques instances de Mastodon 


    1. @mherrb@tetaneutral.net

    2. https://www.patreon.com/mastodon

    3. https://en.liberapay.com/Mastodon/

    4. https://www.w3.org/TR/activitypub/

    5. https://f-droid.org/en/packages/com.keylesspalace.tusky/

    6. https://f-droid.org/packages/org.mariotaku.twidere/

    7. https://itunes.apple.com/us/app/amaroq-for-mastodon/id1214116200?mt=8

    8. https://pypi.python.org/pypi/Mastodon.py

    9. https://github.com/tootsuite/mastodon/issues/3762