51

EDIT: A prototype is available: RFC: Better chat @mentions – A prototype


Status: 50% - Solution is proposed, nothing's implemented yet.

Problem Statement

Pinging (@mentioning) users in chat is problematic.

  • It is possible to accidentally ping several users at once. In some cases, this cannot even be prevented at all.
  • There is a possibility to shortcut @mentions (not spelling out the full username), but the exact rules for this aren't obvious, and using this shortcut increases ambiguity and thus the chance for pinging more than the intended recipient. In some cases it's even possible to ping only a wrong user, but not the one you actually meant to ping.

Background

Usernames on the Stack Exchange sites are not unique. Unlike on many other sites, users can (and will) select any display name, regardless of whether somebody else is already using the same name. This is nice (I think), but it comes with the problem that when you're using the display name to specify a user, it may not be unambiguous.

The concept of specifying a user via their display name first appeared when comment mentions were introduced. The rules for how this works, which are largely unchanged, are okay for comments, where the number of involved people in a comment thread is usually very low.

When chat was created we mostly adopted the same notification rules; after all, that's what users are familiar with. However, chat rooms are much busier than comment threads, and thus it's much more likely that there are users with overlapping names.

We went through several iterations until we ended up with the current set of precise rules for matching (listed here; for company-internal chat, the rules are slightly different), which are a compromise between minimizing the amount of false positives (pinging users that you didn't mean to ping) and false negatives (not being able to ping the user you'd like to be notified of your message).

Chat has an autocomplete functionality that allows you to start typing a @username and then use Tab or click to select the user, which will put the complete display name of the user (in its mentionable form, i.e. with spaces removed) into your message. For a long time, the list of users that the autocompleter offered was rather arbitrary. It was guaranteed to know all users that are currently in the room, but beyond that, all bets were off. If the autocompleter listed a user, there was no guarantee that the user was actually notified of your ping, and if it was possible to ping a user by @mentioning them, there was no guarantee that they would appear in the autocompleter.

I fixed this about a year ago, which was a huge improvment, but it doesn't solve everything. If there is a user called "Leia" in the room and a user called "Leia Skywalker", then it's still impossible to ping the former without also pinging the latter, even if you explicitly chose "Leia" in the autocompleter.

In addition, you don't have to use the autocompleter; you can just type the @mention by hand. And you don't have to type the full name. It's not uncommon for people to not use the autocompleter, and to also shortcut by just typing the partial name. The problem this causes is that when there's a user "Darth Vader" in the room and a user "Darth Sidious", and you notify the former by just typing "@Darth", it'll also ping the latter. And that's even though in this case, it would actually be possible to uniquely notify the single user. This is a particular problem for users who use their real name as their display name and have a common first name. Just ask Nick Larsen how often he gets pinged by someone who was talking to Nick Craver but only typed "@Nick".

Proposed solution

Here's what I'm thinking about doing.

It is no longer possible to mention users just by having (part of) their @username appear in the chat message. You must use the autocompleter to explicitly and unambiguously choose the user to ping. As a shortcut, if the autocompleter only shows a single matching user, pressing space (or maybe some punctuation) will automatically choose that user without you having to click or Tab.

The mention will still appear as "@username", but the visuals of the chat input box will make it obvious that this is more than just a piece of text. I'm imagining something along the lines of this:

        

Behind the scenes, there'll probably still be a textual representation (something like @[1234] where 1234 is the user id) but it wouldn't be displayed that way.

While beyond the scope of this post, in the long run the rendered chat message could also highlight a mention in a similar way.

Open questions

  • Is this a good idea at all? Why/why not?
  • Should there be a transitioning phase during which the old @plaintext mention still works, maybe with something like a deprecation warning?
  • [this question is irrelevant for company-internal chat] With this change, it would be theoretically feasible to allow pinging any chat user, regardless of whether they have ever interacted with the room in question. Is that something we'd want? Or should there still be restrictions similar to today's 7-day rule?
  • Anything else?

