Solid: taking back the Web through decentralization

Ruben Verborgh, Ghent Universityimec

FOSDEM ’19, 3 February 2019

Watch the recording of this presentation.

Also read my FOSDEM interview on Solid.

Solid: taking back the Web through decentralization

Ruben Verborgh

Ghent University – imec

Web

30

[photo of a birthday cake]
©2017 Dark Dwarf

This is for everyone #london2012 #oneweb #openingceremony @webfoundation @w3c

Tim Berners-Lee July 27, 2012
[photo of a birthday cake]
©2017 Dark Dwarf
© Tim McDonagh

With Solid, we aim to
reshape the relationship
between people, their data,
and the apps they use.

Solid restores choice
on the Web.

©2018 Skyler King

The world before the Web
was highly heterogeneous.

©2017 Michael Fraley

The Web strives to be universal
through independence of many factors.

©2008 Lucélia Ribeiro

The Web brings freedom of expression
to everyone across the world.

©2012 Luke McKernan

People started their own blogs and sites,
sharing things on their own terms.

©2012 Gregor Fischer

A generation of social platforms
helped people interact and share.

The Web brings permissionless innovation
at a global scale.

©2012 SparkFun Electronics

Permissionless innovation has brought
unprecedented creativity to the world.

Like other systems at the time,
the Web was designed decentrally.

Its novelty was universality.

The first threat to universality
were the browser wars.

[Internet Explorer logo]

This battle was replaced by another:
the search engine wars.

[Google logo]

This battle was also replaced by another:
the platform wars.

[Facebook logo]

Our data has become centralized
in a handful of Web platforms.

Within the walled gardens of social media,
you have to move either data or people.

© David Simonds

The current massive centralization
hurts diversity, innovation, and choice.

Ironically, permissionless innovation
even allows platforms that prevent it.

The Facebook founder has no intention of
allowing anyone to build anything on his platform
that does not have his express approval.

Having profited mightily from the Web’s openness,
he has kicked away the ladder that elevated him
to his current eminence.

John Naughton, The Guardian
[photo of a ladder]
© Vinayak Shankar Rao

Solid is about choice.

The Solid ecosystem enables people to pick the apps they need, while
storing their data wherever they want.

People control their data, and share it
with the apps and people they choose.

©2007 plien

People choose where they store
every single piece of data they produce.

They can grant apps and people access
to very specific parts of their data.

Separating app and storage competition
drives permissionless innovation.

Solid is not a company or organisation.
Solid is not (just) software.

[the Solid logo]

Anyone can build or host
software for Solid.

The Solid server acts as a data pod
that stores and guards your data.

A typical data pod can contain
any data you create or need online.

Solid clients are browser or native apps
that read from or write to your data pod.

Any app you can envision,
you can build with Solid.

The Solid server and several apps exist
and are usable for developers.

Solid is transitioning from research project
into an ecosystem backed by a start-up.

We aim to bring the Solid experience
to people all over the world.

2014
start of Solid at MIT
Oct 2018
launch of Inrupt
Jan 2019
developer toolkit & common UX
early 2019
MVP of the ecosystem
today
you become involved? 😉

Decentralized apps have many back-ends. Back-ends work with many apps.

The current approach to building APIs
does not play well with decentralization.

When clients do not bind to HTTP requests,
APIs can evolve independently of app logic.

Interoperability challenges in Solid
are solved through Linked Data in RDF.

With JSON-LD, every piece of data
can link to any other piece of data.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-fosdem2019",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://fosdem.org/2019/#this",
  "published": "2019-02-03T09:00:00Z"
}

Data shapes and their semantics
enable layered compatibility.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-fosdem2019",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://fosdem.org/2019/#this",
  "published": "2019-02-03T09:00:00Z"
}

Different source data
can be concatenated.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "@graph": [{
    "type":      "Like",
    "actor":     "https://ruben.verborgh.org/profile/#me",
    "object":    "https://fosdem.org/2019/#this",
    "published": "2019-02-03T09:00:00Z"
  },{
    "type":      "Like",
    "actor":     "https://example.org/people/silvia#me",
    "object":    "https://fosdem.org/2019/#this",
    "published": "2019-02-03T09:05:00Z"
  }]
}

The developer experience is the most
crucial factor for Solid success.

Simple tasks should be simple,
complex tasks should be manageable.

People think RDF is a pain
because it is complicated.
The truth is even worse.

RDF is painfully simplistic,
but it allows you to work with real-world data
and problems that are horribly complicated.

Dan Brickley & Libby Miller

The old way of working with RDF
followed the old way of JSON APIs.

The old way of working with RDF
in the browser is hard.

  1. gather input data into a query
  2. send a specific API call the query
  3. parse the response as JSON RDF
  4. traverse the JSON tree RDF graph structure
  5. update the DOM

What are the cool kids doing?

©2011 smr+lsh

React combines all steps into
one component experience.

<LoggedIn>
  <p>Welcome, <Value src="user.firstName"/></p>
  <Image src="user.image" defaultSrc="profile.svg"/>
  <ul>
    <li><Link href="user.inbox">Your inbox</Link></li>
    <li><Link href="user.homepage">Your homepage</Link></li>
  </ul>
  <h2>Your friends</h2>
  <List src="user.friends.firstName"/>
</LoggedIn>

These components rely on
micro-query expressions.

<LoggedIn>
  <p>Welcome, <Value src="user.firstName"/></p>
  <Image src="user.image" defaultSrc="profile.svg"/>
  <ul>
    <li><Link href="user.inbox">Your inbox</Link></li>
    <li><Link href="user.homepage">Your homepage</Link></li>
  </ul>
  <h2>Your friends</h2>
  <List src="user.friends.firstName"/>
</LoggedIn>

LDflex exposes Linked Data’s flexibility without RDF’s complexity.

LDflex is a domain-specific language
for JavaScript.

The best way to predict
the future is to invent it.

Alan Kay
[photo of Alan Kay]
©2008 jeanbaptisteparis

The best way to invent
the future is to predict it.

John Perry Barlow
[photo of John Perry Barlow]
©2007 Joi Ito

Solid needs a diverse community
in order to succeed.

Let’s assemble the brightest minds
from business, technology, government,
civil society, the arts and academia
to tackle the threats to the Web’s future.

Tim Berners-Lee
©2011 Dave Pitt

This is for everyone #london2012 #oneweb #openingceremony @webfoundation @w3c

Tim Berners-Lee July 27, 2012
©2011 Dave Pitt

Solid: taking back the Web through decentralization

@RubenVerborgh