Make WordPress Core

Opened 8 years ago

Closed 7 years ago

Last modified 3 weeks ago

#38332 closed enhancement (fixed)

"Cheating" message insults; needs changing

Reported by: electricfeet's profile ElectricFeet Owned by: dd32's profile dd32
Milestone: 4.9.5 Priority: normal
Severity: normal Version: 2.9
Component: General Keywords: has-patch commit fixed-major i18n-change
Focuses: administration Cc:

Description

"Cheating" is regarded as dishonest. Calling someone a cheat is hurtful if the accusation is not true.

I develop with WordPress on my local machine. When I'm working on a WordPress problem I leave all my server and browser sessions open for hours at a time (and overnight), so that I can pick up where I left off.

Once a day, I get the message "Cheating, are we?" (in en-GB; in en-US it's "Cheatin' uh?"), as WordPress automatically logs me out.

It never ceases to annoy me to be unjustly accused of something I am not doing.

I would also bet that only a tiny minority of users are wilfully being dishonest when they get this message. Most will have got there by mistake or -- as in my case -- by WordPress design.

It's a shame that a program that I like and respect treats its users this way. It's also a shame that it doesn't take the opportunity to explain what the message really means (by including, for example, something like "you've been automatically logged off") though I realise that the message may occur in many contexts.

How about at least changing it to something less insulting?

I would propose:

"I'm sorry USERNAME, I'm afraid I can't do that".

This would:

  • Remove the insult;
  • Brighten our days by paying homage to a great film (RIP Stanley Kubrick);
  • Maintain a witty sense about it -- which I'm sure was the original intention with "Cheatin'";
  • Imply humility, as it subtly acknowledges that the refusal may be unreasonable.

Attachments (6)

38332.1.patch (20.1 KB) - added by dmsnell 7 years ago.
Replaces "cheatin" message with already-translated and less hostile wording
38332.diff (21.1 KB) - added by peterwilsoncc 7 years ago.
38332.2.diff (21.1 KB) - added by peterwilsoncc 7 years ago.
38332-49.diff (21.4 KB) - added by peterwilsoncc 7 years ago.
38332.3.diff (22.3 KB) - added by peterwilsoncc 7 years ago.
Revised language
38332-49.2.diff (21.2 KB) - added by peterwilsoncc 7 years ago.

Download all attachments as: .zip

Change History (62)

#1 follow-up: @Presskopp
8 years ago

  • Resolution set to duplicate
  • Status changed from new to closed

Duplicate of #14530.

#2 in reply to: ↑ 1 @ElectricFeet
8 years ago

  • Resolution duplicate deleted
  • Status changed from closed to reopened

Replying to Presskopp:

Duplicate of #14530.

I understand why this might be seen as duplicate, but it's not covered by that ticket.

As stated in that ticket "The immediate goal of [that] ticket was to give context to the Cheatin' message." And that was done and hence the ticket was closed. However, the fix didn't address the other issue in that ticket -- that of the insulting nature of the message -- which is what I am doing here.

The discussion in that ticket that touched on the insulting nature of the message distilled into:

  • It's not a message people see every day;
  • It's part of the culture of WordPress to be jokey/witty.

Unfortunately, it IS now a message people see very often (possibly made worse by the increasing use of the Customizer?) and the new text I proposed does keep the general humour while removing the insult.

Several people in that ticket said they felt the message was

"snarky ... shady ... rude ... confusing ... cheeky/unprofessional ... I received some angry emails ... from users who thought it was either an inappropriate translation or a core bug".

So while that ticket focussed on giving context to the message, this ticket is about finding a way to remove its insulting nature.

#3 @BandonRandon
8 years ago

  • Resolution set to duplicate
  • Status changed from reopened to closed
  • Version changed from 4.6.1 to 2.9

So while that ticket focussed on giving context to the message, this ticket is about finding a way to remove its insulting nature.

I understand that difference however at the same time, I think #14530 addresses both the context and the content. In the end it was decided to keep the "Cheating Uh" message but add context.

For more see these comments:
https://core.trac.wordpress.org/ticket/14530#comment:52
https://core.trac.wordpress.org/ticket/14530#comment:38

What is or isn't offensive is highly subjective and relies on culture, experiences, language, knowledge, etc. For example, your proposal, still relies on culture understanding (which I honestly couldn't name which film or fully understand the joke).