(If you're wondering about the structure of this question, this is how RFCs (Requests For Comments) look, which is how we solicit feedback on ideas inside Stack Exchange the company. These RFCs are usually private Google docs, but I'm making this a combined RFC/Meta question, because the proposed change impacts both the public chat and our company-internal chat, as they both use the same platform.)

14
  • Would typing @[115866] ping you, in other words, can I use the textual representation in a chat message to be send? Does this have impact on superpings? (the ones mods seem to use @@115866)
    – rene Mod
    Commented Aug 20, 2015 at 14:54
  • @rene regarding super pings, the mods get sort of "intellisense" as far as I know, they don't type the number themselves Commented Aug 20, 2015 at 14:56
  • 1
    @rene This would be independent from superpings, and yes, you wold probably be able to type the @[115866]. I don't think anyone would do that manually, but disallowing it would probably create more problems than it solves.
    – balpha StaffMod
    Commented Aug 20, 2015 at 15:00
  • 6
    @ShadowWizard When you super-ping someone enough, you memorize their ID and that's way faster than the UI.
    – Adam Lear StaffMod
    Commented Aug 20, 2015 at 15:22
  • I don't like the shortcut only showing one user... sometimes I can't remember how to spell someones UN but I know the first letter. If only one option is shown but multiple people have UN with the same first letter, I have to go and find their UN... with the current version, it shows up to 5-6 people and I can see how to spell the name correctly.
    – Catija
    Commented Aug 20, 2015 at 16:50
  • 3
    I can't even go into the latex room, @end pings me..
    – enderland
    Commented Aug 20, 2015 at 17:43
  • @random it this really random, or does it have some hidden meaning? Commented Aug 20, 2015 at 17:52
  • 1
    @ShadowWizard random's revision comments are the stuff of legends, have you never seen one before? :)
    – balpha StaffMod
    Commented Aug 20, 2015 at 17:53
  • 1
    @Catija I'm not 100% sure I understand you correctly, but I'm pretty sure that you misunderstood me. What I said was that if there is only one user shown in the autocompleter, then we may not require you to explicitly select it (Shog's suggestion goes even a step further). I never suggested hiding any results in order to get down to one.
    – balpha StaffMod
    Commented Aug 20, 2015 at 18:34
  • @balpha oh I've seen many, but finally decided to ask. :-D Commented Aug 20, 2015 at 18:42
  • 1
    are you going to make Tim unhappy?
    – gnat
    Commented Aug 20, 2015 at 19:22
  • 5
    Shockingly, I have no complaints. Ship it!
    – Tim Stone
    Commented Aug 20, 2015 at 19:23
  • noO0o0O0OOo0Oo0
    – berserk
    Commented Aug 20, 2015 at 19:27
  • To prevent answers posted here by mistake, best course of action is closing as dupe, in my opinion. /cc @Thomas. Commented Oct 27, 2015 at 14:35

5 Answers 5

23
  • Is this a good idea at all? Why/why not?

Yes, even a great idea. Main reason is frustrated Mat's and Dan's who keep being pinged while it was actually intended for other users. And it's more elegant than the current way. (and yes, it even happened with a @Dro in a rather small room)

  • Should there be a transitioning phase during which the old @plaintext mention still works, maybe with something like a deprecation warning?

Only a warning when someone try to use the old way e.g. "NOTE: this will no longer ping that user"

  • With this change, it would be theoretically feasible to allow pinging any chat user, regardless of whether they have ever interacted with the room in question. Is that something we'd want? Or should there still be restrictions similar to today's 7-day rule?

Yes, I would like to keep the restrictions similar to today's 7-day rule. I don't want to be pinged randomly in a room I visited years ago, unless someone replies directly to one of my old messages.

  • Anything else?

Mobile chat, thank you. :)

