activitypub icon indicating copy to clipboard operation
activitypub copied to clipboard

Disambiguate usage of `attributedTo`

Open trwnh opened this issue 1 year ago • 4 comments

AP 6.2 Create Activity has this:

When a Create activity is posted, the actor of the activity SHOULD be copied onto the object's attributedTo field.

throughout examples used in the activitypub spec, attributedTo is used fairly consistently to signal attribution in the sense of who Created an object, or perhaps somewhat in the sense of who authored an object.

however, the definition of attributedTo in AS2-Vocab is circular: https://www.w3.org/TR/activitystreams-vocabulary/#dfn-attributedto

Identifies one or more entities to which this object is attributed. The attributed entities might not be Actors. For instance, an object might be attributed to the completion of another activity.

and oxford defines "attribute"/"attribution" as:

regard something as being caused by (someone or something).

ascribe a work or remark to (a particular author, artist, or speaker)

so there is room left open for the following use cases in theory but not in practice:

  • saying that a Collection is attributedTo a non-actor object, e.g. an object's likes Collection may be attributedTo to that object itself, or it may be attributedTo no one (signalling a server-managed collection?), or it may be attributedTo the object's attributedTo, and so on.
  • saying that an object is attributedTo the Create activity that created it, instead of or in addition to the Create activity's actor
  • saying that an Activity is attributedTo another activity that caused or resulted in the current activity. (FEP-0391 currently uses this as a mechanism, in combination with result)
  • saying any of the above, but with multiple values

more generally, there are a lot of potential meanings for "attribution" that could be spun off into their own more appropriate properties. even in the sense of authorship, we could use something like dublin core's creator or schema.org's author to be more precise; we can also use these to declare multiple-authorship while not breaking existing assumptions of a single "owner" (where "ownership" is in the sense described in https://w3id.org/fep/c7d3 as a formalization of the current practices on the fediverse).

  • ascription/authorship
  • ownership
  • causality/results

trwnh avatar Aug 30 '24 16:08 trwnh

This issue has been mentioned on SocialHub. There might be relevant details there:

https://socialhub.activitypub.rocks/t/fep-c7d3-ownership/4292/36

ap-socialhub avatar Aug 31 '24 22:08 ap-socialhub

This was also mentioned in this SocialHub thread to be able to keep the instance actor as the Actor of the Flag activity, but the Flag still has an opaque identifier from the origin server that identifies the reporter without surfacing the identify specifically.

This use case specifically might be something best suited to the Moderation, Trust & Safety Taskforce

ThisIsMissEm avatar Sep 06 '24 18:09 ThisIsMissEm

the Flag still has an opaque identifier from the origin server that identifies the reporter without surfacing the identify specifically.

for that use case i think attributedTo is inappropriate since actor is already a subproperty of attributedTo. the solution that makes more sense in this case is to use a proxy actor. there's no reason it has to be a singular "instance actor". it could be an anonymized actor that maps to that user who filed the report. activitypub does not mandate a "1 actor per user" mapping, or any other mapping between actors and users. i think piefed for example is using proxy actors to anonymize upvotes/downvotes via Like/Dislike activities: https://socialhub.activitypub.rocks/t/anonymous-likes-dislikes-or-other-activities-via-proxy-user/4472

trwnh avatar Sep 06 '24 18:09 trwnh

I agree with trwnh that the proxy actor solution is the best approach for Flag, I'm not a fan of making another property here.

On Fri, Sep 6, 2024, 11:44 AM a @.***> wrote:

the Flag still has an opaque identifier from the origin server that identifies the reporter without surfacing the identify specifically.

for that use case i think attributedTo is inappropriate since actor is already a subproperty of attributedTo. the solution that makes more sense in this case is to use a proxy actor. there's no reason it has to be a singular "instance actor". it could be an anonymized actor that maps to that user who filed the report. activitypub does not mandate a "1 actor per user" mapping, or any other mapping between actors and users. i think piefed for example is using proxy actors to anonymize upvotes/downvotes via Like/Dislike activities: https://socialhub.activitypub.rocks/t/anonymous-likes-dislikes-or-other-activities-via-proxy-user/4472

— Reply to this email directly, view it on GitHub https://github.com/w3c/activitypub/issues/467#issuecomment-2334626262, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABZCV5CAVV5AUQTBRIDJCTZVHZYRAVCNFSM6AAAAABNMZ32LKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZUGYZDMMRWGI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

nightpool avatar Sep 06 '24 18:09 nightpool