E.g. If I were to share an image of a doggo on lemmy.world and then people from sh.itjust.works upvote it, will it count those upvotes? The answer to this one seems pretty easy to reason that it would be yes.

But what about if i’m on lemmy.world and am subscribed to !awesomecommunity@sh.itjustworks and I see it in my “subscribed” feed? Does this reflect total points across the lemmiverse or will this just show upvotes from lemmy.world?

  • Limeey@lemmy.world
    link
    fedilink
    arrow-up
    28
    ·
    1 year ago

    Due to how federation works, the federated instance needs to accept and process the activity. Each application can define its own “optional” activity properties, but the activitypub specs define mandatory properties and some optional properties for coherence across the fediverse.

    The way lemmy implements this is to use the activitypub-federation-rust library that the lemmy devs built. Through this, activities in Lemmy are sent using HTTP and have a failure retry:

    It is possible that delivery fails because the target instance is temporarily unreachable. In this case the task is scheduled for retry after a certain waiting time. For each task delivery is retried up to 3 times after the initial attempt. The retry intervals are as follows:

    one minute, in case of service restart
    one hour, in case of instance maintenance
    2.5 days, in case of major incident with rebuild from backup

    In the case of votes, the activity is a “like” - some other federated applications understand this and will accept it, but others won’t. For example, peertube does not have a like activity, and I don’t believe they would handle it.

    However votes are shared across instances. When a user “likes” something from another instance, Lemmy will notify that actor (the page) that the activity (a like) was emitted by another actor (you).

    Hope that clarifies things. I’m still learning all this myself so if anyone can contribute or improve my answer, please do!

    • cerevant@lemmy.world
      link
      fedilink
      arrow-up
      9
      ·
      1 year ago

      I think an important take-away from this is that Lemmy pushes changes between instances, it does not synchronize. Instances get out of sync when changes get lost (as you describe) and I don’t think there is a mechanism for the destination to know it it out of sync with its peers.