Decentralizing personal data management with Solid:
a hands-on workshop

Ruben Verborgh, Ghent Universityimec

SEMIC Workshop, 6 October 2020

Solid:
Concept & Architecture

Ruben Verborgh

Ghent University – imec

Decentralizing personal data management
with Solid: a hands-on workshop

10:00–10:20
Introduction
10:20–11:05
Ruben Verborgh: Concept & architecture
11:05–11:30
Goedele Van der Spiegel: Flanders Demo
11:30–12:00
Questions and discussions
14:00–16:00
Hands-on experience

The history of computing
started out centralized.

Personal computing decentralized
computational power.

Even when the Internet became popular,
data and CPU remained decentralized.

The software-as-a-service model brought
storage and processing to the cloud.

Universality and innovation
is driven by more than just technology.

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

The Web brings permissionless innovation
at a global scale.

©2012 SparkFun Electronics

Decentralization was an assumption
when the Web was designed.

The Web’s novelty was universality.

The first threat to universality
were the browser wars of the 1990s.

[Internet Explorer logo]

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

[Google logo]

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

[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

In 2017, Tim Berners-Lee listed
three challenges for the Web.

All three indicate a loss of control/agency.

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

Tim Berners-Lee is spearheading Solid
as an ecosystem to take back control.

Solid aims to restore choice
by separating data from services.

Every person can choose where to store
any data produced by or about them.

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

Separating service and storage
drives permissionless innovation.

Solid is not a platform to replace others,
but a way of building for the Web.

Solid acts as an interoperability facilitator
and integrates with existing technology.

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

A 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 service you can envision,
you can build with Solid.

Client–server communication is governed
by the Solid specifications.

Several open-source implementations
of servers, apps, and libraries exist.

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-semic",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://www.semic2020.eu/#this",
  "published": "2020-10-06T08:00:00Z"
}

Data shapes and their semantics
enable layered compatibility.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-semic",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://www.semic2020.eu/#this",
  "published": "2020-10-06T08: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://www.semic2020.eu/#this",
    "published": "2020-10-06T08:00:00Z"
  },{
    "type":      "Like",
    "actor":     "https://example.org/people/seth#me",
    "object":    "https://www.semic2020.eu/#this",
    "published": "2020-10-06T08:05:00Z"
  }]
}
©2014 tHeDiGiTaLdRoPoUt

The Paradox of Freedom:
you can only be free if you follow rules.

We need to identify those rules
we all need to agree on.

Lessons learned from aggregating hundreds of datasets
are highly useful to inform the discussion.

Decentralization needs replication
for realistic performance.

In addition to technological changes,
we need a shift of mindset.

Current networks are centered
around the aggregator.

We need to create network flows
to and from the aggregator.

The individual network nodes
need to become the source of truth.

Aggregators need to become part
of a larger network.

Aggregators serve as a crucial
but transparent layer in the network.

Aggregators’ main responsibility becomes
fostering a network between nodes.

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

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
[photo of a ladder]
© Vinayak Shankar Rao

Solid:
Concept & Architecture

@RubenVerborgh

ruben.verborgh.org

Solid:
Hands-on experience

Ruben Verborgh

Ghent University – imec

Warning: Solid client-side apps
are rough around the edges.

Create your own Solid pod
with a provider of your choice.

You have now created a WebID
and storage location for yourself.

Log in to your own pod
and edit your own profile.

  1. Go to the homepage of your newly created pod.
  2. Click Log in and pick your provider.
  3. Click Edit your profile.
    • Fill out some basic information.
    • Bonus points for a profile picture!

Give specific apps permission
to act on your behalf.

This bit should happen through a dialog,
but we found some issues when testing.

  1. Click Preferences on your pod homepage.
  2. Add Application URLs with Read/Write/Append:
    • https://idlabresearch.github.io
    • https://rubenv-semic-2020.inrupt.net
  3. It should look exactly like this (no slash at the end).

Join me on a Solid chat
hosted on my own pod.

  1. Visit the chat that I am hosting on my pod.
  2. Log in.
    • Ignore any warnings.
    • I have given append permissions to logged-in users.
  3. Send a chat message.
    • Now I know your WebID for reuse later on.

Let us used Linked Data
to connect people.

  1. Open the instructions.
  2. Open the app.
  3. Follow the instructions.
    • Keep a close eye on your data as you progress.
    • Keep a close eye on your inbox.