---
marp: true
paginate: true
_class: invert
---

# <!-- fit --> Into the federated Universe

### Digital sovereignty through decentral communication

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

![bg h:750 right](image.png)

###### by April John ([@april:blahaj.nyc][matrix])

<!-- _footer: "*Photo by Tobias Buckdahn, CC BY-SA via https://gitlab.com/swisode/website/blob/primary/themes/quark-child/images/fediverse.svg*" -->

[matrix]: https://github.com/marp-team

---

# 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)


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

<!-- _footer: "*Photo by [Eukombos](https://commons.wikimedia.org/wiki/User:Eukombos), CC0 via [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Fediverse_logo_proposal.svg)*" -->

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


--- 

![h:690 bg](https://axbom.com/content/images/size/w2000/2023/01/fediverse-branches-axbom-30-CC-BY-SA.webp)
<!-- _footer: "*Photo by axbom.com, CC BY-SA via https://axbom.com/fediverse/*" -->

---

# 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](image-2.png)
<!-- _footer: "*Photo by fastly.com*" -->

---

# Actors and Activities

### Actors represent People, Video Channels, Podcasts

![Alt text](image-3.png)

### Activities represent Posts, Videos, Audio

![Alt text](image-4.png)

---

# 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: ![h:80](image-5.png)
- 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
<!-- _footer: all that implement it -->
- takes much load of the server
---
# 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