Recently, Prof. Tim Berners-Lee lifted the veil off a project called Solid. I decided to check it out. In this article, I describe what Solid aims to do, and also how you can get started with it.
Solid is an attempt to re-decentralize the web.
Back in the day, the vision for the web was a decentralized, collaborative read-write space. The first browser (called WorldWideWeb) was also an editor.
However, as it progressed, the design of web applications began to centralize for a variety of reasons. User data became the source of power and income for Internet companies.
Solid is a solution to this.
Solid is a new paradigm for web applications, one that is backwards compatible with the existing web.
Solid is a tech stack, a group of related protocols, implementations, and a growing community. Much like the web.
In pre-internet computing, your personal computer stored your data.
As people began using multiple computers, and added smartphones to their lives, the “your data stays with you” model was replaced by “Your data is in one or more massive data centers around the world, managed by the app developer”.
And so, applications were deeply coupled with their data. Creating an application on the web entails managing people’s data at scale.
Apps and their ability to make money are measured by their data silo. Your data is difficult to migrate, since different apps store your data very differently.
The result? Almost every app has walled garden characteristics. This reduces incentives for developers to innovate at the app level. Existing platforms are secured against disruption, since the data lockdown makes it hard for users to move.
Some countries have enacted data protection laws. Companies must make your data available, and you can chose to download or delete it.
This attempts to return control over data back to users. But it’s a legal prescription, and not the technical reality. User data still lies with app developers, and the ability to download your data isn’t very useful if you can’t migrate to an alternative.
Solid remedies this on the technical side. It allows applications to be built in a way where they read and write data stored on your pod.
You have a pod. Your friends have a pod. Pods store your data. You allow apps to access your pod.
Maybe you have multiple pods. Perhaps separate ones for home and work. Your pod can live on your computer, or be distributed across your devices. Or it could be hosted for you.
And pods store linked data. Your pod can link to something on my pod, or anywhere on the web.
We want applications that run across our devices. But we also want autonomy of our data. And we want the ability for different apps to use the same data and write to it.
The only difference: Solid is new, and help is harder to find.
Here’s a collection of day-one concepts you’ll want to know to get started developing for Solid:
(PS: if you just wanna jump in, skip ahead to ‘First steps’)
The power of the Solid, and the web generally, is from the way data is hyperlinked together.
In Solid, you store the data you produce wherever you want. Your personal data likely resides on your pod. To refer to this data, you use URLs, like on the web.
This is also a good time to introduce the full-form of Solid: SOcial LInked Data.
Read about Linked Data in the context of Solid
RDF is a way to represent linked data with statements of the form
subject-predicate-object. These are also called triples.
RDF is an abstract model. You could even represent RDF in English sentences. Here’s a task on a Todo list:
T1 is a task
T1 is labelled "Write an article about Solid"
T1 is due October 5rd 2018
T1 is assigned to @itsarnavb
T1 is incomplete
Turtle is a compact way of representing RDF data, using URLs to represent
That’s repetitive and hard to read, so turtle has a prefix and shorthand system. This gets especially important with longer documents.
Tim Berners-Lee best explains this:
I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web - the content, links, and transactions between people and computers. A “Semantic Web”, which makes this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines. The “intelligent agents” people have touted for ages will finally materialize
Do these, in any order that works for you.
You can help out the Solid ecosystem by
- contributing to the development of Solid itself, and related infrastructure.
- developing apps using Solid.
But beware, at the moment, learning and developing for Solid requires a lot of trial and error, and asking potentially silly questions. There’s no Stack Overflow to refer to. Debugging some errors might require you to dig into the source.
Here are the communities where you can get help:
And finally, my DMs are open: @itsarnavb. I’ll try to answer every question I get, or find someone who can.
And I’ll keep this article up to date with the best resources to learn about Solid.