Première rédaction de cet article le 16 janvier 2014
Dernière mise à jour le 19 janvier 2014
Les « réseaux sociaux » d'aujourd'hui sont dans leur écrasante majorité des gros monstres centralisés, contrôlés chacun par une seule grosse entreprise capitaliste, états-unienne et envoyant ses données à la NSA via PRISM. Il est donc logique que l'Internet, fondé sur des idées de pair-à-pair dès le début, cherche à secouer cette domination des GAFA (les énormes silos centralisés). Par exemple, peut-on remplacer Twitter par un système libre ? C'est ce que tente le projet Twister.
Le problème n'est pas trivial. Il y a des tas de raisons qui font que la plupart des projets « rézosocio libre, acentré, pair-à-pair, de gauche, etc » ont capoté (cf. mon exposé à Pas Sage En Seine). Une des difficultés est le refus, par pas mal de développeurs, d'admettre que le problème est techniquement difficile. Il s'agit entre autres de vaincre le triangle de Zooko. Pour prendre l'exemple de Twitter, si on en fait un service réparti et décentralisé, il y a deux gros problèmes techniques à gérer, la création des comptes (qui va avoir le compte « françoishollande » ?) et la découverte des autres utilisateurs. Beaucoup de « rézosocios alternatifs » avaient choisi d'aborder le problème en le niant. Pas Twister, dont les auteurs ont fait l'effort de documenter le fonctionnement dans un excellent article.
Je ne vais pas reprendre cet article ici, juste résumer en quelques points comment fonctionne Twister :
OK, ça, c'était la théorie (mais lisez le papier, il est vraiment
très bien fait). Et la pratique ? Le logiciel est libre et on peut le faire
fonctionner sur sa machine. Un avertissement : pour l'instant, c'est
plutôt du brut de fonderie, pas forcément très accessible à tous. On doit d'abord
récupérer le logiciel. Je
recommande ensuite de bien lire le fichier INSTALL
qui
décrit les instructions (et, pour Unix, le
fichier doc/build-unix.md
). Je suis arrivé à compiler Twister sur une
Debian version stable, en installant les
paquetages autoconf, automake, libtool, libminiupnpc-dev, libboost-all-dev, libssl-dev et
libdb5.1-dev et la méthode de compilation « 2b) Using standard makefile ». Attention, j'ai aussi supprimé
l'option HARDENING+=-fstack-protector-all
-Wstack-protector
du Makefile. Avec
cette option, ça compile mais ça plante au premier usage. (Un autre témoignage sur la compilation de Twister sur Debian est en ligne.)
Ah, et n'oubliez pas non plus les pages
HTML (module twister-html
), à installer séparément (voir le fichier README.md
), sinon l'interface
Web ne va guère marcher.
Une fois que c'est fait, on place dans ~/.twister
un fichier twister.conf
avec :
rpcuser=user rpcpassword=pwd
(Attention, il ne faut pas changer ces valeurs.) Et on démarre le démon :
% ./src/twisterd
On peut vérifier son bon fonctionnement en style Bitcoin classique. Si vous êtes habitué à gérer un nœud Bitcoin, vous ne serez pas dépaysé :
% src/twisterd getinfo { "version" : 90000, "protocolversion" : 70001, "walletversion" : 60000, "blocks" : 20217, "timeoffset" : -3, "connections" : 10, "addrman_total" : 1352, "addrman_get" : 1352, "dht_nodes" : 84, "dht_global_nodes" : 336, "proxy" : "", "difficulty" : 0.01538494, "testnet" : false, "errors" : "This is a pre-release test build - use at your own risk" }
Ou avec des commandes spécifiques à Twister (voir des exemples dans le
README.md
, ou bien avec twisterd help
), par exemple pour
récupérer un profil d'un utilisateur :
% ./src/twisterd dhtget fredix profile s [ { "p" : { "height" : 16835, "seq" : 6, "target" : { "n" : "fredix", "r" : "profile", "t" : "s" }, "time" : 1389010692, "v" : { "bio" : "hello", "fullname" : "Frédéric Logier", "location" : "France", "url" : "http://frederic.logier.org" } }, "sig_p" : "20ae4859b3dc17c6a03e241c93174fa42903db4b77d822c83ab6b2cf89cb5b5b287f1ba4125844519cf1b2ca214c74382ca211d20434b1c0260478c5b618111f76", "sig_user" : "fredix" } ]
Mais, bon, la plupart des interactions se feront sans doute au début
via l'interface Web, qui copie largement celle de Twitter. On se
connecte à http://localhost:28332/network.html
et
on vérifie que la connectivité marche (ici, 9 connexions et 84
machines dans la DHT) : On en
était au bloc 20 213 dans la chaîne publique (twisterd
getblockcount
vous aurait donné la même information) mais
je ne crois pas qu'il existe un explorateur de la chaîne publique,
analogue à Blockchain.info pour Bitcoin.
L'interface Web permet de créer un compte mais, dans mon
expérience, c'est parfois frustrant. Au minimum, il faut attendre
quelques minutes (rappelez-vous que c'est comme Bitcoin : les pairs
doivent valider la transaction), et cela plante parfois, il faut
essayer des commandes magiques (twisterd
sendnewusertransaction
) ou re-tenter sa chance.
Mais, bon au bout du compte, j'y suis arrivé, j'ai un compte,
bortzmeyer
(attention, Twister est à la mode,
tout le monde se précipite pour enregistrer « son » nom en ce
moment et c'est d'ailleurs présenté dans l'article comme un moyen
d'inciter les utilisateurs à l'adopter, en fournissant une prime au
premier arrivé). Ensuite, le fonctionnement est le même qu'avec l'interface
Web de Twitter. Je ne fournis pas de lien ici, Twister n'a pas encore
de passerelle depuis le Web public, il faut faire tourner un noeud
Twister pour voir.
Twister est très récent et, comme on l'a vu, pas évident à utiliser. Sa sécurité est loin d'être parfaite. Par exemple, le relativement faible nombre des noeuds fait qu'un connard disposant d'une grande puissance de calcul peut, sans compétences particulières, faire une « vraie-fausse chaîne » de blocs plus longue que la chaîne légitime, ce qui lui donne la possibilité d'annuler ou de piquer une partie des enregistrements, comme cela s'est produit le 18 janvier.
En conclusion ? Si le logiciel est encore franchement alpha, le concept est brillant : les auteurs de Twister, contrairement à tant d'autres, ont abordé de front les problèmes des réseaux sociaux décentralisés et ont des bonnes solutions. Bien sûr, il n'y a pas de miracle : notamment, il faut accepter les inconvénients de Bitcoin (le CPU qui tourne au maximum en permanence...).
Merci à Hoʍlett pour avoir
attiré mon attention sur Twister et pour deux discussions sur
SeenThis : http://seenthis.net/messages/212810
et http://seenthis.net/messages/216913
. En français, il y a aussi
deux discussions sur LinuxFr : http://linuxfr.org/users/fredix/journaux/twister-un-microblog-opensource-p2p
puis http://linuxfr.org/news/twister-un-microblog-opensource-p2p
. En anglais, on peut lire une bonne documentation pratique sur l'installation de Twister sur un Raspberry Pi dédié.
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)