flamingos-cant

An interactive tragedy.

  • 2 Posts
  • 11 Comments
Joined 2 years ago
cake
Cake day: June 12th, 2023

help-circle






  • flamingos-cant@feddit.uktoFediverse@lemmy.world*Permanently Deleted*
    link
    fedilink
    English
    arrow-up
    55
    arrow-down
    1
    ·
    edit-2
    7 days ago

    alice from A makes a post “Hello, world” to B

    Alice can’t make a post to B, but I assume you mean a community on B, let’s call it foo. When Alice makes a post it first goes through A’s local API and creates the local (and canonical) version of Alice’s post. Once A has finished processing Alice’s post, it will create an ActivityPub representation of Alice’s post to send to B.

    ActivityPub is basically a bunch of assumptions laid on top of JSON. An ActivityPub ‘file’ can be divided into broadly 3 types, Object, Activity and actors.[1] These types then have subtypes; for example, both Alice and foo are actors but Alice is a Person while foo is a Group.

    A second important assumption of ActivityPub is the concept of inboxs and outboxs, but, for Lemmy, only inboxs matter. An inbox is just a URL where Lemmy can send activities and it’s something all actors have.

    So when instance A is finished processing Alice’s post, it will turn it into a Page object, wrap that in a Create activity and send it foo’s inbox.

    Round about what the JSON would look like
    {
      "@context": [
        "https://join-lemmy.org/context.json",
        "https://www.w3.org/ns/activitystreams"
      ],
      "actor": "https://a/u/alice",
      "type": "Create",
      "to": ["https://www.w3.org/ns/activitystreams#Public"],
      "cc": ["https://b/c/foo"],
      "id": "https://a/activities/create/19199919009100",
      "object": {
        "type": "Page",
        "id": "https://a/post/1",
        "attributedTo": "https://a/u/alice",
        "to": [
          "https://b/c/foo",
          "https://www.w3.org/ns/activitystreams#Public"
        ],
        "audience": "https://b/c/main",
        "name": "Hello world",
        "attachment": [],
        "sensitive": false,
        "language": {
          "identifier": "en",
          "name": "English"
        },
        "published": "2024-12-29T15:10:51.557399Z"
      }
    }
    

    .

    Now instance B will then receive this and do the same kind of processing A did when Alice created the post via the API. Once it has finished, it will turn the post back into a Page but this time wrap it in an Announce activity. B will then look at all the actors that follow the foo (i.e. are subscribed to it) and send this Announce to all of their inboxs. Assuming a user on instance C follows foo, it will receive this Announce and process it like A and B before it, creating the local version of Alice’s post.

    Edit: I made a small mistake, I said that foo wrapped the Page in an Announce, when it actually wraps the Create in an Announce.


    1. Technically, Activity and actors are themselves objects, but they’re treated differently. There’s also Collection’s which are their own type, but Lemmy doesn’t really utilise them. ↩︎


  • They do, at least, acknowledge this:

    We recognise that this Annual Report for 2023 is arriving later than we had intended. Going forward, we plan to release our Annual Report for 2024 in Q1 of 2025, where we will establish clear and ambitious goals for 2025 and beyond. This adjusted timeline allows us to provide more timely insights and better align our reporting with our ongoing growth and development.