Minutes from 2 May 2024 WG Meeting

@mikedev My mistake, FEP-400e does, and I was under the impression Conversation Containers did as well. https://w3id.org/fep/400e#using-target-in-objects

I had another look at https://codeberg.org/streams/streams/src/branch/release/doc/develop/en/Containers.mc and my only nitpick is that the initial Create would make more semantic sense as a dual-typed ["Create", "Add"]. With that said... I understand why you didn't do it that way.

Also I still think that context+target is redundant since they point to the same collection. But again, that's the price of compatibility.

The Activitystreams standard doesnt mention that. And it makes a lot of sense for Lemmy, because the comments are a major part of it.

@julian ^ How it works in NodeBB? Do you authenticate wrapped activities?

@grishka @mikedev

@silverpill@mitra.social said in Minutes from 2 May 2024 WG Meeting:

Do you authenticate wrapped activities?

Do you mean something like a Announce(Note)? If it's Announce(Create(Note)), I am pretty sure NodeBB doesn't handle that yet, so they're dropped.

But for the former... on the way in, if object is anything other than a uri, we check it's origin. If it matches the actor, then we assume validity. Otherwise we retrieve the object anew from the source.

We don't currently support integrity proofs (8b32) or actor tokens (db0e) yet, so if the object cannot be retrieved, then the entire activity is dropped as unprocessable.

@silverpill@mitra.social specifically for NodeBB, we don't handle non-public content yet, so we've neatly sidestepped this issue temporarily 🙂

@julian Makes sense. Accept if origin is the same, otherwise retrieve from source. I think Announce(Create(Note)) and other FEP-1b12 activities should be processed in the same way:

https://socialhub.activitypub.rocks/t/fep-1b12-group-federation/2724/68

@silverpill@mitra.social is the sending of Announce(Create(Note)) an implementation quirk, or is it explicitly defined in an FEP?

My assumption is that you announce Likes and Notes, but I guess there's theoretically nothing stopping someone from Announcing that someone Liked your Announce of a Creation of a Note — a Announce(Like(Announce(Create(Note))))

... but... yikes.

1 Like

Yup! You can wrap that onion as big as you’d like. Nothing stopping you except for convention. It’s like how people on Twitter will sometimes quote tweet each other in a really long chain.

1 Like

@trwnh@socialhub.activitypub.rocks said in Minutes from 2 May 2024 WG Meeting:

Yup! You can wrap that onion as big as you'd like. Nothing stopping you except for convention.

I'm having a tough time figuring out in my head how my backend is supposed to handle receipt of an activity with n-layers. Just the thought of each layer of said onion having their own side-effects is causing my brain to stop working.

Perhaps this is a scenario where each object having an ID would be helpful?

Contrived e.g. Announce(Like(Announce(Create(Note)))) might have ids e > d > c > b > a, but if my backend has already processed a, b, and c, then I only have to consider d and e?

Yeah, id helps. it actually wouldn’t be practically possible without ids.

Thats how FEP-1b12 works, its necessary if you want to federate activities such as voting, deletions or mod actions and not only post creations. But Lemmy doesnt support arbitrarily wrapped activities, only specific hardcoded ones like Announce/Create/Note, Announce/Like or Announce/Delete.