Over three years passed since I wrote about a decentralized social web. The idea has not let go of me, and I have been thinking on how to build it. In the meantime, I found like minded people and their ideas. Unhosted is a website where ideas are collected on how to take back power from big web 2.0 sites like Google and Facebook. And Tim Berners-Lee himself shares our worries, starting a project called Solid.
But before taking back control, we first have to revisit why we gave it up in the first place. Advantages that come from using web 2.0 sites, why we started using them in the first place, and that we don't want to give up, are:
How do we convince people to use an alternative to Facebook? Where did Mastodon fail to convince people to step over from Twitter? The inherent problem of social media is that you don't want to leave it if all your friends are still there. I still have a Facebook account, because I know that closing it would be a leap back in communicating with some of my friends.
The starting point of content you want to share with others, is content that you want to keep for yourself. When we make photos, bookmarks, notes, we first do that for ourselves, and only some of it will be shared with others. So the first step is to facilitate this, without the need of cloud platforms. In fact, a decentralized system needs to be really good at this. One thing that can give it a head start is by breaking down silos. There should be no boundaries between photos, blog posts, bookmarks and notes, where they are all on different websites now.
For this, another concept has existed for decades, also contributed to by Tim Berners-Lee. It is the Semantic Web, a graph where every real world concept can be linked together. But RDF triples are too loose to be manageable, so we need a way to manage this data by grouping and storing them together. Most people won't write RDF triples, but most people don't mind adding OpenGraph metadata to a blog post, when they see the benefits.
Now that we have some ideas on what to build, let's look at some available technology that may answer some questions how to build it.
SyncThing is an open source project for keeping file systems in sync across the internet. It will automatically copy files between computers and even mobile devices. SyncThing is ideal for binary files. When the copies are far enough apart, not even an atomic bomb would destroy it. When you can always get a backup, you are also no longer vulnerable to ransomware.
Git is a system that is widely used by developers, because it allows collaboratively working on text based files. It allows tracking history, and branching. It is decentralised by its very nature. Every git repository is standalone, without the need of a central authority.
When we are talking about managing your own, personal content, we are already saying Content Management System. But hosting one, and especially with a database, will be too much hassle for most individuals. There is a flat-file based CMS called Grav (in fact this site is built on it), that requires only a HTTP server such as Apache or Nginx, to serve your content. When dockerized, you can mitigate the risk of it opening up more than you want. Of course we can still use cloud hosting like AWS or DigitalOcean for this.
When we have this metadata, and the content itself, we want to keep them close together. Linked Data Platform will allow organising your text and binary content, as well as the metadata that links it all together. LDP is based on containers, which are analogous to subdirectories in a file system.
I think most tools are already there to save and share the content the way we want to. We now need to shift our mind set, and start using them, instead of relying on the likes of Google and Facebook. Over time these tools will become more sophisticated and better integrated. My goal is to come back soon and share some of my bookmarks, notes and photos in a scalable, decentralized way. Hopefully before another three years have passed.