1 of 22

ActivityPub

a decentralized social networking protocol

2 of 22

3 of 22

Email

4 of 22

5 of 22

Facebook Friends

Twitter Followers

YouTube Subscribers

TikTok Followers

6 of 22

I'm old enough to remember when the Internet wasn't a group of five websites, each consisting of screenshots of text from the other four.

– Tom Eastman, 2018

7 of 22

Why is this a problem?

  • Walled gardens, vendor lock-in
  • High switching costs
  • Lack of sovereignty (externalized to platforms)
  • Privacy issues & data protection
  • Centralization of power
    • Discretionary moderation
    • Control of (manipulative) algorithms
  • Incentive to maximize engagement
  • Ad-tech financed R&D

8 of 22

For most of the last 15 years, the social web has felt like a settled market – and then Elon Musk bought Twitter

9 of 22

10 of 22

What are the alternatives?

11 of 22

Facebook Friends

Twitter Followers

YouTube Subscribers

TikTok Followers

12 of 22

Don't you miss the days when the web really was the world's greatest decentralized network? Before everything got locked down into a handful of walled gardens?

13 of 22

Enter ActivityPub! ActivityPub is a decentralized social networking protocol based on the ActivityStreams 2.0 data format. ActivityPub is an official W3C recommended standard published by the W3C Social Web Working Group. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and subscribing to content.

14 of 22

ActivityPub

15 of 22

So what can you do with it?

  • A server can POST to someone’s inbox to send them a message.
  • Your client can GET from your inbox to read your messages.
  • You can POST to your outbox to send messages to the world.
  • You (or your server) can GET from someone’s outbox to read messages.

16 of 22

Messages

{

"@context": "https://www.w3.org/ns/activitystreams",

"summary": "Martin created an image",

"type": "Create",

"actor": "http://www.test.example/martin",

"object": "http://example.org/foo.jpg"

}

17 of 22

Activity Types

Accept

Add

Announce

Arrive

Block

Create

Delete

Dislike

Flag

Follow

Ignore

Invite

Join

Leave

Like

Listen

Move

Offer

Question

Reject

Read

Remove

TentativeReject

TentativeAccept

Travel

Undo

Update

View

{

"@context": "https://.../ns/as",

"summary": "Sally went home from work",

"type": "Travel",

"actor": {

"type": "Person",

"name": "Sally"

},

"target": {

"type": "Place",

"name": "Home"

},

"origin": {

"type": "Place",

"name": "Work"

}

}

18 of 22

Where is it used?

Service

Application

Microblogging

Publishing

Sharing Knowledge

Sharing Media

PeerTube (video), Castopod (podcast), PixelFed(pictures)

Sharing Events

Sharing Links

Sharing Code

ForgeFed, FedeProxy, GitLab (soon)

19 of 22

Who is using it?

20 of 22

Challenges

  • Scalability - guarantees, ordering, celebrity follow challenge
  • Fragmentation - existing communities now fragmented
  • Embrace, Extend, Extinguish - the Threads challenge
  • Moderation - choose your own policy, but moderation still a challenge
  • Discoverability - where should I have a presence
  • Identity portability - different from account portability

21 of 22

Want to know more?

22 of 22