Page MenuHomePhabricator

Create UI for in-surface auto-complete
Closed, ResolvedPublic

Description

Prototype

You can experiment with the current implementation here:
https://en.wikipedia.beta.wmflabs.org/wiki/Talk:Cats

Requirements

  • It is easy for people to read the usernames in the username suggestion list
  • It is easy for people to differentiate between usernames in the username suggestion list
  • It is clear to people which username within the username suggestion list is in focus
  • It is clear to people how the username suggestion list relates to the comment they are drafting

Open questions

  • 1. Should IP users be shown in the username suggestion list?

Done

  • "Open questions" are answered.
  • We have implemented a minimum width for the username suggestion list

Related Objects

StatusSubtypeAssignedTask
OpenNone
OpenNone
OpenNone
Resolvedppelberg
Resolvedppelberg
Resolved iamjessklein
Resolved Whatamidoing-WMF
Resolvedppelberg
ResolvedEsanders
Resolvedppelberg
Resolvedppelberg
ResolvedEsanders
ResolvedDLynch
Resolved iamjessklein
ResolvedEsanders
Resolved iamjessklein
ResolvedEsanders
Resolvedppelberg
ResolvedBUG REPORTppelberg
ResolvedBUG REPORTEsanders

Event Timeline

@iamjessklein I've updated the task description with the requirements as well as a link to the patchdemo server where you (and anyone else here) can experiment with what's been implemented as part of T232601 so far.

It's worth considering that the current popup styling is the OOUI MenuSelectWidget styles, so anything which we think is an improvement to general list styling / focus stuff might be worth coordinating with @Volker_E and just getting upstream.

