Les API mortes se ramassent à la pelle


Les souvenirs et les regrets aussi.
Mais mon serveur silencieux et fidèle sourit toujours et remercie la vie.
Je t’aimais tant, tu étais si standardisée, comment veux-tu que je t’oublie ?

– Jacques Prévert.

Les réseaux libres et décentralisés c’est beau, pas de censure ou exploitation de vos données, bel exemple de liberté d’expression. Chacun choisissant son serveur, on évite les problèmes de points de passage uniques et diminue les problèmes en cas de défaillance d’un nœud. Enfin dans la théorie parce qu’en réalité c’est complètement le bordel. Les réseaux sociaux libres fleurissent un peu partout mais il n’y a pas moyen de s’entendre.

La semaine passée, pump.io venait de sortir sa version 0.2, une première release après 4 mois de développement (c’est là qu’on se rend compte que Diaspora avec ses 2 ans de développement s’est bien foutu de nous). Pump est un projet de Evan Prodromou, le créateur de StatusNet, et présenté comme la succession de ce dernier (prévu pour la 0.3, en avril 2013, les inscriptions sur identi.ca sont d’ailleurs désormais gelées). StatusNet continuera a vivre et être maintenu mais il ne faut pas s’attendre a voir de grandes nouveautés apparaître. Pump est écrit en NodeJS et avec une base de donnée NoSQL (MongoDB & co). Je n’ai aucun problème avec le fait d’abandonner le couple vieillissant PHP/MySQL (au contraire). Le point problématique est un aspect que l’on voit apparaître très souvent avec les réseaux sociaux libres : il n’utilise pas OStatus mais une nouvelle API. OStatus est une suite de protocoles (Atom, Activity Streams, PubSubHubbub, Salmon et Webfinger) qui permet de se mettre d’accord sur la façon dont deux serveurs OStatus peuvent communiquer. C’est grâce à OStatus que je ne suis pas obligé d’utiliser StatusNet pour communiquer avec quelqu’un l’utilisant, je peux utiliser Friendica par exemple. Cependant Friendica est un peu l’exception qui confirme la règle, a part lui qui met un point d’honneur a être compatible avec plusieurs réseaux, les autres utilisent systématiquement des manières propre pour communiquer.

Prenons l’exemple de Tent, un nouveau protocole décentralisé assez sympa (dont TentStatus est la partie permettant le microblogging). La façon de voir les choses est intéressante et suis convaincu qu’on puisse voir de chouettes projets apparaître (comme la page Related Projects le montre). Cependant ils ont fait le choix de recommencer from-scratch et cassant toute compatibilité. Les serveurs Tent ne peuvent parler qu’avec des serveurs Tent. Les raisons avancées pour ne pas utiliser OStatus sont discutables : pas de messages prives, impossible de changer de serveur en gardant les relations, pas d’API standard pour l’interaction. Mais comme mentionné dans un commentaire, c’est plus drôle de partir de zéro.

installation-parabole

Avec cette parabole Turbo+ 2.0, nous devrions enfin a comprendre leurs messages codés avec ce mystérieux « XMPP »

Vous vous souvenez de Diaspora ? Belle levée de fond, beaucoup d’espoirs, deux ans de développement pour finalement abandonner le projet a la communauté. Les créateurs décident de se concentrer sur leur sorte de générateur de meme (qui utilise ironiquement Facebook-connect, un bel aveu d’échec). Il semble avoir une bonne relève et il est possible que ce projet aboutisse a quelque chose mais Diaspora part avec une mauvaise base : un protocole interne quasi inexistant (qu’on pourrait presque qualifier de propriétaire). Diaspora avait été conçut sans trop savoir où aller puisque l’API n’était pas documentée et changeait tout le temps. Le projet Friendica a essayé d’être compatible avec celui ci mais a rencontre de nombreuses difficultés. Il semblerait que la communauté a prit conscience de ce problème puisqu’ils essayent d’être compatible avec d’autres réseaux. Personnellement, j’ai abandonné mais espoirs concernant Diaspora mais je peux changer d’avis, wait and see… ou pas.

