Hello everyone,
I've only begone my true journey into the Fediverse last week, despite being part of Mastodon well before that. What I learned and am learning coincidentally covers a lot of questions and uncertainties that I see all over the Fediverse. So I'll share my experience and path towards understanding federation. Hopefully many people will read it and grow in understanding this crucial technology and if you personally have something to add I would be delighted to hear it!
First off you may want to head over to the linked repository and install the package, otherwise you can of course follow these instructions using curl or any other commandline tool that allows you to make raw requests. (You will simply need to provide the header: "Accept": "application/activity+json".)
Now, what does all of this actually do? Let's start with a very basic example and simply click on the Load Button.
The first thing you will now see is
OrderedCollectionPage:https://mastodon.social/users/JustusWingert/outbox?page=true
Congratulations! This is your first #fediverse object you looked at via #activitypub! Now, uh, what is it? Actually it is simply the type of the object we accessed and its id. Id? You may ask, because that looks suspiciously like a url, doesn't it? Well, the reason for that is, that it is a URL. As a matter of fact, any persistent object in the fediverse is expected to have a unique id, helping us to identify everything. And that unique ID is the URL required to access that very object. Your useraccount, the list of your followers, your messages, even communities here on #lemmy, everything has an id. The thing you are looking at right now is the first page of my outbox on Mastodon.
You don't only see an OrderedCollectionPage, but also several Announce objects that refer to individual toots I made.
If you look closer you will notice that UFO has printed several URLs on your screen alongside some attribute names. Almost all the way at the top of the result you will find a label named "Actor", that is what #activitypub calls the person responsible for the Object you are looking at. In case of Announce that is the user who created the new object being announced.
If you click on Actor, UFO will automatically load that endpoint using activitypub. The result of that request is a Person object and you will also see three additional URLs: outbox, following and followers. In this case the outbox is located at https://mastodon.social/users/JustusWingert/outbox
In the fediverse we all have our own outbox, this is how we communicate our thoughts to the rest of the world. If you click on it, you will then see the actual outbox, which is something called an OrderedCollection. These come in several different flavors we will explore in the future, but in the case of a mastodon user outbox all we actually get is two IDs pointing us to the first and the last page of our outbox. This functions pretty much like a book, in order to look at the page you simply click on the link and UFO will load it.
Recognize where we are? Yup, we have made a loop and are back where we started. But that's not the only path you can now take! You are now able to use any endpoint with an outbox in order to explore what they are doing and who they are talking with. And then you can look further who those people in turn are talking with, and so on, and so forth.
I hope you enjoyed these first steps, and I'll be around and make future updates. There's a lot to explore! And we haven't even begun looking at how individual Fediverse Servers talk with each other!
Have a nice day! Justus
That's pretty cool! As someone who's been toying with the idea of tinkering with the fediverse programatically, it looks super useful as a user friendly debugger of sorts.