One of the great things is that this message can be changed to my knowledge, by hooking into to wp_die_handler() or editing the translations for that string specific to your site.

#4 @SergeyBiryukov
8 years ago

How about at least changing it to something less insulting?
I would propose:

"I'm sorry USERNAME, I'm afraid I can't do that".

FWIW, this sounds good to me. Most of the discussion in #14530 took place 2 or more years ago, maybe it's time to reconsider.

#5 @ElectricFeet
8 years ago

What is or isn't offensive is highly subjective and relies on culture, experiences, language, knowledge, etc.

That is exactly my point. Thank you :-) Many people do find this insulting even if some just find it funny. In the translation to my second language, it also has overtones of rudeness -- it's been perfectly translated (capturing the humour), but the adjective used for the translation has origins in criminality and has "fraudulent" as one of the definitions in my dictionary.

For more, see these comments in the same ticket:
https://core.trac.wordpress.org/ticket/14530#comment:8 "gives an unprofessional appearance of WordPress ... assumed the guy was doing something shady on his site ... make it more palatable to folks who don't understand our sense of humor."

https://core.trac.wordpress.org/ticket/14530#comment:9 "+1 on this. I don't see any particular reason not to replace the (snarky, IMO) current message"

https://core.trac.wordpress.org/ticket/14530#comment:20 "is indeed rude and confusing"

https://core.trac.wordpress.org/ticket/14530#comment:33 "[here's a replacement proposal] ... At the very least, it is not cheeky/unprofessional."

https://core.trac.wordpress.org/ticket/14530#comment:48 "I received some angry emails ... from users who thought it was either an inappropriate translation or a core bug"

For example, your proposal, still relies on culture understanding (which I honestly couldn't name which film or fully understand the joke).

That's OK. Many don't know what Hello Dolly means either. Those who know the film will find the message funny. Those who don't will find it innocuous. But no one will find it rude.

However, I'm not tied to this particular replacement suggestion. If someone can come up with a better solution, that's fine too.

For example:
https://core.trac.wordpress.org/ticket/14530#comment:41 If we want to sustain the flavor, let's insert a cheeky "something's messed up" image.

The bottom line is why keep something in core if it's offensive to many?

#6 @peterwilsoncc
8 years ago

I agree, it's time to look at this again.

It's language that has the potential to be insulting, the potential to induce stress and can make the user feel like they are at fault for things they don't control. In the wrong circumstance, it doesn't seem fun.

Softer language can reduce the likelihood of these potential problems.

#7 @SergeyBiryukov
8 years ago

  • Resolution duplicate deleted
  • Status changed from closed to reopened

#8 @karmatosed
8 years ago

I feel that "I'm sorry USERNAME, I'm afraid I can't do that" works in place of a general failure message. I'd be more keen on clearer messages but it is better than what we have. Thanks for the suggestion @ElectricFeet.

#9 follow-up: @pento
8 years ago

  • Keywords needs-patch added
  • Milestone changed from Awaiting Review to Future Release

I'm fine with changing the message, but I'd like some more suggestions on what the new message could be. A bit of personality is good to have here, noting that it does need to be translated into a lot of different languages. Pop culture reference (such as the suggested quote) are good, because they've probably already been translated many times.

Also, the original problem is that WordPress is not detecting when the session times out, which it absolutely should be able to do. When that happens, it should present a more useful message.

Ensuring that data isn't lost between the error being detected and the user logging back in would be pretty sweet, too.

#10 in reply to: ↑ 9 @ElectricFeet
8 years ago

Good to see this is getting traction :-)

I'm fine with changing the message, but I'd like some more suggestions on what the new message could be. A bit of personality is good to have here, noting that it does need to be translated into a lot of different languages. Pop culture reference (such as the suggested quote) are good, because they've probably already been translated many times.

It could also be "Oops! We messed up somehow.", or similar. Or even something like Github's 503: https://github.com/503

Also, the original problem is that WordPress is not detecting when the session times out, which it absolutely should be able to do. When that happens, it should present a more useful message.