Some thoughts (a mix of ui/ux feedback):

  • Increase width and match the spacing around the @ sign to align with this mockup (if it doesn't already )
    Screen Shot 2020-05-06 at 10.18.27 AM.png (467×798 px, 50 KB)
  • Deletion affordance - Fix the affordance for when you backspace after a username has been inserted. There are a few ways we could do this: a. Select and delete the whole thing, like in Gmail b. Delete characters but go back to search, like in Slack are my top choices. i am leaning towards the Slack approach because it puts you in the position to make a quick change, but would love to hear if anyone has opinions on this.to
  • Move IP addresses to the bottom of the list - my assumption here is that people are less likely to @mention IP addresses
  • Automatically input the users who are in the conversation - after a user types "@" the box should autofill with the names of any users who are already in the conversation
  • Move IP addresses to the bottom of the list - my assumption here is that people are less likely to @mention IP addresses

Actually @DLynch was right, we don't notify IPs, so they should probably just be removed. This is the current behaviour in Flow:

// Exclude anonymous users, since they do not receive pings.
this.loggedInTopicPosters = ( config.topicPosters || [] ).filter( function ( poster ) {
	return !mw.util.isIPAddress( poster, false );
} );

Actually @DLynch was right, we don't notify IPs, so they should just be removed.

We don't notify them... but might people want to still "mention" them in the sense of directing a comment at them?

Possibly, although it might be confusing to list them as that would lead users to believe will get notified, when they won't.

Change 594767 had a related patch set uploaded (by Esanders; owner: Esanders):
[mediawiki/extensions/DiscussionTools@master] Move IP users to bottom of suggestions

https://gerrit.wikimedia.org/r/594767

Change 594767 merged by jenkins-bot:
[mediawiki/extensions/DiscussionTools@master] Move IP users to bottom of suggestions

https://gerrit.wikimedia.org/r/594767

Another issue with linking to IPs is that signing as an IP links to your contributions page, not your user page, so we need to probably copy that. Special:Contributions is localised, so we would also need to exposed that page name to JS.

Change 594772 had a related patch set uploaded (by Esanders; owner: Esanders):
[mediawiki/extensions/DiscussionTools@master] Disable IP mentioning until outstanding issues resolved

https://gerrit.wikimedia.org/r/594772

Change 594772 merged by jenkins-bot:
[mediawiki/extensions/DiscussionTools@master] Disable IP mentioning until outstanding issues resolved

https://gerrit.wikimedia.org/r/594772

Actually @DLynch was right, we don't notify IPs...

Do you know why this is so? Is it the function of a technical limitation? Convention? Something else?

Possibly, although it might be confusing to list them as that would lead users to believe will get notified, when they won't.

@Esanders: at what point(s) do you think people could become confused if IPs were to be included in the username suggestion list?

Two cases come to mind:

  1. People could become confused when they don't hear back from the IP editor they assumed would have received their ping and responded by "now."
    • Counterpoint: I assume that in this scenario (someone not hearing back from an IP) is likely to occur regardless of whether a notification is sent to an IP or not.
  2. People could become unclear about how the @-mentioning feature works if, over time, the username suggestion lists becomes filled with more types of users who do not receive pings. In which case, people using the feature will begin to doubt whether @'ing someone will send that person a notification. This could then lead them to become uncertain about what the feature actually does and become confused.
    • Note: this scenario assumes we do nothing to help people understand who does and does not receive a notification when they are @'ed.

Updates from this morning's team meeting:

  • Added the follow open questions to the task description:
    • "1. Should IP users be shown in the username suggestion list?"
    • "2. Should the username suggestion list have a header within it, similar to Phabricator's "👤Find user:"?"
  • Created ticket for the work of treating @-mentions differently from other links: T252083
    • This ticket also contains the "open questions" that surfaced around "cursoring" and "backspacing" into links which Jess surfaced in her comment here: T251478#6112846
  • Created ticket for considering adding a header to the username suggestion list, similar to Phabricator's "👤Find user:" T252084

Edits:

  • REMOVED question about header in username suggestion list from task description and this comment.
    • Reason: I'd like for us to leave the header out for now. We can revisit this conversation if people find the current implementation confusing. Although @iamjessklein, if you have conviction that it should be included, please say as much and can have the conversation about it being included now.

Logged out users get served heavily cached content so technically it would be difficult to show them notifications. Also because IPs can be shared by multiple users it would be very strange to be browsing Wikipedia as a reader and then suddenly see a notification pop up that with a message aimed at someone else.

  1. Yes
  2. I'm unaware of other types of users.

Logged out users get served heavily cached content so technically it would be difficult to show them notifications. Also because IPs can be shared by multiple users it would be very strange to be browsing Wikipedia as a reader and then suddenly see a notification pop up that with a message aimed at someone else.

Understood.

  1. Yes

Ok, cool.

  1. I'm unaware of other types of users.

Noted.

Including IPs in username suggestion list

For now, let's exclude IP addresses/editors from the username suggestion list as Ed implemented in patch: 594772.

We'll reconsider this decision in this task: T252169.

Rationale:
The primary value of @-mentioning/@pinging is to make someone aware that their input is needed by way of sending them a notification.

For people to "realize" this value, they need to have a clear understanding for how the tool works. By having the username suggestion list be filled with entities/people who can and cannot be pinged, we think there is a risk people will become less certain about how the tool works and what it should be used for.

It should be mentioned that the @ + USERNAME construct has other benefits beyond sending notifications. Namely, it can make it easier for people to understand the conversation because there is a visual indication who a particular comment is directed to, as David mentions here (T251478#6113773) and Jess raised during the planning meeting..

Even so, the priority right now is making sure the tool works in a way that people can easily grasp what it should be used for: to send notifications to specific users.


The task description now reflects the above.

Wrapping things up...

  • Increase width and match the spacing around the @ sign to align with this mockup (if it doesn't already )

I've added this note to the "Done" section of the task description.

  • Deletion affordance - Fix the affordance for when you backspace after a username has been inserted. There are a few ways we could do this: a. Select and delete the whole thing, like in Gmail b. Delete characters but go back to search, like in Slack are my top choices. i am leaning towards the Slack approach because it puts you in the position to make a quick change, but would love to hear if anyone has opinions on this.to

There is now a dedicated task to discuss this point: T252083

  • Move IP addresses to the bottom of the list - my assumption here is that people are less likely to @mention IP addresses

We will not be including IP addresses within the username suggestion list for now. Rationale: T251478#6117672. Ticket where we will reconsider this decision, if necessary: T252169.

  • Automatically input the users who are in the conversation - after a user types "@" the box should autofill with the names of any users who are already in the conversation

This is how the tool currently functions. Specifics can be found in the description of this task: T232601.

  • Increase width and match the spacing around the @ sign to align with this mockup (if it doesn't already )

I've added this note to the "Done" section of the task description.

Adding notes from this morning conversation with @Esanders and @iamjessklein:

  • Add minimum width to username suggestion list

...the above are now represented in the task description as well.

Next steps

  • It looks like all that's left is a quick review from @iamjessklein to make sure the min-width in the username suggestion list has been implemented as expected.

The last remaining action (see below) does not need to block T251654; as such, I'm moving this task to "Required after release."

Next steps

  • It looks like all that's left is a quick review from @iamjessklein to make sure the min-width in the username suggestion list has been implemented as expected.

+1 thinks looks good.

Great – closing this out.