Ces deux exemples ne sont pas les seuls, dans les plus connus on a aussi Movim (a base de XMPP, pas d’interopérabilité avec d’autres API type OStatus) ou SalutAToi (utilise une API basée sur XMPP documentée mais de leur cru quand même). Notons les bons élèves que sont Friendica et BuddyCloud puisqu’ils supportent plusieurs standards.

Pour revenir a Pump, Evan avait sans doute de bonnes raisons de changer la façon d’interagir entre serveurs, il s’y connaît en réseaux décentralisés et API. En raison de quelques problèmes avec StatusNet, il a préféré repartir sur une nouvelle base. Il annonçait quand même qu’un effort serait fait pour être compatible avec StatusNet. Cependant, l’API de base reste différente, toutes les fonctionnalités devront être adaptées pour faire la transition.

Pour se rendre compte du problème, imaginons maintenant que StatusNet ou Diaspora soient complètement abandonnés par les développeurs et ne soient plus maintenus. Les logiciels ont amassés une bonne base d’utilisateur mais ces utilisateurs vont lentement migrer vers des solutions plus modernes et maintenues. Sans l’émergence d’une solution supérieure, ils vont se diviser, se tournant peut être même vers une solution propriétaire. Cette migration se fera petit a petit, avec une base d’utilisateur ne voulant pas faire de migrer en raison de la communauté déjà présente sur son vieux réseau. Si ces logiciels ne sont plus maintenus, des Pump ou Friendica seront sans doute moins tentés de continuer a maintenir un niveau de compatibilité vers eux. Les nouvelles fonctionnalités ne seraient pas portées en OStatus. La communauté se retrouverait encore plus fragmentée. C’est évidement un scénario peu probable (déjà car OStatus n’est pas utilisé que par StatusNet) mais cela montre le problème des multiplications de standards : division de la communauté encore plus accentuée en cas d’abandon de projets.

Se mettre d’accord sur un protocole standard c’est une condition essentielle pour le succès des réseaux libres décentralisés. Sans cela, je ne pense pas que l’on pourra dominer les réseaux propriétaires centralisés ayant l’avantage de ne pas avoir a se soucier de ce problème. Je ne critique pas un standard en particulier (je ne me permettrais pas d’en désigner un supérieur aux autres), que ce soit OStatus, Pump, Tent, Diaspora ou un autre à base de XMPP, il faut se mettre d’accord sur une API commune et il faut arrêter d’en développer une nouvelle pour chaque logiciel. Toutes les API ne sont sans doute pas compatibles avec tous les cas de figure (sans parler de l’école HTTP vs XMPP) mais il y a sûrement moyen de dégrossir. Créer c’est bien, améliorer l’existant, c’est mieux.

CC-BY-NC XKCD

CC-BY-NC XKCD

StatusNet vs Twitter, quelques statistiques personnelles

On considère souvent que StatusNet est un échec. Communauté trop petite, peu d’interaction, plateforme non agréable,… On voit de nombreuses personnes abandonner leur instance, @clochix étant le dernier à déclarer son intention de quitter StatusNet. Et pourtant Twitter est loin de faire des heureux, la version 1.1 de son API entrant en activité le mois prochain, de nombreux clients devraient fermer, ne respectant plus les nouvelles conditions draconiennes (nombre d’appel vers l’API fortement réduit ou interdiction de mixer les flux de Twitter et un autre réseau social par exemple). Il semblerait logique de déménager vers des cieux plus libres et cléments et pourtant… J’avais eu il y a quelques mois une réflexion concernant app.net, clone payant de Twitter, comme étant une réponse surprenante et assez déprimante (l’aspect libre n’intéresserait-il pas grand monde ?). J’ai personnellement créé un compte StatusNet sur une instance perso (mart@dotzero.me) début 2012. Après un an d’utilisation (et comme il est de bon gout de faire des récapitulatifs à la nouvelle année), voici quelques stats personnelles de mon utilisation des deux réseaux.