Absolutely. Improving the messages was the main thrust of the other ticket ( https://core.trac.wordpress.org/ticket/14530 ), which spawned lots of other tickets to improve individual sub-messages. While I agree that there is probably still work to do on improving the sub-messages and making sure that data is saved, I'm keen that this ticket focuses only on the "Cheatin'uh?" part of the message. Otherwise it risks not getting done -- as in the previous ticket where it got lost because the two issues were mixed up together.

#11 @EricMeyer
8 years ago

As someone who’s criticized this exact error message in public talks, I’m all for changing it. The “I’m sorry Username, I’m afraid I can’t do that” strikes me as relatively workable as long as it’s accompanied with an indication of why it can’t be done. It does carry a bit of in-joke baggage, but I think it probably works even for those who don’t get the joke.

Although I can see myself reacting with “Well WHY can’t you do that?!?!?” before reading the error message that follows. The initial frustration is soothed a bit by the extra information, but I’m not sure it’s worth ramping up that initial frustration in order to soothe it a line later.

Another approach would be a straightforward and honest admission. A few ideas that come to mind:

  • Sorry—Something Completely Unexpected Went Wrong
  • A Completely Unexpected Error Occurred
  • Something Broke. It Looks It Might Be…

(That last one only works as long as there are useful diagnostic messages after the heading, of course, but I understand from previous comments that those messages do exist.)

At core, if you’ll pardon the expression, I think the best message is one that doesn’t mock or tease people, and doesn’t try over-hard to be cute. Errors like this are an inherently tense situation, and using humor to defuse a tense situation really only works if you know the tense person and their sense of humor very, very well (and even then it can backfire). I defer to MailChimp’s http://voiceandtone.com here, specifically the section on failure messages. That may not be the final word on how to deal with these sorts of situations, but it’s an excellent starting point.

All of which is to say, this is a tough problem to solve, and it may require a few iterations to get right, but I’m very glad to see that there’s interest in solving it.


[Links edited to use trac styled markdown. - peterwilsoncc]

Last edited 8 years ago by peterwilsoncc (previous) (diff)

This ticket was mentioned in Slack in #core-customize by clorith. View the logs.


8 years ago

#13 @karmatosed
7 years ago

  • Milestone changed from Future Release to 4.9.2

A huge plus one for getting something in and also not being overly cute in the way we tackle this. As per @EricMeyer's suggestions I think the following work as starting points:

  • Sorry—Something Completely Unexpected Went Wrong
  • Something Broke. It Looks It Might Be…

I would vote to get in the first and then work on how we can display messages that are right to bring in the second. Let's make this happen in 4.9.2 as it's a small but important change.

Version 0, edited 7 years ago by karmatosed (next)

This ticket was mentioned in Slack in #design by karmatosed. View the logs.


7 years ago

#15 @dd32
7 years ago

There's three main ways this phrase is used IIRC:

  • The link you've followed has expired (please go back and try again?)
  • You don't have access to that area (please as your WordPress Administrator if you believe you should have access to it?)
  • Something completely unexpected happened, and this is all the error handling we have for it

I'm definitely +1 for changing this, although I'd prefer to do the above 3 generic type responses first round, rather than have it changed multiple times.

#16 @BandonRandon
7 years ago

I'm definitely +1 for changing this, although I'd prefer to do the above 3 generic type responses first round, rather than have it changed multiple times.

That does seem to make the most sense. As for what the message actually are. I would like to brainstrom the following:

The link you've followed has expired:

  • The link you followed has expired, head back and try the action again.
  • Action has expired, head back and try again.
  • Oops, please go back and try again.

You don't have access to that area:

  • Your role does not allow access to this page. Check your role or with your WordPress Administrator.
  • Access denied: verify your role or check with WordPress Administrator .
  • Sorry, additional privileges needed to view this content.

The you not having access to the page is perhaps the trickiest because what if they are an Administrator but are be prevented by changes they made. (I've totally locked myself out of pages before while experimenting with roles).

Something completely unexpected happened, and this is all the error handling we have for it:

  • Whoa there, something unexpected happen. Sorry about that.
  • Oops, something went wrong. If we knew more we would let you know.
  • Uh oh! This is all the error handling we have, but something unexpected happened.

#17 follow-up: @peterwilsoncc
7 years ago

Reviewing the code base, along with the language considerations there is the following:

CSS class .cheatin
This and the associated HTML should probably be kept as is. If the HTML is changed, the class will need to remain in CSS to maintain back-compat for developers following Core's HTML structure.

object.cheatin in the customizer's JS
WP will need additional properties for new messages. For back-compat, the new default text can use the cheatin property.

I think WP is stuck with these nods to the past, a language change is not worth breaking compatibility for.

#18 @karmatosed
7 years ago

I asked Mark Armstrong to give some insight's as an editorial writer to this.

Sorry—looks like something went wrong.
Something’s not right. It looks it might be… [custom message]

Those both work really well I think.

#19 in reply to: ↑ 17 @ElectricFeet
7 years ago

Replying to peterwilsoncc:

Reviewing the code base, along with the language considerations there is the following:

CSS class .cheatin
This and the associated HTML should probably be kept as is. If the HTML is changed, the class will need to remain in CSS to maintain back-compat for developers following Core's HTML structure.

object.cheatin in the customizer's JS
WP will need additional properties for new messages. For back-compat, the new default text can use the cheatin property.

I think WP is stuck with these nods to the past, a language change is not worth breaking compatibility for.

I agree that the class/object names can stay the same for back-compat.

The problem is on the front-end for users/clients, which is where the language needs to be changed.

#20 @dd32
7 years ago

  • Milestone changed from 4.9.2 to 4.9.3

Bumping to 4.9.3 due to 4.9.2s release

@dmsnell
7 years ago

Replaces "cheatin" message with already-translated and less hostile wording

#21 @dmsnell
7 years ago

  • Keywords has-patch added; needs-patch removed

https://core.trac.wordpress.org/attachment/ticket/38332/38332.1.patch

At WordCamp Albuquerque 2018 Contributor Day we found an existing string that was translated that seemed to convey the function of the "cheatin" message but without the hostility. We opted to reuse an existing string so that this patch could merge and not cause a loss of translation or increase the burden on translators.

Of note, something that I would appreciate some review on, we modified the key on the JavaScript global variable _wpCustomizeControlsL10n. We believe that we covered all of our internal uses of this key but it's not clear to us whether plugins or themes may also depend on the existing cheatin property.

Thanks for the review, we hope this resolves the issue.

Last edited 7 years ago by dmsnell (previous) (diff)

@peterwilsoncc
7 years ago

#22 @peterwilsoncc
7 years ago

Thanks for the patch @dmsnell. If anyone helped you with in on the contributor day, could you please add their name to the ticket so they're sure to get props?

In 38332.diff I've built on the original patch a bit:

  • In most cases the error is known & detailed: An error has occurred.
  • Where permission is denied, I've switched the heading to You don’t have access to this area.
  • The generic nonce failure message is replaced with: The link you followed has expired.
  • I've removed changes to class names from the original patch, plugin authors may be relying on them so I don't want to break backward compatibility
  • For backward compatibility, I've kept cheatin as a property of _wpCustomizeControlsL10n even though it isn't used by core.

Additional review of core messages sent to wp_die() shows the following as potentially insulting, or a little brief:

  • Slow down cowboy, no need to check for new mails so often!
  • Invalid post type.
  • Invalid taxonomy.

This ticket was mentioned in Slack in #core by desrosj. View the logs.


7 years ago

This ticket was mentioned in Slack in #core by peterwilsoncc. View the logs.


7 years ago

This ticket was mentioned in Slack in #core by williampatton. View the logs.


7 years ago

#26 @williampatton
7 years ago

  • Milestone changed from 4.9.3 to 4.9.4

Moving to next release milestone.

#27 follow-up: @SergeyBiryukov
7 years ago

  • Keywords commit added

38332.diff looks good to me and only adds 3 new strings by the looks of it.

Any objections to going with these new wordings?

#28 in reply to: ↑ 27 @ElectricFeet
7 years ago

Replying to SergeyBiryukov:

38332.diff looks good to me and only adds 3 new strings by the looks of it.

Any objections to going with these new wordings?

In terms of getting rid of an insulting message, it fully meets its objective, so I cannot complain on that score.

I would have preferred something more playful, in the spirit of WordPress (see suggestions above), but I understand that this would add to the translation burden.

So no show-stoppers for me.

Thanks for all the work that has gone into this.

#29 @peterwilsoncc
7 years ago

  • Owner set to peterwilsoncc
  • Status changed from reopened to assigned

I'll put this into trunk Monday AEST unless there are any objections.

#30 @karmatosed
7 years ago

Thank you everyone for the steps in the right direction here. I would like to suggest a few adjustments.

The link you followed has expired

Probably a better way of putting this is: "The link you followed no longer exists"

Beyond that I am pondering if 'area' is a good word for the access but it seems fitting.

They are solid and we really shouldn't be playful with error messages. Thanks again everyone for your hardworking here.

#31 @melchoyce
7 years ago

Can we offer any sort of advice when people hit "An error has occurred?" If you encounter this error, what should you do next?

#32 @dmsnell
7 years ago

@peterwilsoncc thanks! I'll see if I can get a round-up of the others who participated and next time I'll remember to get that list while there.

even if this ticket doesn't resolve all insulting messages in WordPress it addresses the one that prompted it and I think it's a step in the right direction. thanks all for the help.

#33 follow-up: @peterwilsoncc
7 years ago

@dmsnell thanks and never mind, it's easy to forget to do on contributor days. They're usually pretty hectic.

@melchoyce in most cases "An error has occurred" is explained in detail on the following line. As this ticket is milestoned to be back-ported, I'd rather avoid too many string changes and open another ticket to improve the less insulting error messaging generally.

#34 in reply to: ↑ 33 @melchoyce
7 years ago

Replying to peterwilsoncc:

@melchoyce in most cases "An error has occurred" is explained in detail on the following line.

👍

#35 @peterwilsoncc
7 years ago

Followup to @karmatosed's notes in 38332.2.diff:

  • Expired nonce becomes: The link you followed no longer exists.
  • Permissions error becomes: You don’t have permission to do this. followed by an explanation. In most cases permissions errors related to a particular action rather than an area.

#36 @peterwilsoncc
7 years ago

  • Resolution set to fixed
  • Status changed from assigned to closed

In 42648:

General: Replace Cheatin’ uh? with friendlier error messages.

While intended as a playful error message, Cheatin’ uh? can be interpreted as insulting or accusatory in an already stressful situation. This replaces Cheatin’ with more meaningful error messages, depending on the error that occurs.

Props ElectricFeet, EricMeyer, karmatosed, dd32, BandonRandon, melchoyce for language; dmsnell for original patch; peterwilsoncc.
Fixes #38332.

#37 @peterwilsoncc
7 years ago

  • Keywords fixed-major added
  • Resolution fixed deleted
  • Status changed from closed to reopened

Reopening for back porting to 4.9 branch

#38 @peterwilsoncc
7 years ago

  • Owner changed from peterwilsoncc to dd32
  • Status changed from reopened to assigned

In 38332-49.diff, I've formatted r42648 for back porting to 4.9.4.

@dd32 assigning to you to do the honours after 4.9.3 is released.

#39 @dd32
7 years ago

  • Status changed from assigned to accepted

#40 @netweb
7 years ago

  • Keywords i18n-change added

#41 @johnjamesjacoby
7 years ago

Two things I see that could still be done here:

  • Change don#8417;t to do not because contractions are still a light-hearted and softened response to a serious situation, which also helps the mission to improve the ease and clarity of our gettext strings
  • There’s a unique “Sorry” string in the JS return value that could match the others; I recommend making it match to avoid confusion about why it’s unique, and to broaden the footprint of that reusable string for translators

#42 @azaozz
7 years ago

Replace Cheatin’ uh? with friendlier error messages.

Seems it is just me but You don't have permission to do this doesn't sound that friendly. It's the same as cheatin but colder, more "corporate" (as in John Connor vs. Skynet that would be a Skynet message) :)

Can even sound somewhat threatening:

Stop! You don't have permission to do this. You're under arrest!

Wouldn't it be better to go with Permission error or just Error? All error instances have good explanations underneath, no need to have separate global titles for them?

Last edited 7 years ago by azaozz (previous) (diff)

#43 follow-ups: @melchoyce
7 years ago

I chatted these error messages over with @kristastevens, a copywriter and editor at Automattic. I wanted to address some of the concerns around tone.

We brainstormed a couple options, and came up with:


An error has occurred. → Something went wrong.

Just a little bit warmer than "An error has occurred," but still generic enough to apply to multiple scenarios.


You don’t have permission to do this. → You need a higher level of permission.

A small update, but changes the focus from what you don't have, to what you need. Less of a NO, more of an explanation.


The link you followed no longer exists. → The link you followed has expired.

We actually think the original suggestion here is a little more clear. "No longer exists" adds some unnecessary mystery. Almost anything here could also be a way to describe death, because "time has run out" for that link. In this context, "expired" is a pretty common, clear term.


FWIW, for future messages, I also think it's okay to be a little casual as long as we're serious and genuinely contrite.

#44 in reply to: ↑ 43 @azaozz
7 years ago

Replying to melchoyce:

These sound great!

#45 @dd32
7 years ago

  • Milestone changed from 4.9.4 to 4.9.5

Bumping, 4.9.4 has been released.

#46 @peterwilsoncc
7 years ago

I like these, I'll revise the language but it's unlikely I'll get to it before Feb 19.

@peterwilsoncc
7 years ago

Revised language

#47 @peterwilsoncc
7 years ago

  • Resolution set to fixed
  • Status changed from accepted to closed

In 42719:

General: Further improve error messages following [42648].

Props kristastevens, melchoyce.
Fixes #38332 for trunk.

#48 @peterwilsoncc
7 years ago

  • Resolution fixed deleted
  • Status changed from closed to reopened

Reopening for the 4.9 branch.

@dd32 38332-49.2.diff combines the two commits.

#49 @SergeyBiryukov
7 years ago

  • Resolution set to fixed
  • Status changed from reopened to closed

In 42811:

General: Replace Cheatin’ uh? with friendlier error messages.

While intended as a playful error message, Cheatin’ uh? can be interpreted as insulting or accusatory in an already stressful situation. This replaces Cheatin’ with more meaningful error messages, depending on the error that occurs.

Props ElectricFeet, EricMeyer, karmatosed, dd32, BandonRandon, melchoyce, kristastevens for language; dmsnell for original patch; peterwilsoncc.
Merged [42648] and [42719] to the 4.9 branch.
Fixes #38332.

#50 follow-up: @sevensoutbill
7 years ago

Wow, this is a ticket? What a waste of time. People find an response from an automated script, insulting? Haha. Thanks, but I'll be writing my own error messages that actually help make using WordPress fun.

#51 in reply to: ↑ 50 ; follow-up: @johnbillion
7 years ago

@sevensoutbill Please keep your comments constructive, otherwise you waste your own time and that of others.

#52 in reply to: ↑ 51 @sevensoutbill
7 years ago

Hi John. Will do. Thanks for setting me straight.

Replying to johnbillion:

@sevensoutbill Please keep your comments constructive, otherwise you waste your own time and that of others.

#53 in reply to: ↑ 43 ; follow-up: @fxbenard
7 years ago

Replying to melchoyce:

It will be a nice improvement. Should we open a new ticket for that?

I chatted these error messages over with @kristastevens, a copywriter and editor at Automattic. I wanted to address some of the concerns around tone.

We brainstormed a couple options, and came up with:


An error has occurred. → Something went wrong.

Just a little bit warmer than "An error has occurred," but still generic enough to apply to multiple scenarios.


You don’t have permission to do this. → You need a higher level of permission.

A small update, but changes the focus from what you don't have, to what you need. Less of a NO, more of an explanation.


The link you followed no longer exists. → The link you followed has expired.

We actually think the original suggestion here is a little more clear. "No longer exists" adds some unnecessary mystery. Almost anything here could also be a way to describe death, because "time has run out" for that link. In this context, "expired" is a pretty common, clear term.


FWIW, for future messages, I also think it's okay to be a little casual as long as we're serious and genuinely contrite.

#54 in reply to: ↑ 53 @SergeyBiryukov
4 years ago

Replying to fxbenard:

It will be a nice improvement. Should we open a new ticket for that?

For reference, the suggested improvements appear to already be committed in [42719].

#55 @johnbillion
5 months ago

#43617 was marked as a duplicate.

#56 @johnbillion
3 weeks ago

#15394 was marked as a duplicate.

Note: See TracTickets for help on using tickets.