This post is an introduction to what Solid is and what problems it seeks to fix. Heads up, I am new to Solid myself, so if there's anything you would like to comment on that maybe I don’t cover here, please get in touch and I will be happy to add it to future versions.
This post is based on a talk from the first Women of Solid meetup. If you prefer to watch a video, the talk is available here and it's 10 minutes long.
Solid is a set of technologies, conventions and tools, used to build decentralized apps based on the principles of Linked Data.
We will get into what Solid’s goals are more in detail later in this post but, one of its main goals is to give people control of their data by changing the way web applications work, and how they store and manage data, so that users are in full control of those aspects of their data.
There are two important components in this definition of Solid. One is the fact that Solid is based on the principles of Linked Data.
It is a method of publication of structured data, so that they are interconnected and therefore are more useful. It is based on web standards such as HTTP and URIs, but instead of using URIs to serve content to human readers, it extends them to share information that can be read by computers, and connect them to each other, consult different sources, etc. One of its components is RDF.
And the other important thing from the definition of Solid is the fact that it is used to build decentralized apps.
To explain what “decentralized” means, let’s have a look at what the opposite looks like:
Currently, our data is centralized in a small group of platforms, such as Facebook, Google, etc. We conduct all our human activities through these few platforms. This has many consequences for privacy. These companies usually offer a free product or service in exchange for our data, which some of them then sell to third parties. We have no control over what happens to our data once we hand it over to one of these apps.
But this also has another consequence, and it’s that it threatens the principle of universality of the web, meaning the web should be open and accessible to everyone. Within these platforms, content is not accessible to anyone.
My German teacher creates a Facebook group to share materials and announcements with the class. Some of the students don’t have Facebook accounts, so they are forced to create an account and give Facebook their data in exchange for accessing the group’s contents.
Alternatively my teacher could move out of Facebook to another platform. But now she has to make all the students move to that other platform, and move all the existing content manually, and there is no easy way to do this, she would have to essentially create everything from scratch.
And this not only affects users who need to join Facebook to access a group. Some apps only allow you to sign up using Google or Facebook, because the integrations are easy and straightforward, much easier than implementing their own authentication, so they rely on “Sign in with Google” or “Sign in with Facebook”. So now I have to have a Google or Facebook account even if I don’t want to necessarily use those platforms.
The goal of solid is that users have control over their data. This is accomplished by putting all the user data in a Solid Pod, which the user controls. The user can then decide with which people and apps they want to share their data, which data they want to share, and what kind of access they want to give to users or apps. They can also revoke access at any time.
With Solid, the app and the data are decoupled. This means that users can access their data through whatever app they prefer.
So back to the example of my German teacher: with Solid she could share the materials and announcements in her pod with the students, and the students could access them with any app they like. And whenever users decide to update their data, this means all the apps they use now have access to updated data. This is very useful, for example, when we move and need to change our address in different places.
For developers, this has several advantages too. If I create an app, let’s say a social network app, I can now compete with other similar apps based on the quality of my app, and not the amount of user data that I have.
Many times we decide to join a particular social network because all our friends are there. With Solid, each user can choose the client they prefer, and they bring their data with them.
Another advantage is not having to worry about storing user data at all. Solid is compliant with privacy laws such as GDPR, since the users can revoke access or delete data whenever they want.
Having the app separated from the data means that users can not only choose the app they prefer, but also the Pod provider they prefer, based on whatever criteria is more important to them, such as storage, security, speed, and so on.
We mentioned the Solid Pod as the place where users can store their data. A Solid Pod is essentially a normal web server that supports access control and linked data, which saves and stores data. The data can then be accessed with any app.
A Pod can contain any data that we need to use apps or generated by these apps, for instance a profile with our name and profile picture, a list of friends in a social network, a list of things I have liked or bookmarked, and so on. Essentially anything that an app needs or generates can be stored in a Pod.
So aside from being an ecosystem formed by these standards and technologies that we discussed, Solid is also a community. Many of you are familiar with Solid World, the Solid forum, and the Solid Gitter chat, and Women of Solid, and these are a few of the spaces where the Solid community gathers to exchange ideas.