Web Fundamentals
Re-decentralizing the Web

Ruben Verborgh, Ghent Universityimec

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

Ruben Verborgh

Ghent University imec IDLab

Creative Commons License Except where otherwise noted, the content of these slides is licensed under a Creative Commons Attribution 4.0 International License.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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.

The pendulum of (de-)centralization
is driven by more than just technology.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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.

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

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

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.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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

Solid aims to restore choice
by separating data from apps.

For every piece of data an actor produces, they can choose where to store it.

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 platform to replace others,
but a way of building for the Web.

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 app 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.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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.

Decentralization needs replication
for realistic performance.

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 Paradox of Freedom:
you can only be free if you follow rules.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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-ugent",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://www.ugent.be/#this",
  "published": "2019-04-25T08:00:00Z"
}

Data shapes and their semantics
enable layered compatibility.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-ugent",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://www.ugent.be/#this",
  "published": "2019-04-25T08: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.ugent.be/#this",
    "published": "2019-04-25T08:00:00Z"
  },{
    "type":      "Like",
    "actor":     "https://example.org/people/silvia#me",
    "object":    "https://www.ugent.be/#this",
    "published": "2019-04-25T08: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.

Frameworks like React combines all steps
into a seamless 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>

Reusable abstractions can be shared
between different frameworks.

<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.

Web Fundamentals
Re-decentralizing the Web

#WebDev2019

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

Alan Kay

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

John Perry Barlow

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