J’ai fait un script python pour récupérer ses stats (digression: c’est vraiment pas pratique à utiliser les API OAuth) et ai réussi avec, pas mal de difficultés avouons le, a récupérer quelques chiffres. J’aurais voulu obtenir quelques statistiques supplémentaires comme le nombre de messages favoris, répétés etc. mais l’API StatusNet ne le permet pas. Le nombre de personne suivie est également un peu faussé car est le total, pas spécifiquement pour 2012 (pas trouvé comment filtrer cette info sur aucun des deux réseaux). J’aurais aimé connaitre le nombre de personnes présentes sur les deux réseaux mais cela nécessiterait un passage en revue manuel des deux listes (peut être plus tard). Donc sur l’année 2012 nous avons eu :

Status postés : 1174 StatusNet, 796 Twitter
…dont sont des répétitions (aka RT) : 112 StatusNet, 205 Twitter
Mentions directes : 591 StatusNet, 90 Twitter
Nombre de personnes suivies : 98 StatusNet, 203 Twitter
Nombre de personnes me suivant : 67 StatusNet, 49 Twitter
…dont suivi réciproque : 45 StatusNet, 28 Twitter

dancing
Moi à chaque alerte d’un nouveau follower

Le seul point où Twitter fait vraiment mieux que StatusNet chez moi est le nombre de personnes que je suis. On peut expliquer cela par :

  • il y a plus de monde sur Twitter
  • StatusNet, de par sa nature décentralisée, rend également plus difficile la découverte de personnes à suivre (où chercher un pseudo connu ?)
  • les suggestions sur Twitter aident bien

Par contre, il n’y a pas photo, je poste plus et il y a plus d’interaction sur StatusNet que sur Twitter. J’ai plus souvent tendance à avoir une discussion de quelques status avec des gens sur StatusNet (cela peut sans doute s’expliquer à la limite de 140 caractères sur Twitter que j’ai augmenter à 256 sur StatusNet). Le taux de suiveurs réciproques (personnes que je suis et qui me suivent) est beaucoup plus faible sur Twitter. Je vois plusieurs explications :

  • plus de sociétés ou personnalités sur Twitter (personnes qui auront moins tendance à me suivre en retour)
  • plus de spammeurs sur Twitter (que je ne suivrai pas en retour)
  • je souvent de sujets geek ou libres qui intéresse un plus fort public sur StatusNet

Le nombre de répétition de status supérieur sur Twitter peut s »expliquer par le fait que j’aurai plus tendance à répéter un message d’une société, organisation ou personnalité qui sont plus présents sur Twitter.

Le troisième point soulève quand même un problème : StatusNet est une communauté peuplée principalement de geeks et libristes quand Twitter est plus généraliste. @Lydie_F a mentionné hier sur Twitter que 75% des chefs d’Etat disposent d’un compte Twitter. Combien possède un compte StatusNet ? Sans doute zéro. Combien savent ce qu’est StatusNet ? Sans doute zéro également. StatusNet n’arrive toujours pas à capter le grand public.

Évidement ceci n’est que mon expérience personnelle, d’autres auront surement des retours différents. Mes sujets de conversations sont sans doute plus orientés geek-libriste mais l’expérience StatusNet est une réussite pour moi. A l’heure actuelle, je ne pense pas supprimer un compte sur aucun des deux réseaux en raison de leur utilisation différente que j’en fais. Twitter reste plus orienté actualité/découverte de nouvelles choses tandis que StatusNet a plus un aspect communautaire. Si Twitter venait à m’obliger d’utiliser son site internet, il se pourrait cependant que je ferme mon compte sur ce dernier mais c’est clairement se couper un public différent (il reste des personnes avec qui j’ai envie de continuer à avoir un contact). Attendons de voir comment vont évoluer ces réseaux, tout cela sera surement fort différent dans un an, il ne s’agira sans doute même plus des même réseaux (pump ?).

App.net décolle, que manque il à StatusNet ?

Dernièrement, App.net a fait parler de lui pour avoir réussi sa levée de fond pour commencer son développement. Qu’est-ce qu’App.net? Sur leur site, voici ce qui est annoncé:

App.net is a real-time social feed without the ads.
Let’s create a service that puts users first.

App.net is a different kind of social platform.

