Skip to content
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

Per-user count-based alphabetic emoji sorting #1126

Merged
merged 1 commit into from
May 3, 2017

Conversation

maximbaz
Copy link
Contributor

@maximbaz maximbaz commented Apr 25, 2017

Sorting-wise ❤️

Important: the count is stored per emoji name, not per emoji code. Because the same emoji can have multiple aliases (for example 🙂 is accessible via 'simple smile' and 'slightly smiling face'). If the emoji code was used, both of these would jump in the top of the list and you will see duplicates.

Other improvements

1. Filter matches only the beginning of the words.

To reduce noise, "wi" now matches "Stuck out tongue winking eye", but not "Rewind" or "Arrows clockwise" like it is on prod (see the first screenshot below).

2. Reduced minimal number of characters before emoji popup appears from 2 to 1.

First I noticed that there are some emojis whose name consists only of 1 letter: a, b, m, o and x. There was no way to enter them before.

But this also helps saving keystrokes, i.e. as soon as wink is remembered as my favorite, I can type it with just :w<Enter>.

Typing :) or :D doesn't show emoji popup, which was my primary concern. So I actually don't see any reason why not reduce this limit from 2 to 1. Can you think of a counter-example?

3. Increased number of emojis in the popup from 5 to 10.

We chatted briefly about this with @helenakos. Current 5 feels too small, 10 is kind of a random number, I can adjust if you like. I think with the current vertical layout it becomes noisy to show more than 10 emojis at once, but 10 looks OK (screenshots below).

4. Sorted emoji.tsv by the "name" column.

It doesn't matter how this file is organized, but I thought it would be nice to have some structure in it, especially for future when more emojis will be added. Sorting by name feels more natural.


Screenshots, laptop-size screen

Before:

image

After:

image

/cc @bennyn, @gregor

@bennycode
Copy link
Contributor

@markesaaremets, what's your take on that?

@markesaaremets
Copy link
Contributor

@maximbaz, thanks, I think it's good, but I wouldn't increase the number of emojis we show. It starts to cover the content. I would also sort the top-used ones still alphabetically.

@maximbaz
Copy link
Contributor Author

maximbaz commented Apr 26, 2017

OK, thanks, I'll reduce the number of emojis back to 5.

The top-used are still sorted alphabetically if and only if they were used exactly identical number of times. But this is rare, often one emoji is always used more than another, so it will be on top.

To elaborate: we don't group emojis in two groups "top-used" and "rarely-used", but we use direct counts to choose the order. This gives more agility, depending on the usage pattern a given user might have more than 2 groups. And then, when any two emojis have exactly the same usage count (let's say 20 and 20, but for most of them 0 and 0), then they will be sorted alphabetically.

@maximbaz maximbaz force-pushed the emoji-better-sorting branch from 2b2e820 to 25ff6b1 Compare April 26, 2017 18:00
@maximbaz
Copy link
Contributor Author

Hey @bennyn, I hacked around your idea for inline emoji replacement 😛. Do you like it?

emojis

It will require some code cleanup before it can be sent as a PR, but if you do, I can prepare and submit it after this PR is merged 🙂

@bennycode
Copy link
Contributor

@maximbaz, your GIFs always make me smile. 😃 Big thumbs up for the inline emoji replacement. 👍

But as you said, first things first... So back to per-user count-based alphabetic emoji sorting... We can merge your PR once the top-used emojis will be sorted alphabetically (like @markesaaremets suggested). Do you see an option how this is technically possible?

By the way, we are still looking for a Senior Web Developer. 😏

@markesaaremets
Copy link
Contributor

@maximbaz, @bennyn Thanks! Regarding the sorting, we got a lot a of feedback for the initial version, which led us to #1102. I'm still afraid it could create some confusion, so if it's an easy tweak, I'd make the last effort to make it extra-nice. If it proves not to work, we can always roll back.

@maximbaz
Copy link
Contributor Author

maximbaz commented Apr 27, 2017

@bennyn @markesaaremets, I really don't think we should sort top-used emojis, and here is why:

The purpose of counting is to make user as efficient as possible, so when they used 😉 83 times and 😜 95 times, this really means that they use 😜 more, and by introducing sorting and placing 😉 above 😜 you introduce artificial delay for the user, you force them to click more buttons to achieve what they do most often.

And it's not an easy tweak, it's just impossible to come up with a "fair" approximation where you say "now these two emojis are used almost equally often" that will satisfy everyone. Make the approximation range too low, and the sorting will never kick in. Make the range too high, and users will have to choose 😜 like hundreds of times before Wire becomes convinced that this is really a more often used emoji.

However, when the usage count is exactly the same, this means user doesn't really care about prioritizing one emoji over another, and this is the perfect place (the only place) to step up and sort alphabetically.

By the way, maybe this will be a convincing argument 😉

Slack (the master of emojis 😛) is doing exactly what I implemented in this PR, it doesn't attempt to approximate anything and shows most used on top (sorted exactly by usage count), and only when any two emojis have exactly the same usage count, then it sorts alphabetically.

I personally think it's a very pleasant experience, I open search box for the first time and see alphabetically sorted list, I search for "wink" and enter it, I open the search box for the second time and voila, "wink" is already on top - how nice of Wire to remember my preference 😊

@maximbaz
Copy link
Contributor Author

Perhaps the best option to avoid user confusion is to communicate something like this on Medium / Twitter?

Wire now remembers which emojis you like most, and prioritizes them in the suggestion list. The more you use an emoji, the higher it will be in the list, allowing you to enter it faster next time!

@maximbaz
Copy link
Contributor Author

maximbaz commented Apr 27, 2017

@bennyn @markesaaremets just a thought, maybe we should have a quick call and discuss this, to reach consensus?

Today I think sorting most-used emojis by name would only lead to more confusion, not less, but to be fair I haven't heard the feedback you got that lead to #1102, so maybe I'm just missing something.

You decide if you want / need this call, and of course if you have time 🙂

@maximbaz maximbaz force-pushed the emoji-better-sorting branch from 506203a to ca440b9 Compare May 2, 2017 14:39
@maximbaz
Copy link
Contributor Author

maximbaz commented May 2, 2017

@bennyn travis likes me again 🙂

@helenakos
Copy link

@maximbaz @bennyn @markesaaremets Looping in here. Agree that most used emoji should always be on top. Talked briefly to @markesaaremets, he is in transit now, and agreed that most emoji used should be on top based on count and that we can merge it with that implementation. After it's tested we can see if alphabetical sorting would be more preferred by users.

@gregor gregor merged commit 5f376d9 into wireapp:dev May 3, 2017
lipis added a commit that referenced this pull request May 3, 2017
* 'eslint' of github.com:wireapp/wire-webapp:
  Updated translations (#1168)
  Skipping HTML comments (#1159)
  ES6: migrated "user" (#1138)
  Fix linting
  Return Object in ClientMapper.update_client() (#1158)
  chore(package): update eslint-plugin-jsdoc to version 3.0.2 (#1164)
  dont display blocked top people (#1163)
  Per-user count-based alphabetic emoji ordering (#1126)
  Fix removeEventListener on mouse click, fix emoji popup reappearing after a typo (#1133)
  Fix emoji flags detection (#1162)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants