Connecting people, data, and apps without centralization

Ruben Verborgh, Ghent Universityimec

Connected Data London, 4 October 2019

Connecting people,
data, and apps
without centralization

Ruben Verborgh

Ghent University – imec

Big Data is killing innovation.

Connected Data can bring it back.

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

© David Simonds

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.

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 independent 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 start-ups.

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 RDF, every piece of data
can link to any other piece of data.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-cdl2019",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://connected-data.london/#2019",
  "published": "2019-10-04T09:00:00Z"
}

Data shapes and their semantics
enable layered compatibility.

{
  "@context":  "https://www.w3.org/ns/activitystreams",
  "id":        "#ruben-likes-cdl2019",
  "type":      "Like",
  "actor":     "https://ruben.verborgh.org/profile/#me",
  "object":    "https://connected-data.london/#2019",
  "published": "2019-10-04T09: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://connected-data.london/#2019",
    "published": "2019-10-04T09:00:00Z"
  },{
    "type":      "Like",
    "actor":     "https://example.org/people/george#me",
    "object":    "https://connected-data.london/#2019",
    "published": "2019-10-04T09: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

Frameworks can provide
a simple 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 developers.

We need to investigate technology
for large numbers of small datasets.

Connecting people,
data, and apps
without centralization

@RubenVerborgh