New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bot nameplates #7391

Merged
merged 3 commits into from May 7, 2018

Conversation

Projects
None yet
@Gargron
Member

Gargron commented May 6, 2018

  • New profile preference: "This is a bot account" / "Warns people that the account does not represent a person"
  • Display "Bot" badge on public profile and in web UI
  • New "bot" attribute on accounts in REST API
  • Bots marked as "Service" in ActivityPub (outgoing), "Service" and "Application" both understood as bots (incoming)
  • Store actor type in database
@nightpool

LGTM!

@Gargron Gargron merged commit 42cd363 into master May 7, 2018

9 checks passed

ci/circleci: build Your tests passed on CircleCI!
Details
ci/circleci: check-i18n Your tests passed on CircleCI!
Details
ci/circleci: install Your tests passed on CircleCI!
Details
ci/circleci: install-ruby2.4 Your tests passed on CircleCI!
Details
ci/circleci: install-ruby2.5 Your tests passed on CircleCI!
Details
ci/circleci: test-ruby2.4 Your tests passed on CircleCI!
Details
ci/circleci: test-ruby2.5 Your tests passed on CircleCI!
Details
ci/circleci: test-webui Your tests passed on CircleCI!
Details
codeclimate All good!
Details

@Gargron Gargron deleted the feature-bot-nameplates branch May 7, 2018

@Lana-chan

This comment has been minimized.

Lana-chan commented May 7, 2018

is it possible to change "Warns people that the account does not represent a person" to something else, such as "Warns people that the account may be automated"?

some bots are people

@joyeusenoelle

This comment has been minimized.

Contributor

joyeusenoelle commented May 7, 2018

This suggestion also allows ambiguity on the part of Markov ("ebooks") bots, where the bot /does/ represent a person in an abstract sense, but each post isn't necessarily vetted before posting.

@@ -149,6 +150,16 @@ def moved?
moved_to_account_id.present?
end
def bot?
%w(Application Service).include? actor_type

This comment has been minimized.

@SerenadeX

SerenadeX May 15, 2018

@Gargron I am getting an error on this line when I try to load my screen after updating to 2.3.3 and later. Did something need to be changed with it? Is there an environment var that I needed to add?

