I'd imagine your best bet is reading through the w3c spec if you want protocol details. I think reading it directly is probably approachable enough for a CS student and should be a good exercise.
Fediverse
A community dedicated to fediverse news and discussion.
Fediverse is a portmanteau of "federation" and "universe".
Getting started on Fediverse;
- What is the fediverse?
- Fediverse Platforms
- How to run your own community
TL;DR, each user is an Actor, which has an inbox for receiving objects and activities, and an outbox for sending them. The objects are essentially structured metadata that various actions can be performed on. When you respond to a status, for example, your Actor is performing a Reply activity and sends out a Note object. Following another Actor, on the other hand, would be your Actor sending another Actor a Follow activity.
This implementor's guide might be helpful to understand some of what's going on underneath the hood: https://socialhub.activitypub.rocks/pub/guide-for-new-activitypub-implementers
Some useful specs can be found here:
- ActivityPub's specs: https://www.w3.org/TR/activitypub/
- ActivityStreams, which Activities and Objects are defined by: https://www.w3.org/TR/activitystreams-core/
Activitypub uses ordinary web protocols like https to make requests between servers. It's all quite simple.
This document is quite detailed: https://www.w3.org/TR/activitypub/
Thanks, it is indeed quite simple. I guess the part that confused me was how lemmy communities are modeled. Apparently, they are just actors of type group and submitting a post is simply sending an activity to the group and its followers. So, the email comparison makes sense after all.
Yeah I think it's beautiful. And because of the simplicity, I think the fediverse will take off and many new apps will come. Probably used by techies in the beginning but as soon as some big company makes something, everyone will start to use it.