Into the federated Universe

Digital sovereignty through decentral communication

by April John (@april:blahaj.nyc)

Content notes

  • Technical details of the activitypup protocoll
  • The politics behind different fediverse servers
  • Inter-project politics
  • Unused potential of the Fediverse
  • Does it need to be federated?
  • Why dont we do peer to peer?

April John

@april@donotsta.re
@april:blahaj.nyc

Things im known for:
  • Fediverse Software Maintainer
  • Linux Kernel Contributor
  • Professional pro-grammar kitten

The Fediverse (federated universe)

  • users on different servers communicate via a shared protocol

The idea of a federated universe.

  • Founding of twitter in 2006 as microblogging service
  • Open Standard OStatus 2008
  • Making of gnu-social 2013
  • ActivityPup in 2018
  • finally, a federated universe! The fediverse!

You heard of Mastodon?

You heard of Mastodon?

...there is more.

Activitypub

  • protocol introduced in 2018
  • idea of a universal standard for any multimedia service to communicate between servers
    • i.e. servers chaos.social and crimew.gay communicating with each other
  • especially popular for microblogging

The architecture of Activitypub

Alt text

Photo by fastly.com

Actors and Activities

Actors represent People, Video Channels, Podcasts

Alt text

Activities represent Posts, Videos, Audio

Alt text

Actors and Activities

Actors represent People, Video Channels, Podcasts

{
 "@context": "https://www.w3.org/ns/activitystreams",
 "type": "Person",
 "id": "https://crimew.gay/users/luna",
 "name": "luna 'delete & redraft' vivian.",
 "preferredUsername": "luna",
 "summary": "hi, i'm luna, your local 18 year old gay ace polyam non-binary transfem genderfluid mess.",
 "inbox": "https://crimew.gay/users/luna/inbox/",
 "outbox": "https://crimew.gay/users/luna/outbox/",
 "followers": "https://crimew.gay/users/luna/followers/",
 "following": "https://crimew.gay/users/luna/following/",
 "liked": "https://crimew.gay/users/luna/liked/"
}

Actors and Activities

Activities represent Posts, Videos, Audio


{
 "@context": "https://www.w3.org/ns/activitystreams",
 "type": "Note",
 "to": ["https://donotsta.re/users/april"],
 "attributedTo": "https://crimew.gay/users/luna",
 "content": "it's 4:20, <b>nice</b>"
}

Issues of the standard

  • barebones specification leading to many unstandartized extensions of the protocol
    • happened, because as a w3c standard it had to satisfy many people, and thus less was more
  • activitypub sends HTML with Activities, which the Servers need to parse and then server to users
    • XSS as a service!
  • Limited standard featureset, but we can extend it ourself!

How?

"Simple", we add extra JSON fields!

Extending the AP protocol

  • Projects want new features
  • They need to invent the standard to federate these themself

Case study: Cat ears on a profile

  • Misskey added support for cat ears on profile pictures:
  • federated using a ActivityPub extension called isCat
  • Misskey interprets it and displays cat ears
  • others like Mastodon just ignore it

Case study: Cat ears on a profile

{
 "@context": "https://www.w3.org/ns/activitystreams",
 "type": "Person",
 "id": "https://crimew.gay/users/luna",
 "name": "luna 'delete & redraft' vivian.",
 "preferredUsername": "luna",
 "summary": "hi, i'm luna, your local 18 year old gay ace polyam non-binary transfem genderfluid mess.",
 "inbox": "https://crimew.gay/users/luna/inbox/",
 "outbox": "https://crimew.gay/users/luna/outbox/",
 "followers": "https://crimew.gay/users/luna/followers/",
 "following": "https://crimew.gay/users/luna/following/",
 "liked": "https://crimew.gay/users/luna/liked/",
 "isCat": true
}

..that doesnt always work

Multiple standards for the same feature

Quote posts

  • _misskey_quote
  • quoteUrl
  • quoteUri

Multiple standards for the same feature

Groups exclusive posts

  • Bonfire's circles
  • Lemmy's implementation using Announce and Follow
  • Friendica & Hubzilla implementing groups using ActivityStreams
  • Smithereen using FEP-400e (Fediverse Enhancement Proposals)
  • ....

Mastodon in the meantime

  • implementing FEP-400e partially
  • adding many own ActivityPub extensions to the mix which werent used in any of the above mentioned projects
  • we now have an even different standard

Mastodon messing up things

The issue with that

  • Mastodon is by far the biggest fediverse project
  • When mastodon implements something a specific way it turns the de-facto standard
  • bad standards impact the fediverse as a whole

Mastodon messing things up

Things already messed up

  • LD-signing
  • bad sanity checking of AP ids
  • Mastodon storing activities using internal IDs instead of using the provided IDs
  • no single implementation of the AP C2S api (yes that exists), they rather use their own
    • goal is to preserve a "Mastodon User Experience" by not implementing it
  • and soon... Groups

Why things are like this

  • every project working on its own
  • no real unified effort between fediverse software maintainers to unify features
  • working together was tried before, but suffered from disagreement between different software projects
  • every software maintainer playing "mini dictator"
  • Mastodon having a monopoly, caused my 90% of people being on the 10 most populated instances (which run on mastodon exclusively)

How things could get better

  • Fediverse Enhancement Proposals
  • standardize activitypub examples using w3c
  • AP C2S
  • people moving from big instances to small ones
    • selfhost it!

Activitypub Client to Server

  • part of the original AP spec
  • never got implemented fully anywhere
  • some clients existed for it
  • Pleroma started implementation of it, Mastodon refused to do it for 5 years in a row
  • essentially universal API for all activitypub servers, using the same standards as between server communication
  • makes it able to use one client for all* AP servers
  • takes much load of the server
all that implement it

Selfhost it!

  • big instances work against decentralisation of the fediverse
    • reason Mastodon got the biggest fedi software in the first place
  • own instances gives you independance
  • lets you deal with fediblocks yourself

Issues with self hosting

  • money
  • one needs to administer the instance themself
  • your server hardware may be overwhelmed
  • fedi consumes much storage

How to selfhost

  • get suitable hardware & domain
  • What instance do you want?
  • How do you want to deploy it?
  • Do you want to use a S3 bucket?
  • Follow relays!

What can the future hold?

Universal Peer-to-peer

More smaller instances

Ending words

Distrust authorities - promote decentralisation

![h:250 bg right](https://upload.wikimedia.org/wikipedia/commons/thumb/9/93/Fediverse_logo_proposal.svg/2048px-Fediverse_logo_proposal.svg.png)