As a new user to all these sites, I’m confused about they interact with each other. For example, on Lemmy, I can view a Mastodon account, but I can’t view that account’s posts. This makes sense, as sorting your home feed by “all” could hypothetically result in your feed getting flooded by popular Mastodon posts.
On the other hand, I understand that Mastodon users can see, reply to Lemmy threads, and subscribe to Lemmy communities. This flow of content makes far more sense than if Lemmy allowed Mastodon posts to be visible.
With all that said, how does Lemmy know to not show Mastodon posts? How does ActivityPub even work? How does ActivityPub understand that certain posts are from certain sites? Aren’t all these sites just different UIs that advertise different servers? I’m not gifted with technical knowledge, but I’m dying to understand how this whole thing works.
On Mastodon, when you follow another user on another instance, your instance will send a request to the other, to be notified of new posts made by that user, as well as posts they’ve boosted. When such a new post arrives, a copy will be created on your instance so it can be displayed without nagging the original instance again for the post’s content and such.
Lemmy is similar of course, since it uses the same underlying protocol (ActivityPub). Think of communities as “special users”. Whenever someone creates a post or reply, the community will boost it, so it ends up on every instance where a user has subscribed to that community.
This part I’m not entirely sure on but I believe it’s how things work: The other way to send messages around other than subscription is obviously to send messages directly. In ActivityPub there’s a field that specifies the recipients of a message. When such a message is created, it is pushed to the instances of the recipients. On Lemmy, the recipient is the community you’re posting to. On Mastodon, the recipients are filled with all the users that you @-mention in the contents of the message. So for a Mastodon user to post to Lemmy, they have to mention the community, which is why you see some posts that contain the community’s handle.
Because you can’t follow / subscribe to users on Lemmy, the posts of Mastodon users that don’t involve Lemmy never end up being “federated”, meaning Lemmy instances don’t get notified of these posts, so they don’t end up being “copied”. This is the same on Mastodon by the way. Unless your instance sends out a request to fetch posts from an unknown user, it doesn’t know about their posts, since nobody so far has cared about them.
This makes sense because if you were to try and store all the content from the fediverse you would need a LOT of storage for little gain. Similarly it would be bad to never store the content and always fetch it, because that would generate a bunch of additional traffic, which especially small instances would suffer from.
To summarize: Lemmy doesn’t display Mastodon posts because it doesn’t have a mechanism to subscribe to those users.
This genuinely helped me understand everything I wanted to know. Thank you tons