1
  • 3
    @Pat let's hope, I can't use the current mobile chat theme, as it lack critical features like Reply. (so I have to use Full Site mode, praying every time my fat fingers won't make too many mistakes) Commented Aug 20, 2015 at 14:57
20

This is gonna really hurt for a while. I'm very, very used to just typing first-names and partial-names without breaking my rhythm; auto-complete is nice when I don't remember someone's name (or they use funky characters that I can't easily type), but otherwise I don't much use it right now.

I like this idea:

As a shortcut, if the autocompleter only shows a single matching user, pressing space (and maybe some punctuation) will automatically choose that user without you having to click or tab.

...But I don't think it goes far enough. If I type, for instance...

Hey @jon can you take a look at this: ...

There's a really good chance that Jon Ericson is both the person I want to ping and the first person in the autocomplete list in the room I'm in. But of course, he's not the only Jon, so your proposed rule won't help me - I'll end up pinging no one.

Therefore, I would prefer that, upon entering a space, tab, or punctuation character following the @-mention, that chat immediately tries its best to auto-complete the name given the information available, giving up only if NO match can be found; if it's wrong, I'll have a chance to see that and correct it, but in the common case it will be right and I'll be able to continue writing without breaking flow.


Preemptive responses to likely comments:

You don't actually type that way, you're just making this up to be contrary

We tried out Slack for about a month last year; Slack's mention behavior is very close to what is being proposed here. The end result was that a large number of my messages to Jon did not notify him. Others struggled with this as well.

It's worth noting that Slack offers several options for allowing yourself to be notified of mentions (or even keywords) that differ from your official name; this went a long way toward mitigating the awkward notification (and naming) rules it imposed. Our chat does not offer such things in an obvious fashion however.

It'll be painful at first, but you'll get used to it quickly

I won't, and I'll wager a fair number of other people won't either. Why? Because comments still won't work this way. Autocomplete in chat is actually pretty good right now, but in comments it is hit and miss - heck, in the mobile app there is no autocomplete at all. I leave a lot of comments, and I talk a lot in chat; it'll be a constant mental effort to remember which rules apply.

There's an argument to be made that comments should work this way, but... That is a very large and lively can of worms.

7
  • 5
    On Slack I worked around the problem by adding variations of my name to the Highlight Words. On a team small enough for just one Jon, that's fine. But when there are many Jons and we all have our first name highlighted, we are back to square one only with more string and gum to hold everything together.
    – Jon Ericson StaffMod
    Commented Aug 20, 2015 at 16:14
  • 2
    @Shog9 iOS app has autocomplete for usernames in comments.
    – Adam Lear StaffMod
    Commented Aug 20, 2015 at 17:14
  • 5
    For some reason, that app fails to load on all my devices.
    – Shog9 Mod
    Commented Aug 20, 2015 at 17:17
  • 1
    Fails in what way?
    – Brian Nickel StaffMod
    Commented Aug 21, 2015 at 2:49
  • 5
    @BrianNickel Shog is an Android fan.
    – user259867
    Commented Aug 21, 2015 at 4:40
  • 4
    As Normal noted, this was a bit of a joke, @BrianNickel - nothing to be concerned about.
    – Shog9 Mod
    Commented Aug 21, 2015 at 18:16
  • 1
    @NormalHuman That's a common failure.
    – Adam Lear StaffMod
    Commented Aug 26, 2015 at 20:31
12

Is this a good idea at all? Why/why not?

Yes, it is. This is a problem for a long time already and finally it is going to be fixed! Yay! I think the current proposal is quite intuitive, so let's get this implemented.

Should there be a transitioning phase during which the old @plaintext mention still works, maybe with something like a deprecation warning?

No, I guess this will only confuse users. Maybe it can be made clear that there will be a coming big change instead of just turn the switch. Maybe a banner or something for the period of a week before and after, referring to a decent explaining post?

With this change, it would be theoretically feasible to allow pinging any chat user, regardless of whether they have ever interacted with the room in question. Is that something we'd want? Or should there still be restrictions similar to today's 7-day rule?

