The git repo behind my blog.

quitting_diaspora.md 11KB

Title: Why I am quitting Diaspora? Date: 2015-01-20 19:42 Category: Phyks Alias: /2015/why-i-am-quitting-diaspora

I tried Diaspora for the last six months or so. I was seeing it as a real potential alternative to Facebook and other social networks. At the time, it was one of the most advanced decentralized social networks I knew about, and there were many people trying it, after some articles from Cyrille Borne. I have never really been fond of social networks, but was thinking this decentralized network could be fun, in agreement with my ideas and also a good way for my hackerspace to communicate with a geek public. I was not really convinced at first, but it was mostly due to the fact that I am not a huge fan of social networking, and I wanted to give it a try, hoping that it may develop further.

Finally, after 6 months of test, I think it is not worth maintaining yet another software on my server, and I am definitely quitting Diaspora. Here is some feedback…

There is nobody…

Yep, there is truly nobody. I knew some friends using it, in advance, and I was not really alone. But there is not much people using it, and they are mostly geeks and tech users. Moreover, there is no way to communicate easily from Diaspora to other social networks (contrary to what the IndieWebCamp is trying to do). This means you have Facebook or whatever social network your friends use to communicate with them, and Diaspora for your geek friends. That is not very practical at all.

Moreover, this also means that you won’t know much people on Diaspora in real life. Then, the way you publish is not really one of a social network, publishing stuff about yourself and your holidays and so on, so that your friends may be aware. It is much more like Twitter or a blog, and, personally, I prefer having a blog :)

Finally, last but not least, if you are running your own pod, as I was, you should know that you will really be alone. Indeed, Diaspora is only half-decentralized. The different pods (instances of Diaspora) can communicate one with each other, but only in limited ways. They can share posts, likes, reshares and so on, but there is no strict federation for everything. For example, contacts list is not federated. This means that if you have your own pod, you won’t be able to crawl your friends’ list to find new people to follow. Even worse, the hashtags are not federated. This means that your pod will show you things like streams for trendy hashtags, say #something, but it will only show messages tagged with #something from your pod (either your messages or messages from your friends and then your pod as a backup copy). That’s not really interesting…

The software is super ugly

Well, the software is under heavy dev, but they are not moving really fast, or at least it does not reflect in the user experience. Six months later, there are still the same basic annoying bugs in the user interface : on posting, the post form is reseted, even if the posting failed due to network loss (and then it is just a pity to post things in a train or in the countryside), the interface uses Bootstrap but lacks responsiveness and some menus are still hidden due to poor CSS in mobile mode, …

To make people come from Facebook and not only have a geek public, they should improve this user experience part, and focus on easy connectivity with other such services (Google Plus, Facebook, Twitter, Instagram for instance). That is what are doing people from the IndieWebCamp, Known and Bridgy, and in fact, after discussing with some non-tech friends, they are much more interested in these softwares than in Diaspora.

Some must-have features are also still heavily discussed and not ready to be implemented. Such things include a realtime chat, either based on XMPP or WebRTC. People heavily use the Facebook chat, people discuss on Twitter, they also want to discuss in Diaspora. The private messages are highly unpractical, and there is no built-in chat, which is a real lack in my opinion.

To sum up, in the last six months, there have been a bunch of commits and new versions, but nothing really new in the user interface. It might be either that the backend software is way too complicated and requires too much maintenance (which is then a real problem) or that they are not interested in the user interface at all, but that’s really sad. It is even worse when you have to use it to communicate with Diaspora, as we will see next (you do not have any really usable alternative interface right now).

Another point is that Diaspora is built around Ruby on Rails, which is just a real pity to install on your own server. If you have a shared host, you just cannot run it. If you have your own server, you will have some fun installing the right Ruby version on your Debian stable and installing everything… Docker images can improve it a bit, but that is definitely not a software written in a way to be widely spread and that each one runs his pod (as we saw with the federation problem). This is a bit contrary to the marketed things… As it is written in Ruby (contrary to most opensource and decentralized stuff like Wordpress), not much people can contribute. I personally do not speak Ruby, and cannot modify the software much. This is even more a problem when the community is assuming you know Ruby…

It lacks a warm community

