w3c / activitypub

http://w3c.github.io/activitypub/
Other
1.24k stars 78 forks source link

Relation between Actors and Users of servers is undefined #260

Closed yvolk closed 7 years ago

yvolk commented 7 years ago

Contemplating on correct implementation of a data model, corresponding to the #ActivityPub specification, I started to realize that current version of the document https://www.w3.org/TR/activitypub has a gap/confusion of two different notions: Person (one of Actor types, see https://www.w3.org/TR/activitystreams-vocabulary/#dfn-person ) and a User of a server (quote from ActivityPub spec: "users are represented as "actors" here") Actually these are very different notions: a Person may be represented as more than one User, on different servers. And a User may represent not a Person, but e.g. an Organization.

The #ActivityPub spec's problem is not in that simplistic phrase "users are represented as actors here". The problem is that there is NO technical description of the whole domain model layer: relation between Actors (e.g. Person) and Users of servers. Current version will be interpreted as having one-to-one relation between the two different kinds of entities, and that is incorrect

cwebber commented 7 years ago

Great suggestion @rhiaro! Here's the change I made:

modified   index.html
@@ -144,8 +144,8 @@
       </p>

       <p>
-        In ActivityPub, users from the real world are represented by
-        "<a href="#actors">actors</a>". 
+        In ActivityPub, accounts (including those of real-world users, bots,
+        and other automated processes) are represented by "<a href="#actors">actors</a>". 
         Every Actor has:
       </p>

And hey look! I clarified there that actors are accounts :)

rhiaro commented 7 years ago

I expanded on this further: https://github.com/w3c/activitypub/commit/c038f72b8bdee2a78fe68ac884a4935d38b79f92

cwebber commented 7 years ago

That looks really good to me!

cwebber commented 7 years ago

@yvolk I think between the last two commits mentioned in this issue we've addressly discussed the relationship between actors and accounts. Does this help enough for you in AP core? (We always have the SocialCG to take on further modeling work outside of the core document.)

cwebber commented 7 years ago
<eprodrom>  RESOLVED: Resolve issue #260 as having completed relevant changes
           to ActivityPub itself, and move additional modeling decisions to  
           SocialCG
cwebber commented 7 years ago

Hey @yvolk! So we talked about it on the WG call and we think we've done as much as we can do directly in ActivityPub, but agree there is more accounts modeling to be done still (especially in areas like the standard accounts settings and managements work). We'd like to move the remainder of that modeling to the SocialCG... would you like to help guide some of that there?

In the meanwhile I hope the recent changes @rhiaro and I made to the spec helped resolve some of the concerns you had about the relationship between users and accounts being defined? Do you feel that brought some of the clarity you were hoping for?

yvolk commented 7 years ago

@rhiaro @cwebber Please give me time to review recent changes and propose additional, if needed. I plan to work on this tomorrow.

yvolk commented 7 years ago
  1. Minimal changes to the Overview section, which I made in PR #268, should allow us and other readers/implementers to have common vocabulary in their future discussions.

  2. Additional changes needed (I didn't include them in this PR in order to focus on the main thing): Several replacements of users to Actors / accounts (depending on a context), where the term "user" doesn't mean "real-world users, bots, and other automated processes".

cwebber commented 7 years ago

Hey @yvolk, I'm happy with the changes except I wonder if we can tweak a few words... see https://github.com/w3c/activitypub/pull/268/files#r148635139

What do you think?

yvolk commented 7 years ago

@cwebber @nightpool The words "In this version of ActivityPub each account corresponds to exactly one actor" explain, why in the following document there is no separate account entity with its attributes (URLs etc.), specific to the particular server (on which the account is created), but those attributes appear inside the Actor. This means one-to-one relation between them. I agree that words "In this version of ActivityPub" may be too promising a concrete way of the specification development :-), so let's drop them: I did this in my update to the PR #268

Why include the line, "an account corresponds to exactly one actor"? That's needlessly and incredibly restrictive, preventing any kind of Tumblr-like "side blog" setup or any kind of company group actor, like tweetdecks "authorized account" feature. Accounts are completely out of scope for activitypub anyway. I'm fine including more examples of actors but any language beyond that should not be introduced.

