Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Section 7 S2S describes delivering activities to non-addressed actors? #478

Open
trwnh opened this issue Nov 6, 2024 · 9 comments
Open
Labels
Needs errata We need to add errata for this Needs Group Input/Decision Needs Primer Page Needs a page in the ActivityPub primer Next version Normative change, requires new version of spec

Comments

@trwnh
Copy link

trwnh commented Nov 6, 2024

In order to propagate updates throughout the social graph, Activities are sent to the appropriate recipients. First, these recipients are determined through following the appropriate links between objects until you reach an actor, and then the Activity is inserted into the actor's inbox (delivery). This allows recipient servers to:

  • conduct any side effects related to the Activity (for example, notification that an actor has liked an object is used to update the object's like count)
  • deliver the Activity to recipients of the original object, to ensure updates are propagated to the whole social graph (see inbox delivery).

as written, this implies that the activity will be delivered or distributed to actors who are not addressed on the activity, but are instead addressed on "the original object", which is a worrying concept.

the parenthetical links to the subsection on "inbox forwarding", but even in that case, the forwarding targets still need to be addressed explicitly on the activity.

proposed resolution

errata. this should not be stated in the spec as it is currently stated. if implemented as described, it would be a violation of expected behavior. tangentially, the bit about "following the appropriate links" could also be reworded to just explicitly calling out the addressing properties

In order to propagate updates throughout the social graph, Activities are sent to the appropriate recipients. First, these recipients are determined through following the appropriate links between objects until you reach an actor, These recipients might be determined through following appropriate links between objects until you reach an actor for which the Activity can be considered relevant, and then the Activity is inserted into the actor's inbox (delivery).can be addressed to those actors for (delivery) targeting the actor's inbox. This also allows recipient servers to: conduct any side effects related to the Activity; for example, a notification that an actor has Liked an object is used to update the object's likes collection.

- conduct any side effects related to the Activity (for example, notification that an actor has liked an object is used to update the object's like count)
- deliver the Activity to recipients of the original object, to ensure updates are propagated to the whole social graph (see inbox delivery).

final text for readability:

In order to propagate updates throughout the social graph, Activities are sent to the appropriate recipients. These recipients might be determined through following appropriate links between objects until you reach an actor for which the Activity can be considered relevant, and then the Activity can be addressed to those actors for (delivery) targeting the actor's inbox. This also allows recipient servers to conduct any side effects related to the Activity; for example, a notification that an actor has Liked an object is used to update the object's likes collection.

@TallTed
Copy link
Member

TallTed commented Nov 6, 2024

Small tweaks to that final text...

To propagate updates through the social graph, Activities are sent to the appropriate recipients. These recipients might be determined through following appropriate links between objects until you reach an actor for which the Activity can be considered relevant; the Activity can then be addressed to those actors, targeting each actor's inbox (for delivery). This also allows recipient servers to handle any side effects related to the Activity; for example, a notification that an actor has Liked an object is used to update the object's likes collection.

@evanp
Copy link
Collaborator

evanp commented Nov 15, 2024

I think one of the big problems with this section is the passive voice -- "Activities are sent", "recipients are determined". Changing these to use an active voice makes the responsibility more clear -- "Origin servers send activities" and "Origin servers determine the recipients."

I think we can wordsmith this, taking @trwnh 's text as a basis, and making sure we remove the passive voice to make responsibilities more clear.

@evanp evanp added Needs Primer Page Needs a page in the ActivityPub primer Needs errata We need to add errata for this labels Nov 15, 2024
@evanp
Copy link
Collaborator

evanp commented Nov 15, 2024

I also think this architecture would benefit from a primer page describing how and when and by whom addressees are determined.

@evanp evanp added the Next version Normative change, requires new version of spec label Jan 3, 2025
@trwnh
Copy link
Author

trwnh commented Jan 3, 2025

An option we have is to amend the 2nd bullet point to Distribute the Activity to its recipients and remove the mention of "the original object"

@evanp
Copy link
Collaborator

evanp commented Jan 3, 2025

I think the second bullet point may be a reference to inbox forwarding, since it is linked. If that is the case, it is a clumsy construction, but doesn't seem to be technically incorrect.

@trwnh
Copy link
Author

trwnh commented Jan 3, 2025

At minimum we need to errata the text of the link to match the target of the link. It should not be (inbox delivery), it should be (inbox forwarding)

@trwnh
Copy link
Author

trwnh commented Jan 3, 2025

Before:

deliver the Activity to recipients of the original object, to ensure updates are propagated to the whole social graph (see inbox delivery).

After:

deliver the Activity to recipients that the original server was unable to deliver to, to ensure updates are propagated to the whole social graph (see inbox forwarding).

@evanp
Copy link
Collaborator

evanp commented Jan 17, 2025

If we reduce the effort here to changing from "inbox delivery" to "inbox forwarding", I think it's much easier. I'll add an erratum for that issue. I think we still need to address the larger problem of specifying responsibility for determining recipients, but that may be something we can defer to primer pages or a next version or both.

@evanp
Copy link
Collaborator

evanp commented Jan 17, 2025

Here's the final text of the erratum:

In section 7 "Server to Server Interactions", the link to Section 7.1.2 "Forwarding from Inbox" should be labeled "inbox forwarding".

This dodges a lot of the problems with the imprecise and perhaps confusing text, which may need separate errata or could be better written in a future version.

@evanp evanp added Needs Group Input/Decision Needs errata We need to add errata for this and removed Needs errata We need to add errata for this labels Jan 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Needs errata We need to add errata for this Needs Group Input/Decision Needs Primer Page Needs a page in the ActivityPub primer Next version Normative change, requires new version of spec
Projects
None yet
Development

No branches or pull requests

3 participants