I think it is best to keep the 7 day rule. If you can ping any user, you can invite him/her to chat, which is nice. This sets the door open to abuse though. How many times will Shog, Jon Skeet or you be pinged in just random rooms? I think this is getting annoying very soon, although I could see the benefits of this functionality.

Anything else?

  • Please don't forget to implement this on mobile chat too. Please don't release before it actually works.
  • What about showing a red line if you type @baplha (yes, typo)? It should be clear it can't resolve the name.
  • What will happen if you click on or hover over the name tag? Will it open the network profile? Highlight the last messages from that person?
8

I'm going to focus only on the third question. The first two, while important, are well answered by others.

With this change, it would be theoretically feasible to allow pinging any chat user, regardless of whether they have ever interacted with the room in question. Is that something we'd want? Or should there still be restrictions similar to today's 7-day rule?

The 7 day rule is important. There are 38 pages of "Andy" users on Stack Overflow. This doesn't include the users that have "Andy <lastname>" display names. Many of us have the boring default gravatar and many of those are green. I don't want to be randomly selected when someone attempts to ping another @Andy with a green avatar, especially if it's in a room that I haven't visited. That annoys several people:

  • Me, because I have no idea what this random person is thanking me for
  • The person doing the thanking, because they get a comment back that is probably similar to "What?", which leads to a discussion where we attempt to figure out who one another are, before ultimately determining that we've never actually interacted.
  • The other Andy who deserved this praise, because they never see it (arguably they aren't annoyed, but they are affected).

Another way to annoy a user (even unintentionally) would be as Normal Human mentions in the comments:

will probably result in unintentional pings by those who are used to @ just as a way of referencing others. "Yay, I just found an answer by @JonSkeet that solved my problem"

If poor Mr Skeet hasn't visited a chat room on another Stack Exchange site, yet one of this answers happens to be discussed (or more likely his reputation as it approaches X), he'll end up with many more pings. I think the 7 day window help protect the "celebrity" users on the network.

3
  • Is this a good idea at all? Why/why not?

Yes

  • Should there be a transitioning phase during which the old @plaintext mention still works, maybe with something like a deprecation warning?

I wouldn't do a transition phase, but there should be enough feedback in the UI to show users that they're trying to do an invalid ping.

  • [this question is irrelevant for company-internal chat] With this change, it would be theoretically feasible to allow pinging any chat user, regardless of whether they have ever interacted with the room in question. Is that something we'd want? Or should there still be restrictions similar to today's 7-day rule?

As long as the feature to invite users to rooms exists, there is already a way to ping users in an annoying way. Adding another way to be annoying doesn't really change anything. Either all methods to ping users get restricted to only work in certain contexts, or they're unrestricted and moderators deal with it if anyone abuses the abilities.

The restriction to 7 days doesn't really do any harm, though. So I don't care all that much either way.

There is the potential for users unintentionally pinging random users, but I've no idea how often that happens in practice.

  • Anything else?

I'd leave the option to just type the name exactly without using the autocomplete. I'm not entirely sure if your proposal already does this. So if I type exactly @shog9 it should result in the same ping as if I used the autocomplete.

There should be some kind of feedback for invalid pings. Blocking the submission of the message for invalid pings might be a bit annoying, but some visual feedback that the ping is broken in the message might be a good idea.

3
  • 5
    If there is no 7 day restriction and the exact username pings, that will probably result in unintentional pings by those who are used to @ just as a way of referencing others. "Yay, I just found an answer by @JonSkeet that solved my problem".
    – user259867
    Commented Aug 20, 2015 at 15:44
  • "Adding another way to be annoying doesn't really change anything." It does if the new way is easier to do, especially if it's easier to do unintentionally.
    – jscs
    Commented Aug 20, 2015 at 19:15
  • @JoshCaswell I've no idea how often that would happen, I did focus on the intentional misuse. If the accidental misuse is a significant factor, the limit should certainly remain there. Commented Aug 20, 2015 at 19:18

Not the answer you're looking for? Browse other questions tagged .