activitypub
activitypub copied to clipboard
Disambiguate usage of `attributedTo`
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
attributedToa non-actor object, e.g. an object'slikesCollection may beattributedToto that object itself, or it may beattributedTono one (signalling a server-managed collection?), or it may beattributedTothe object'sattributedTo, and so on. - saying that an object is
attributedTothe Create activity that created it, instead of or in addition to the Create activity's actor - saying that an Activity is
attributedToanother activity that caused or resulted in the current activity. (FEP-0391 currently uses this as a mechanism, in combination withresult) - 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
This issue has been mentioned on SocialHub. There might be relevant details there:
https://socialhub.activitypub.rocks/t/fep-c7d3-ownership/4292/36
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
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
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: @.***>