Conversations
This document supercedes "Conversation Containers".
An Introduction to providing and interacting with Conversations in ActivityPub
Definitions:
Conversation
- Activities sharing a "context" element AND a "target" element AND where (context == target).
Root
- An ActivityPub object with no "inReplyTo" field.
Conversation Owner
- The 'actor' that
Adds the Root object to the Conversation. MAY also be discovered through de-referencing
(context || target)->attributedTo.
Descendants
- An ActivityPub object containing an "inReplyTo" field and is either a Conversation OR at mimimum contains an identical "context" with the Root object.
Participant:
- Anybody who plays by the rules when encountering a Conversation.
The rules:
- All associated objects and their activity wrappers SHOULD be signed with FEP-8b32 Object Proofs
- The Conversation Owner SHOULD be the sole
torecipient of replies generated by any Descendant in a Conversation. - Descendants SHOULD NOT generate additional deliveries to "mentioned" actors or any other recipients when replying to a Conversation.
- Descendants SHOULD quietly ignore any Descendant object that was not sent by the Conversation Owner via an
AddorRemoveof that object to the Conversation target OR is a locally generated activity which is being senttothe Conversation Owner for the purpose of requesting inclusion in the Conversation. - The Conversation Owner MAY accept activities of any type from any Descendants and MAY
Addthem to the Conversation. ThisAddactivity wraps the incoming signed activity as its object and this SHOULD be relayed to all Participants through unwrapping the embedded object after verification. The Conversation Owner also SHOULD send an associatedRemoveif the object is ever removed from the Conversation. - Participants MIGHT WANT to ensure their same-origin policy implementation allows the import of embedded third-party signed objects via Adding to Collections with different owners.