We’re building a real-time social service where users and developers come first, not advertisers.

Pour résumer, l’idée derrière les développeurs de App.net est donc de créer un clone de Twitter payant. Pourquoi payer ? Pour garantir que les utilisateur et les développeurs soient les personnes à garder heureux et non plus le produit à rentabiliser comme Facebook et Twitter le considère trop souvent. L’idée a été lancée suite à la fermeture de l’API de Twitter et la présence de publicités grandissante.

Bon on a donc un système:

  • Centralisé
  • Payant
  • Propriétaire
  • Respectant les utilisateurs et développeurs

Waw quand j’ai entendu ça, j’y croyais pas. Les gens marcheraient jamais. Et pourtant, ils ont récolté 800.000$ à ce jour. En comparaison, c’est 4 fois plus que ce que Diaspora avait rassemblé pendant sa levée de fond (déjà impressionnante).

Pourquoi est-ce que je n’y croyais pas ? Parce qu’on a déjà OStatus/StatusNet ! Pour ceux qui débarquent, OStatus est un standard ouvert qui utilise une série de protocoles pour faire de l’échange de messages et StatusNet en est l’implémentation la plus connue (Friendica en est une autre). La particularité de StatusNet est d’être un logiciel libre, n’importe qui peut l’installer sur son serveur. Identi.ca est l’instance publique de StatusNet la plus connue mais il en existe des milliers d’autres, j’en ai une par exemple. Soit vous créé votre compte sur une instance existante, soit vous installez la votre sur votre serveur, cool non?

OStatus permet un échange de messages de façon distribuée. Avec ma petite instance minable, je peux parler avec n’importe qui d’autre ayant une instance compatible OStatus. Et c’est là toute la force du protocole de mon point de vue. Avec un système libre et distribué, on peut potentiellement avoir le meilleur système du monde (impossible à contrôler par exemple).

Et pourtant, aujourd’hui les gens sont prêt à rassembler 800.000$ pour créer un système payant, centralisé et propriétaire. Qu’est-ce que le système a de plus ? Qu’est-ce qui manque à StatusNet qui n’a pas réussi à se développer plus que ça?

Le buzz. App.net a réussi à faire parler de lui à un moment où il fallait, quand Twitter recevait le plus de critiques. Jusqu’à présent Twitter convenait parfaitement à tout le monde, seul quelques geeks avec leurs concepts dépassés de vie privée n’étaient pas content. Maintenant on empêche Instagram de fonctionner aussi bien qu’avant, on parle d’avoir de la pub, la censure commence à être trop présente, les mécontents augmentent. L’équipe de App.net a saisi le moment parfait pour sortir son projet avec des arguments très marketing. StatusNet n’a jamais réussi à se vendre ainsi.

Une entité claire. Savoir qu’il y a une compagnie avec des moyens derrière est rassurant pour l’utilisateur moyen. Il préfère passer par une compagnie commerciale qu’utiliser un serveur maintenu par des dons et quelques bénévoles qui risque de crasher ou être en surcharge à tout moment. L’argent ça fait pro, c’est tout. Quels sont les moyens derrière StatusNet? Aucune idée, juste un site officiel pas très fourni, un wiki spammé, un dépot Gitorious assez discret. Je n’ai aucune idée de comment avance StatusNet, ce qui se passe etc. Et OStatus? C’est encore pire. Site web mort, wiki vide (ah non, il y a cette page qui est intéressante). Je veux dire, est-ce qu’il y a un compte officiel OStatus ou StatusNet qui donne des annonces sur l’état du projet ?

Une bonne interface. Je ne suis pas un pro de l’IHM mais il faut quand même avouer que, aussi bien visuellement qu’à l’utilisation, Twitter est plus agréable. « C’est moche », « c’est lent », « c’est pas intuitif »,… On peut faire facilement pas mal de reproches (fondés ou non) à StatusNet. C’est con mais une interface intuitive avec des effets AJAX dans tous les coins, ça fait plaisir à l’œil. Vous avez vu l’alpha de App.net, si vous êtes en manque d’inspiration…

