fedi-pres/fedi-slide.md
2023-06-19 09:40:24 +02:00

280 lines
No EOL
7.8 KiB
Markdown

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