I am currently writing an article about Twitter alternatives and I’m trying to understand well how the Mastodon network works. Can someone confirm the following statements or correct me if I misunderstood something?
So, if I understood well.
Nodes (instances) do not naturally see each other. If I install an instance on a linux computer, I will basically see nothing in my federated timeline. But if I follow just 1 person, my federated timeline will display all the activity that comes from the node that person is registered to, not only the person’s activity.
I can however subscribe my instance to a relay that will automatically connect me to the whole network (all the instances), so my federated timeline will show the global activity of the network.
However, if I join an existing instance (let’s say kiss.xy), I’ll see in my federated timeline the activity from all instances kiss.xy is connected to minus the content that is eventually filtered by the moderation rules. But I unfortunately, I have no way to know what are the connected instances, how much of the network it is and what has been filtered. Also, if I follow someone registered on a specific instance (let’s say butt.xy), I will “impose” to all my instance the addition of the entire butt.xy activity.
Moderation affect local content (my instance) and incoming data from other instances.
Thank you very much in advance for any enlightment.
Nodes (instances) do not naturally see each other. If I install an instance on a linux computer, I will basically see nothing in my federated timeline
This is correct. Mastodon communicates only through users following each other, not server-to-server.
But if I follow just 1 person, my federated timeline will display all the activity that comes from the node that person is registered to, not only the person’s activity.
This is incorrect. The federated timeline is “All users followed by anyone on this instance”. Mastodon is an actor-based network, so there is no concept of “a server’s activity”.
I can however subscribe my instance to a relay that will automatically connect me to the whole network (all the instances),
This is also slightly incorrect—any relay that you connect to will only give you information from the servers that connect to it. So if you have Server A and server B, and server A subscribes to relay.joinmastodon.org and server B does not subscribe to any relays, server A will not see any posts from server B.
Again, see above. Mastodon is an actor-based network, so the only content you’re “imposing” is the single user from butt.xy that you follow. There is no concept of a “connected” mastodon instance, only users that follow each other.
Let me know if you have any other questions!
Thank you a lot for your answer!
I’ll continue to work on my document and put eventual other questions here
Ok, I have a new set of questions
I was wondering how instances actually communicate. If I understood well, users on an instance only see content from local users (same instance) and followed users on other instances (“All users followed by anyone on this instance”). So I guess the data is pushed similarly to the gossip method of blockchains: If I post something in kiss.xy it will immediately broadcast my post to all instances that host people who follow me, which is how federation emerges.
The last sentence of this is false “For example, when a person on instance A follows a person on instance B, instances A and B form a federation. They begin communicating with each other and form a network. Posts made on instance B will now appear on the federated timeline of all the users on instance A. (Users can individually remove content from specific instances from their federated timelines if they wish.) Larger instances will have a busier federated timeline because of this.If a user on instance B now follows a person on instance C, C joins the federation with A and B. Every instance already in the federation becomes aware of new instances that form a connection with it.” (source: A non-computer-person’s guide to how Mastodon instances work).
A should not be aware of C in that strict case because A is not followed by B.
This one is very tricky for my mind: Let’s say I follow someone popular on butt.xy, I won’t see all the replies or will I? Will I ever see any of them if i only follow him?
Search for tags or users only returns answers from the federated data.
If I host my own instance, I will host all the local data + everything that is pushed by the federated users + all the external messages by non followers.
Sorry for all theses questions at the same time and thanks again for any effort put into answering to this
Modern instances communicate using the ActivityPub protocol. Your description is correct, although i’m not familiar enough with the bitcoin gossip protocol to say if it’s a good metaphor or not. When users make a post, that post is sent to all of the user’s followers, plus special cases like mentioned users.
Your statement is correct, although I wouldn’t say it is necessarily false to to say that instances A, B, and C form a federated network. Even though the software at A doesn’t know about C (unless, of course, a user from B boosts a post from a user on C, in which case A would have a record of C but not constant communication with it), they’re still part of the same graph, with an edge between A and B, and B and C.
If user B replies to user A, user A’s server will forward that reply to all of user A’s followers as well.
Search for tags and users only return data your instance already knows about through other means—boosts, follows, or replies. The exception for this is searching a fully qualified URL, like
https://cybre.space/@nightpool or a fully qualified address, like
@email@example.com. These are resolved by making a request against the
cybre.space remote server.
I’m not sure exactly what you mean by “external messages by non-followers” but broadly, yes.
Thank you very much for your answers Now I understand way way way better what dictates what you can and cannot see.
May I post the link to my article here when I’m done?