@nightpool Thank you for your comment. Please read this thread: it's all about answers to these questions! It took us a month to come to understanding of the terminology to use in our discussion.

The "Overview" section sets a "stage" for a reader, telling him/her a story in the words that the reader presumably knows. The term "account" does have place in that story, because this is exactly how users actually call / know it: we all create account on a server before we are authorized to post anything via the server... So "account" is existing notion in the domain. It may be out of scope of "a formal protocol definition..." (as we see "in this version of ActivityPub" :-) ) but it cannot be out of scope of the document, which connects real-life cases with the formal specification.

nightpool commented 7 years ago

I read that whole thread both as it was happening and again before responding to this issue. I disagree with this changes for reasons stated over and over again in that thread—"accounts", like authentication or UI, is not something activitypub can or should model in any way shape or form.

nightpool commented 7 years ago

because this is exactly how users actually call / know it: we all create account on a server before we are authorized to post anything via the server

on your server maybe. What if I want all users to be able to post to any actor, like a decentralized version of 4chan?

yvolk commented 7 years ago

because this is exactly how users actually call / know it: we all create account on a server before we are authorized to post anything via the server

on your server maybe. What if I want all users to be able to post to any actor, like a decentralized version of 4chan?

Account is needed at the point, where the message is introduced to the the "Social network" by some external client. The message may be addressed to any actor, no matter on which server that actor's account resides. At least the word "account" doesn't restrict us in addressing a message to actors. On the contrary, it helps us to express actual actions: tell user stories.

nightpool commented 7 years ago

User stories having to do with accounts are explicitly outside of the scope of activitypub though, so I'm having trouble understanding your point. (signing up for an account, authenticating, etc. etc.)

And none of this even begins to addresses the problematic implications of "exactly one account per actor" On Fri, Nov 3, 2017 at 2:03 AM Yuri Volkov notifications@github.com wrote:

because this is exactly how users actually call / know it: we all create account on a server before we are authorized to post anything via the server

on your server maybe. What if I want all users to be able to post to any actor, like a decentralized version of 4chan?

Account is needed at the point, where the message is introduced to the the "Social network" by some external client. The message may be addressed to any actor, no matter on which server that actor's account resides. The word "account" doesn't restrict us. On the contrary, it helps us to express actual actions: tell user stories.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/w3c/activitypub/issues/260#issuecomment-341627980, or mute the thread https://github.com/notifications/unsubscribe-auth/AAORV72SBsiyGUPkQDrQ_3XTKYfVvG2Nks5syqy7gaJpZM4PoShQ .

yvolk commented 7 years ago

User stories having to do with accounts are explicitly outside of the scope of activitypub though

The overview section already has a user story, which includes "account". And "outside of the scope" is not a dogma :-) In the new revision the story is: "A client to server protocol (so users, including real-world users, bots, and other automated processes, can communicate with ActivityPub using their accounts on servers, from a phone or desktop or web application or whatever)"

And none of this even begins to addresses the problematic implications of "exactly one account per actor"

In the current text of ActivityPub, account-to-actor relation is "close" to the point that it may seem that account is actor, so the phrase "an account corresponds to exactly one actor" doesn't change specification, but changes a view / conceptual understanding of current specification and provides common ground for future discussions.

yvolk commented 7 years ago

Hi @cwebber @rhiaro @nightpool @jaywink, I updated the #268 PR another time:

  1. Refined statement on account to actor relation (in the Overview). So now the whole phrase in the Overview is:

In ActivityPub, a user is represented by "actors" via the user's accounts on servers. User's accounts on different servers correspond to different actors. Every Actor has:

  1. Several replacements of "users" to "actors" (and visa versa), where the term "user" doesn't mean "real-world users, bots, and other automated processes".
cwebber commented 7 years ago

Okay! That last PR looks really good! I also think it takes care of @nightpool's concern about confusing users about whether they can have side-accounts or not. I'm merging it!

Thanks for your work on this @yvolk (and thanks for your input @rhiaro and @nightpool !)