Skip Navigation

How do the different federated software interact with each other?

Hello everyone.
I am relatively new here on Lemmy, and the Fediverse, and there is still a lot I am trying to learn.
I think I understand the general theory of how the different instances and communities work here on Lemmy, but I'm struggling to understand how the different federated software interacts with each other.
For example, I understand that it is possible to follow a community, commenting on its posts, or a user subscribed to Lemmy even from Mastodon. Similarly, it is possible to follow an author on Write.as, again through Mastodon.
What I wanted to understand is what software in the Fediverse interacts with each other, how, and how do you get them to interact.
I hope someone can help me better understand how things work, as I find the idea of the Fediverse absolutely fascinating, a real breath of fresh air in the modern Internet landscape.

15
15 comments
  • Every user, post, community, etc. on each of these services is represented as an ActivityPub object. Let's take the example of following your Lemmy user from Mastodon. I can search for @[email protected] in Mastodon and in the background my Mastodon instance will issue the following WebFinger request to lemmy.ml: https://lemmy.ml/.well-known/webfinger?resource=acct:[email protected]. This will return the following JSON: -

    {
      "subject": "acct:[email protected]",
      "links": [
        {
          "rel": "http://webfinger.net/rel/profile-page",
          "type": "text/html",
          "href": "https://lemmy.ml/u/Gohos"
        },
        {
          "rel": "self",
          "type": "application/activity+json",
          "href": "https://lemmy.ml/u/Gohos",
          "properties": {
            "https://www.w3.org/ns/activitystreams#type": "Person"
          }
        }
      ]
    }
    

    From here I can request the application/activity+json URL at https://lemmy.ml/u/Gohos and if I request JSON I get: -

    {
      "@context": [
        "https://www.w3.org/ns/activitystreams",
        "https://w3id.org/security/v1",
        {
          "lemmy": "https://join-lemmy.org/ns#",
          "litepub": "http://litepub.social/ns#",
          "pt": "https://joinpeertube.org/ns#",
          "sc": "http://schema.org/",
          "ChatMessage": "litepub:ChatMessage",
          "commentsEnabled": "pt:commentsEnabled",
          "sensitive": "as:sensitive",
          "matrixUserId": "lemmy:matrixUserId",
          "postingRestrictedToMods": "lemmy:postingRestrictedToMods",
          "removeData": "lemmy:removeData",
          "stickied": "lemmy:stickied",
          "moderators": {
            "@type": "@id",
            "@id": "lemmy:moderators"
          },
          "expires": "as:endTime",
          "distinguished": "lemmy:distinguished",
          "language": "sc:inLanguage",
          "identifier": "sc:identifier"
        }
      ],
      "type": "Person",
      "id": "https://lemmy.ml/u/Gohos",
      "preferredUsername": "Gohos",
      "inbox": "https://lemmy.ml/u/Gohos/inbox",
      "outbox": "https://lemmy.ml/u/Gohos/outbox",
      "publicKey": {
        "id": "https://lemmy.ml/u/Gohos#main-key",
        "owner": "https://lemmy.ml/u/Gohos",
        "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwDc9TbmcvR/eRx0zuXl5\nqUu8vwcU3K1/70BqLdae/HtbjqXoHbVUI3exSVOTLVmPQ4oHjf6Lq5axyRRwihTh\nbDgWYSBCqZ07L6VrgXVg2APCkFpX32XlbFbbMQDXf+kodj6YrzwelXEJ03eTDKaa\nuFkFt0Uelu1k0AZVydGYT3U2iZ0jNGvpUMWQycTJ/k0r8n61JLuEMkvkVlH4ZDGb\nGTjwjLRds/zawe8FAK/Grn+AW/UTmW/1kBLcqhkeRYzWhyrVy+/f9jf03s0rW92w\n8PWM02AAE9edIpnK2XgElfkVWJenQzw7WDp045XPHMlUh5iizAJGcPAzdeEVNLq8\nGQIDAQAB\n-----END PUBLIC KEY-----\n"
      },
      "endpoints": {
        "sharedInbox": "https://lemmy.ml/inbox"
      },
      "published": "2023-06-03T17:30:16.990908+00:00"
    }
    

    This includes two important properties: inbox and outbox. Using ActivityPub I now know I can send you a message by POSTing a request to your inbox and I can fetch posts, comments, etc. you've made via your outbox.

    Your public key is also included. This is how, if you sent me a message, I can verify that the message actually came from you.

    That's a very brief overview but I hope that helps!

  • ActivityPub. It's a protocol just like SMTP for email. It allows these different platforms you mentioned to interact with each other. They all together form the fediverse.

  • All platforms on the fediverse interact because they are part of the same protocol, ActivityPub. (While there are more federated and decentralised protocols, "Fediverse" refers to ActivityPub based social network)

    Other federated and/or decentralised platforms have other protocols, for example Diaspora* which has its own protocol, also supported by Hubzilla (which main protocol is Zot and also supports AP), Friendica (also AP and Ostatus) and SocialHome. Or Ostatus (GNU Social, Pleroma (also AP), and Matrix (Matrix)

    A social media can interact with other social media that share the same protocol.

    so Friendica can interact with Diaspora, Lemmy and GNU social, because it supports Diapora*, AP and OStatus, but the other three, being mono-protocol cannot interact with each other.

  • I tried to summarize a bit of the user experience of interacting across the family of ActivityPub apps here: https://lemmy.world/comment/37121

    Quoting for convenience:

    From Mastodon…

    • A Lemmy community looks like a mastodon user. You can post to the community by at-mentioning the user. The first line of the toot becomes the post name, the rest of the toot becomes the post body. If you ever see posts with the title @communityname, you can bet that’s a mastodon user who didn’t format their toot in a way that maximizes readability on Lemmy.
    • Existing posts from Lemmy look like toot threads in Mastodon, with each comment as a toot. You can reply to a comment by replying to the toot. Again, if you see a comment beginning with the username being replied to, it’s a decent bet that reply is from a mastodon user.

    From kbin, Lemmy communities look like magazines, I think… and behave pretty much like communities.

    Other apps may interoperate differently, or may just feel a bit broken depending on the specifics of how it uses ActivityPub compared to Lemmy.

    In short, you kind of just have to try stuff and see what works. Cross-app interactions might be very useful and convenient or they might be very confusing and broken.

  • Feel like a lot of answers are getting really technical here, which is not what you're asking for.

    Basically each platform has many of the same concepts, being things like users, groups, likes, boosts, posts, replies, and so on. Then, each platform interacts with those things in a certain way.

    So for example, you could search my handle @[email protected] on Mastodon, then any sort of post I make on Lemmy will be shown on your feed as if I was posting on Mastodon. Comments are considered "replies", so wouldn't show up directly, but do show up on the profile page under replies.

    You can also follow users on other platforms on Mastodon, put their handle into search and you can follow them the same way, so a user posting something on Pixelfed will appear in your Mastodon feed, and a user posting something on PeerTube will appear as a Mastodon post in your feed.

    Other platforms are similar to Mastodon, such as Misskey and Pleroma, and they work as you'd expect as they're another take on the microblog format. Just follow people and post.

    Lemmy has somewhat bad interaction with non-Lemmy platforms, only really working well with Kbin, and with limited interaction with Mastodon. However the concept is mostly the same: On Mastodon, users can mention the community (which is a group technically) and then Lemmy will pick up the post through the mention and post it to the group.

    So for example, you write something like:

    @[email protected]

    Hello world!

    This is a test post on Lemmy

    And it will show up as a post on Lemmy in the Fediverse community on lemmy.ml with the title Hello world!, with the rest being the post's content. Can also put a link, but I'm not 100% on the syntax since I never really looked into it.

    As for posting on Mastodon from Lemmy - this is currently not possible, nor is following any Mastodon user, since right now Lemmy only follows groups.

    There's a lot more platforms out there and they all interact with different ones in different ways, you just kind of have to experiment! The most important thing though is that you have users you can follow (on most platforms) and things you can post, which will display on all platforms where people are following you.

15 comments