2018-05-15T16:22:53.185327+00:00 app[web.1]: [767c8eee-10e8-430d-83b3-06a232662066] method=GET path=/ format=*/* controller=HomeController action=index status=500 error='NameError: undefined local variable or method `actor_type' for #<Account:0x0000000004fa7720>' duration=1736.67 view=0.00 db=34.29

This comment has been minimized.

@Gargron

Gargron May 15, 2018

Member

That means you haven't run db:migrate

This comment has been minimized.

@SerenadeX

SerenadeX May 15, 2018

How do I run db:migrate? Is there a guide that explains this?

This comment has been minimized.

@Gargron

Gargron May 15, 2018

Member

Yes, it's in the documentation. Every release also includes upgrade notes explaining how to do this. You should read release notes when upgrading.

This comment has been minimized.

@SerenadeX

SerenadeX May 15, 2018

Sounds good. Thanks for your patience and replies!

@Lana-chan

This comment has been minimized.

Lana-chan commented May 15, 2018

hi any follow-ups on my comment or are we being ignored

@Gargron

This comment has been minimized.

Member

Gargron commented May 15, 2018

A horse_ebooks account may "represent" horse like a senator represents a state, but I think that's a semantic difference. horse_ebooks is not horse. I don't understand your "some bots are people" comment. If you post from the account manually, it's not a bot. If a bot posts, it's a bot. Markov-chain generated accounts are bots. At least that's the distinction I had in mind when I designed this feature. I am not monumentally opposed to the wording "Warns people that the account may be automated" but neither do I see good reasons to go in and change that over again.

@joyeusenoelle

This comment has been minimized.

Contributor

joyeusenoelle commented May 15, 2018

@Gargron If someone else makes the change, are you willing to merge it?

@Lana-chan

This comment has been minimized.

Lana-chan commented May 15, 2018

wow, okay.

@picsi

This comment has been minimized.

picsi commented May 15, 2018

In what sense can a bot be a human? I'm not trying to start anything, but I think I didn't understand the proposal 🤔

@joyeusenoelle

This comment has been minimized.

Contributor

joyeusenoelle commented May 15, 2018

Okay, I'm gonna show my hand a little: as a transhumanist, I object to the implied conflation of "person" and "human". This is a situation where we can afford to be forward-thinking and open-minded without a cost to current functionality and, honestly, without a significant cost in terms of work.

@picsi

This comment has been minimized.

picsi commented May 15, 2018

Ok that's fair

@nightpool

This comment has been minimized.

Collaborator

nightpool commented May 15, 2018

we're not conflating "person" and "human" we're setting up "bot" as a category of non-persons. persons of any type (including simulated or computer-based) are not "automated", because they're sentient. the two categories are non-intersecting.

anyway, if that's your real motivation, you shouldn't argue against it on false "markov" pretenses like you did above :( just come out and say that. sorry for assuming bad faith, my comment was out of line.

@Lana-chan

This comment has been minimized.

Lana-chan commented May 15, 2018

i'm a person and i'm a robot sorry

@Lana-chan

This comment has been minimized.

Lana-chan commented May 15, 2018

i want to use the bot badge and i dont want to be called not a person

@joyeusenoelle

This comment has been minimized.

Contributor

joyeusenoelle commented May 15, 2018

@nightpool I can have more than one reason for supporting a change. In this case I was specifically referring to picsi's question. My argument last week was not "false pretenses", it was a different reason for supporting the change.

@Gargron

This comment has been minimized.

Member

Gargron commented May 15, 2018

i want to use the bot badge and i dont want to be called not a person

The bot badge is not for your use case. Sorry. You can pretend like this feature doesn't exist or misuse it at your own risk. This isn't even about the wording anymore, it's clear that the other wording would have led to a wrong, unexpected use of the feature.

@Lana-chan

This comment has been minimized.

Lana-chan commented May 15, 2018

cool good to know i'm wrong to exist. thanks have fun

@elomatreb

This comment has been minimized.

elomatreb commented May 15, 2018

Hi, just chiming in to say that I also feel that "may exhibit automated behavior" is a much better wording, especially in the face of dual-used accounts.

@mal0ki

This comment has been minimized.

mal0ki commented May 15, 2018

While I see Gargrons point, even if it was poorly worded, I agree that we could make adjustments to the wording on this, it would make it more inclusive, and the change wouldn't hurt anyone.

I also feel that "may exhibit automated behavior" is a much better wording, especially in the face of dual-used accounts.

I feel like this is an extra good point.

@barzamin

This comment has been minimized.

Contributor

barzamin commented May 15, 2018

I strongly agree with @elomatreb. Especially in the case of bots that act on my behalf (cf. np), I would prefer that they are marked as 'may exhibit automated behavior', since that is much closer than 'does not represent a person', semantically, to what's actually going on.

@eq

This comment has been minimized.

eq commented May 15, 2018

i agree with @elomatreb as well

What other changes would be required here? Renaming the badge to say "Auto" or "App"?

@natarii

This comment has been minimized.

natarii commented May 15, 2018

i see no need to change the "bot" badge itself, only the text in preferences

@eq

This comment has been minimized.

eq commented May 15, 2018

alright, makes sense to me then.

@nightpool

This comment has been minimized.

Collaborator

nightpool commented May 15, 2018

cf #7507

@ghost

This comment has been minimized.

ghost commented May 15, 2018

One other tack, thinking on this one a fair bit - what about localization? Does 'Bot' and its potential translations accurately convey the intent behind the tag? I'm personally more with @eq here on using something more accurate like 'Auto' or 'App' (or other suggestions), since 'Bot' is overloaded, and even if we fix the preference text, the connotations are still there ("Was this account flagged 'Bot' because of some kind of administrative review against them?", in the vein of Twitter/Facebook 'bots' that may actually be real people hiding behind a facade for political/other purposes.) In that case, 'Bot' can be unclear.

WRT @Lana-chan , I think their use case really falls more under the custom profile fields in 2.4.0rc1? I will profess, I don't fully follow on that one, purely from a lack of understanding, but I'm getting the feeling that's the overloaded part; another meaning that wasn't intended with this PR, tied to the name?

@trwnh

This comment has been minimized.

Contributor

trwnh commented May 15, 2018

This conversation is pretty confusing because there seem to be multiple definitions of "robot" and "person" used throughout as if they were consistent, when in fact they are not.

From my understanding, the original definition of "bot" provided (per the nameplate) was in reference to automated behavior (news aggregators, rss crossposters, markov chains, etc). In AP parlance, this is like referring to an Application or a Service, rather than a Person. Similarly, it is possible to refer to an Organization or other types, and this is up to the implementation, according to the W3C: https://www.w3.org/TR/activitypub/#actors

NOTE: ActivityPub does not dictate a specific relationship between "users" and Actors; many configurations are possible. There may be multiple human users or organizations controlling an Actor, or likewise one human or organization may control multiple Actors. Similarly, an Actor may represent a piece of software, like a bot, or an automated process. More detailed "user" modelling, for example linking together of Actors which are controlled by the same entity, or allowing one Actor to be presented through multiple alternate profiles or aspects, are at the discretion of the implementation.

Actor types also include Organization and Group. https://www.w3.org/TR/activitystreams-vocabulary/#actor-types

Since the implementation of this PR looks like it's primarily targeted at automated behavior (befitting an Application imo, but this PR uses Service internally), then it makes sense to reword the warning to more clearly reflect the nature of automated content.

However, there also seems to be a subthread of this conversation around the fact that automated behavior may represent a Person in the abstract.

To remove any ambiguity, we could allow people to specify a Profile as one of the 5 types provided by ActivityPub, which would probably add complexity but cover 100% of the cases for which someone might set up a profile. But at the very minimum, we should try to define what exactly each of the 5 types is supposed to represent for Mastodon.

@enkiv2

This comment has been minimized.

enkiv2 commented May 16, 2018

If a mastodon account consists entirely of automated crossposts of a twitter account, and that mastodon account is not owned by the owner of the twitter account, does it get a 'bot' nameplate? What if the mastodon account is owned by the owner of the twitter account?

What about something like RMS's GS account, where it's literally a list of links selected by RMS but posted presumably automatically, without commentary by RMS himself?

There's a lot of meaningful semantic variation on the automation axis, even if we focus entirely on accounts that are never directly posted to by a human manipulating a client. Thus far, we have used a richer set of signifiers to indicate an account's place on this axis -- 'bot' vs 'ebooks' in the name, use of CWs. A boolean is inspecific and unclear, and likely to be used and taken in unintended ways without negotiation -- in other words, it's strictly less useful than the language we already use.

(I do a lot of posting directly from clients, but probably about 60% of my posts are semi-automated -- either posted to several places simultaneously with automatic mutations, or actually generated, as in the case of automatic title fetching for links. If the bot nameplate indicates that no human being is interacting directly with a client, then I don't get one, while if the bot nameplate indicates that many posts are broadcasts rather than parts of public conversation, then it absolutely should. Most people will probably treat the plate as indicating that most posts are the output of markov chains, which is again inaccurate, or that post rate is high, which is true, or consistent, which is false. The most accurate way to describe my account is human + external tools, but that cannot be expressed here.)

I'm not suggesting we should have activitypub-level indications of these more-granular categories. I think that, in the absence of a serious, widespread unwanted-automated-spam problem, we probably should rely upon users developing expressive idiomatic ways of describing levels and types of account automation, and avoid trying to standardize stale categorizations.

(Side note: horse_ebooks is a whole different jar of jam from automation per-se, since it's a person pretending to be a markov chain bot pretending to be a person, shilling intentionally poorly for nonexistent products. It isn't clear, on many levels, whether or not the original horse_ebooks would have been eligiable for or benefitted from an explicit bot indicator. Its function was derived so strongly from the ambiguity that comes from the total nonexistence of any standardized bot-ness indicator that having a standard way to indicate that something is a bot essentially prevents such projects from being meaningful.)

@nightpool

This comment has been minimized.

Collaborator

nightpool commented May 16, 2018

@enkiv2 please see the wording in the followup pull request, and the justifications given there.


re

Its function was derived so strongly from the ambiguity that comes from the total nonexistence of any standardized bot-ness indicator that having a standard way to indicate that something is a bot essentially prevents such projects from being meaningful.

disagree. while all things that have the bot nameplate are presumably bots, i think it's reasonable enough to expect that not everything that doesn't have the bot nameplate isn't a bot. the ambiguity still exists

SerCom-KC added a commit to SerCom-KC/mastodon that referenced this pull request May 21, 2018

SerCom-KC added a commit to SerCom-KC/mastodon that referenced this pull request May 21, 2018

Gargron added a commit that referenced this pull request May 21, 2018

i18n: Update Simplified Chinese translations (#7565)
* i18n: (zh-CN) #7532

* i18n: (zh-CN) #6984

* i18n: (zh-CN) #7391, #7507

* i18n: (zh-CN) #6998

* i18n: (zh-CN) #7074

* i18n: (zh-CN) #7000, #7032, #7131 (#7032, #7040)

* i18n: (zh-CN) #7130, #7188

* i18n: (zh-CN) #6486

* i18n: (zh-CN) #6292

* i18n: (zh-CN) #7347

* i18n: (zh-CN) #6661

* i18n: (zh-CN) #6425

* i18n: (zh-CN) #6597

* i18n: (zh-CN) #6695

* i18n: (zh-CN) #6325

* i18n: (zh-CN) #6460, #7375

* i18n: (zh-CN) #6872

* i18n: (zh-CN) #6818

* i18n: (zh-CN) #7452

* i18n: (zh-CN) #7176

* i18n: (zh-CN) #6460

* i18n: (zh-CN) #7213

* i18n: (zh-CN) #7376

* i18n: (zh-CN) #6556

* i18n: (zh-CN) #6645

* i18n: (zh-CN) #6448

* i18n: (zh-CN) #5303

* i18n: (zh-CN) #7445

* i18n: (zh-CN) Normalization and improvements

* i18n: (zh-CN) #7391

* i18n: (zh-CN) #6627

* i18n: (zh-CN) #6956, #7546

* i18n: (zh-CN) #6636

* i18n: (zh-CN) #6610, #6875

* i18n: (zh-CN) #6887

* i18n: (zh-CN) #4514

* i18n: (zh-CN) #6628

* i18n: (zh-CN) #6771

* i18n: (zh-CN) #6772

* i18n: (zh-CN) #7178

* i18n: (zh-CN) #7521

* i18n: (zh-CN) #6570

* i18n: (zh-CN) #6593

* i18n: (zh-CN) #6423

* i18n: (zh-CN) #6157

* i18n: (zh-CN) #7089

* i18n: (zh-CN) #6733

* i18n: (zh-CN) #7072

* i18n: (zh-CN) #6520

* i18n: (zh-CN) Improvment

* i18n: (zh-CN) #6631

@tootsuite tootsuite deleted a comment from blahed May 29, 2018

@tootsuite tootsuite locked and limited conversation to collaborators May 29, 2018

@tootsuite tootsuite deleted a comment from onomojo May 29, 2018

@tootsuite tootsuite deleted a comment from blahed May 29, 2018

@tootsuite tootsuite deleted a comment from Lana-chan May 29, 2018

@nightpool

This comment has been minimized.

Collaborator

nightpool commented May 29, 2018

Guessing this got linked somewhere. I've deleted some comments that were starting shit and misgendering a community member. The PR is now locked temporarily to prevent anything else from flaring up—this repo isn't your battleground. Go somewhere else.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.