Most of this reflexion was triggered when I discovered other attempts to decentralize stuff. At least recent attempts to do so. They are not counting on their users to move definitely to their software, or use it with a side software to communicate with their friends, but try to offer an interface to post data to all the networks and get backfeeds. Since Status.net, everyone saw that the old way is not working and now try to build stuff interacting with the rest of the ecosystem, using standard protocols whenever possible and APIs if no other solution is available.

Diaspora, on the contrary, has partial implementation of standard protocols, but no way to communicate easily with others. I was trying to crosspost from my Known instance (or rather the one from my hacklab) to our Diaspora / Twitter and Facebook account (the famous POSSE thing). The last two were really easy to do, thanks to a plugin and Bridgy. There was no way to handle the first one. So, I started to write a Known plugin to handle Diaspora crosspost, and to look for a way to get backfeed.

First, how can we push content to Diaspora? Actually, there is no specific API available. So, you basically have two ways:

  1. Either use the built-in Salmon protocol. It is minimally documented in the doc, and not the most practical way. I wanted to have something working quickly, and had a look to other softwares doing such stuff, to reuse some functions and classes. None of them was implementing it, and I was not really in writing something like this.
  2. Or use the “standard way”, at least according to the multiple scripts to handle crossposting that I found (for instance some Wordpress to Diaspora tools listed in the wiki). Then, the basic way is to start a curl session, to handle cookies, and to go to the login page, get the CSRF token, send a request with POST data to log the user in (credentials and CSRF token), then go to another page to get a new CSRF token, and post to the URL that the status form posts to, as if it was a real user. Really ugly, isn’t it? =(

Finally, I managed to have a basic Known to Diaspora plugin. Ok, I was able to post to Diaspora, with a really ugly code, but it was working.

But then, I wanted to get backfeed from Diaspora, as it is the case for Twitter and Facebook using Bridgy. Basically, this means that if anyone is commenting / liking / sharing on Diaspora, I would have a notification in Known and be able to display it under the status message. For usual centralized silos, it is “fairly” easy: they offer a rather complete API, and you just poll regularly the API for changes. In the worst scenariis, you scrap the HTML page, but this is super ugly.

Diaspora promotes decentralization and is open-source, so I was expecting it would be much easier than with silos… I had no idea of what I was wanting to do (cf this issue on Bridgy for the results of my research) =(

First, I went to their wiki, and tried to find some infos. Most of their wiki is either outdated (describing APIs which were removed in past commits) or too futuristic (describing things that are not and have not been implemented in the last six months)… Finally, I found two solutions:

  • An eventual OStatus API ActivityStreams
  • (-Scrapping-, okay not a decent idea)

I could not find any further information about these, so I headed to their IRC channel. It appeared that the first one was outdated and removed lately. I never got any answer about the second =( But I got some really interesting stuff. People wondering what is my “Diaspora handle” and making jokes about “webfinger” which looks like ”finger“ and offering me to ”finger me as long as I’m a female”… No comment on this last sentence, but I am here to discuss about technical stuff and not about sexual practices.

Finally, the only two answers I got were ”read the wiki” (hmm…) and “use this gem which handles Diaspora federation” (but problem is I do not know Ruby, am coding in either PHP or Python, and the gem is highly not documented, especially about what it really implements). I feel like I spent two days looking for doc on this point, and got virtually no info and support from the community. This is definitely something that is not interesting them, in my opinion, and I am not really willing to spend hours trying to understand something just for a small use I may have. After all, if backfeeds do not work, I do not care much about it…

More generally, most of the people that adopted Diaspora after Cyrille Borne have now gone, or do not use it regularly. There might be some reasons. Some of them just quit, others tried other social networks, to see how it looks like, especially Movim which has the advantage of being built around standard XMPP, extending it and trying to push a reasonable spec each time it is needed. I am not really confident for the future of Diaspora, and do not want to maintain something I do not use (with all the security risks, time consumption etc) on my server, so I decided to definitely quit Diaspora. For me, it failed in defending its principles, and my experience from the last two days shows me that it is not much better than centralized silos on some points, which are precisely the points more closely related to my ideas and principles. Moreover, developing for Diaspora means developing a niche software for a few (hundreds ?) of persons. If it takes so much time to get just basic behaviours, in my opinion, it is not worth the cost. Then, why would one run his own instance, if it does not carry much more good stuff than using a silo?