La centralisation. C’est triste à dire mais la centralisation a des avantages. Tout d’abord une plus grande réactivité. Pas de connexion et propagations de messages entre instances, tout est au même endroit. Également, la centralisation permet de créer un index très facilement des personnes présentes. Il n’existe pas de manière automatisée de chercher un groupe de personne sur StatusNet. Un index distribué serait-il possible ?

Vu comme un service. Lorsqu’il a été demandé aux fondateurs de App.net pourquoi ils ne sont pas open source, il a été répondu que leur but n’était pas de produire un logiciel mais un service. Ils se comparent à Dropbox qui fonctionne comme un service. L’utilisateur lambda n’est pas intéressé par ce qu’il y a derrière, il veut juste que ça fonctionne (ici l’on pourrait introduire un parallèle à Apple mais ce n’est pas le troll du jour). StatusNet est encore présenté trop souvent pour ses caractéristiques techniques (bien mais pas bandant) et non pas comme un outil de communication pour rapprocher les gens (là vous m’intéressez).

Je ne parlerai pas de l’API parce que je ne l’ai pas étudiée en détail mais il me semble que, du coté de StatusNet, il n’y a pas de quoi se plaindre (que les spécialistes me disent si je me trompe).

Je viens peut être de critiquer StatusNet et pourtant j’y crois encore, j’ai vraiment envie que ça fonctionne. Je crois encore que OStatus/StatusNet a un avenir devant lui. Je crois que tout n’est pas perdu et qu’il y a moyen d’attirer des masses. L’arguement principal avancé de app.net est qu’il respecte les utilisateurs et développeurs. Qu’est-ce qui respecte mieux les utilisateurs et développeurs qu’un outil créé par eux pour eux ? Un outil libre a un avantage énorme sur ce point, c’est nos données, on en fait ce qu’on veut.

App.net a montré que des gens sont prêt à repartir à zéro malgré l’effet réseau très fort sur Twitter. Qu’est ce qu’on peut faire pour y réussir également ? La question reste ouverte, je ne dis pas maintenir la vérité mais voici quelques points essentiels de mon point de vue:

  • Une interface retravaillée: on a le protocole, il manque le design (l’opposé de Diaspora en gros)
  • Une instance de référence fiable: identi.ca est ce qu’il y a de plus proche mais il manque encore de fiabilité et ne joue pas très bien avec les autres instances.
  • Un écosystème plus riche: l’API est très proche de Twitter, ça devrait faciliter les choses non? Créons des boutons « partager sur StatusNet », des clients mobiles, des intégrations dans des sites web…
  • En parler: StatusNet reste le coin des geeks, même mes potes en info ils connaissent pas en général.

Bon après il a des questions ouvertes. Est-ce qu’il faudrait un autre client alternatif à StatusNet ? Faut il chercher à copier Twitter à tout prix ou se différencier ?

Et à ceux qui me diront « t’as qu’a coder pour StatusNet plutôt que de critiquer », je rappelle qu’on peut critiquer (positivement) sans pouvoir forcement faire mieux soit même. Je suis très loin d’être un ninja du PHP, je suis mauvais et je le sais, je ne vais pas commencer à faire du développement là dedans. Par contre il y a sans doute d’autres contributions intéressantes et c’est là que j’aimerais créer une discussion.

Les ressources par exemple ? Vous avez quoi ? Allez je commence:
Si vous cherchez à jouer avec StatusNet en python, je vous conseille cette librairie python request-oauth (ou mon port python 3) pour utiliser l’API OAuth.

En terme de contributions, il y a cette page qui donne des pistes. Le wiki peut sans doute recevoir encore un peu d’aide (traduction en Français ?), trois pages Wikipédia qui pourraient bénéficier d’un petit rafraîchissement/éclaircissement OStatus, StatusNet, Identi.ca.

Si vous avez des chouettes ressources, librairies, outils, d’idées d’amélioration de StatusNet, je suis curieux d’entendre tout ça.

Mise à jour 17/08: vous avez lu les nouvelles conditions d’utilisations de l’API 1.1 de Twitter ? Il est plus que temps de se dégager de ça.