FEP-efda: Followable objects

Yes, that’s correct; to be precise, I meant to say as decided by whoever is managing the inbox discovered through crawling attributedTo. Usually this is only 1 level higher and the object is an actor.

As for implementer precedent, there is a broader general precedent for checking attributedTo if the current object doesn’t directly have an inbox: Like and Announce! These two activities uncontroversially pass through the attributedTo property to find an inbox and deliver there. It’s reasonable to invert this logic and say “it is possible to Like an actor directly”, i.e. make an actor the object of a Like activity. Would anyone argue that only non-actor objects can be liked? In the case I’m describing, you would usually check attributedTo, but you don’t need to do this because an inbox is directly present, and probably there isn’t even an attributedTo present! Overly strict dogmatic thinking would have you believe it is impossible to Like an actor because actors are distinct from objects. Of course, this isn’t true, because actors are Objects, and any Object can be an actor.

A larger observation here is that the notion of an “actor” here is not useful at all. Ultimately we should concern ourselves with trying to describe resources and behaviors. None of the behaviors in ActivityPub depend on anything except the activity type and the corresponding special collection it manipulates. For the most part, the behaviors are all isomorphic wrt Follow/Like/Announce and followers/likes/shares. The sole difference is that the Follow flow is defined such that you add the Activity.actor instead of the Activity to the collection, similar to how a Like.object might get added to your own liked collection.

1 Like

Before:

  • The object MUST have a followers collection present.

After:

  • The object SHOULD have a followers collection present. (If it does not, then it is unknown whether it is followable.)
1 Like