@cwebber this seems like it implies a test case. i.e. I want to write a test case for my implementation for this situation, ensure it fails, and then write code to make it pass. So can we blow this up into an example exchange of messages?

Let

  • A - Alyssa
  • B - Ben (hey! me!)
  • F1 - Follower 1 of Alyssa

Then:

Alyssa makes a post about her having successfully presented a paper at a conference and sends it to her followers collection

  1. A -> B:
    {
    "id": "https://bengo.is/activities/alyssa-presented-a-paper", 
    "type": Create",
    "actor": "https://bengo.is/ficticious-people/alyssa",
    "object": { "type": "Post", "content": "I presented a paper last week at a conference" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/ben"
    ]
    }
    

Ben replies to Alyssa's message congratulating her and includes her followers collection on the recipients.

  1. B -> A:
    {
    "type": Create",
    "id": "https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper", 
    "inReplyTo": "https://bengo.is/activities/alyssa-presented-a-paper",
    "actor": "https://bengo.is/ficticious-people/ben",
    "object": { "type": "Post", "content": "Cool story" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/alyssa"]
    }
    

However, Ben has no access to see the members of Alyssa's followers collection, so his server does not forward his messages to their inbox.

  1. B -> F1

ben cannot deliver to https://bengo.is/ficticious-people/alyssa/followers/, only to https://bengo.is/ficticious-people/alyssa - F1 never see's Ben's response

Without the following mechanism, if Alyssa were then to reply to Ben:

  1. A -> B
    {
    "type": Create",
    "id": "https://bengo.is/activities/alyssa-replies-to-ben-replies-to-alyssa-presented-a-paper", 
    "inReplyTo": "https://bengo.is/activities/ben-replies-to-alyssa-presented-a-paper",
    "actor": "https://bengo.is/ficticious-people/alyssa",
    "object": { "type": "Post", "content": "That's pretty terse, ben. use your words" },
    "cc": [
     "https://bengo.is/ficticious-people/alyssa/followers/",
     "https://bengo.is/ficticious-people/ben"]
    }
    

her followers would see Alyssa replying to Ben without having ever seen Ben interacting. This would be very confusing!

  1. F1: "WTF?"

Back to bengo:

  1. Is the above exchange accurate wrt informing a test case? That is my main concern.
  2. At the WTF point above, couldn't F1 just go fetch B's reply activity by URL? This would leave A out of the decision of whether B wants to share with F1, which seems like a good idea. Why inbox forward if F1 could just fetch from B? This will help me understand inbox forwarding and explain to others.