Page MenuHomePhabricator

New Impact module: Thanks count dialog
Open, Needs TriagePublic

Assigned To
None
Authored By
RHo
Nov 1 2022, 9:37 PM
Referenced Files
F35697188: image.png
Nov 2 2022, 3:50 PM
F35696463: image.png
Nov 2 2022, 1:05 PM
F35696442: image.png
Nov 2 2022, 1:03 PM
F35696320: image.png
Nov 2 2022, 12:38 PM
F35693280: image.png
Nov 1 2022, 9:37 PM

Description

User Story:

As a newcomer, I want to see who thanked me and for which edit, because:

  • Thanks are part of how I understand which edits are valued
  • Thanks are one of the few positive interactions a newcomer might experience initially
  • Thanks are one way I can start to feel part of the community

As a mentor, I want to be able to see which edits a newcomer is thanked for, because then I have more information to guide any "personalized praise" I send the newcomer.

Description
  • A dialog showing details of thanks count shown on the Impact module scorecard.
  • Shown in a OOUI "Simple dialog (medium)" component - shown over the homepage on Desktop, and as a full screen modal on Mobile.
  • If a user has 1+ thanks in a thanks count scorecard, selecting that will open a dialog with the following proposed details per "thank":
    • Article image thumbnail (if available)
    • Article title
    • Diff timestamp for which the person was thanked
    • Username of the person who thanked them

image.png (1×1 px, 215 KB)

Figma design.

NOTE: This information is not available publicly on the Thanks log, but *is* available to the user as it is included in the Thanks Echo notification:
Web
image.png (234×1 px, 45 KB)
Android
image.png (294×676 px, 64 KB)
Questions:

When this task is completed we should also consider where else could it be useful for someone to be able to see this info besides the newcomer homepage?

  • ASpecial:ThanksCount page?
  • Add to Thanks log?
  • Add to basic contribution metrics on Special:Contributions
Acceptance Criteria

Given I am viewing my impact module,
When I have 1 or more thanks received in the Thanks "scorecard" and select the Thanks scorecard,
Then I will see the Thanks count dialog.

Event Timeline

This is a proposed view to allow the newcomer to see additional details about what they were thanked for in the impact module. It may also be re-used for the Mentor dashboard "praiseworthy mentees" module (cc @KieranMcCann)

@KStoller-WMF - do you think this is reasonable and worthwhile incorporating into this release?

Thanks for creating this task!

do you think this is reasonable and worthwhile incorporating into this release?

I definitely think this task worthwhile, although I would prefer if it didn't delay our initial release.

If this is relatively simple from the engineering perspective, perhaps we can fit in this work while we work through the inevitable edge cases and bugs that we find as we test and get final community feedback (while the impact module is testable on beta wiki).

However, I know the existing Thanks log doesn't actually include the edit associated with the Thanks sent. Example: https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek
So I'm unclear if that's easily available data already, or if backend changes are needed. (And if backend changes are needed to supply this data, then I imagine we need a Privacy check in, and then this is definitely more of a second iteration task).

@kostajh Do we know if this is relatively straightforward from a technical perspective? Or should we move to Growth: Positive reinforcement - Iteration 2 (T316699)?

@kostajh Do we know if this is relatively straightforward from a technical perspective? Or should we move to Growth: Positive reinforcement - Iteration 2 (T316699)?

It's on the medium/larger size because we need to:

Let's leave it in the first iteration, and see if we can get to it? But I think it's more likely we'll end up completing this task in T316699: [EPIC] Growth: Positive reinforcement - Iteration 2

RHo updated the task description. (Show Details)

However, I know the existing Thanks log doesn't actually include the edit associated with the Thanks sent. Example: https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek
So I'm unclear if that's easily available data already, or if backend changes are needed. (And if backend changes are needed to supply this data, then I imagine we need a Privacy check in, and then this is definitely more of a second iteration task).

Hiya I realised after updating with these two questions that the diff and article info is available in the corresponding Echo notification that is sent to the thankee.
Having said that, if we want other people to continue to be able to access the Impact module of any user (currently possible via Special:Impact/$username, then maybe it will require Privacy review? And/or possibly something @Trizek-WMF knows more about?

However, I know the existing Thanks log doesn't actually include the edit associated with the Thanks sent. Example: https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek
So I'm unclear if that's easily available data already, or if backend changes are needed. (And if backend changes are needed to supply this data, then I imagine we need a Privacy check in, and then this is definitely more of a second iteration task).

Hiya I realised after updating with these two questions that the diff and article info is available in the corresponding Echo notification that is sent to the thankee.
Having said that, if we want other people to continue to be able to access the Impact module of any user (currently possible via Special:Impact/$username, then maybe it will require Privacy review? And/or possibly something @Trizek-WMF knows more about?

We could detach this specific information from the API for the impact module. So, it would be a separate API endpoint that allows only the user who calls it to get information for themselves, rather than about others. We would need to provide a configuration flag for Special:Impact/username and T219025: Impact Module Extensibility: allow transcluding Special:Impact on wikitext pages with {{Special:Impact/username}} to not attempt to query this endpoint when viewing data for someone else.

However, I know the existing Thanks log doesn't actually include the edit associated with the Thanks sent. Example: https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek
So I'm unclear if that's easily available data already, or if backend changes are needed. (And if backend changes are needed to supply this data, then I imagine we need a Privacy check in, and then this is definitely more of a second iteration task).

Hiya I realised after updating with these two questions that the diff and article info is available in the corresponding Echo notification that is sent to the thankee.
Having said that, if we want other people to continue to be able to access the Impact module of any user (currently possible via Special:Impact/$username, then maybe it will require Privacy review? And/or possibly something @Trizek-WMF knows more about?

We could detach this specific information from the API for the impact module. So, it would be a separate API endpoint that allows only the user who calls it to get information for themselves, rather than about others. We would need to provide a configuration flag for Special:Impact/username and T219025: Impact Module Extensibility: allow transcluding Special:Impact on wikitext pages with {{Special:Impact/username}} to not attempt to query this endpoint when viewing data for someone else.

The Android client is able to use the revision / title because that's available when the Echo event is generated. But what we store in the Log doesn't contain this information, exactly (for privacy purposes, I suppose). However, we can query the log_search table to find ls_field => 'thankid' records, and the ls_value column contains the revision ID.

However, I know the existing Thanks log doesn't actually include the edit associated with the Thanks sent. Example: https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek
So I'm unclear if that's easily available data already, or if backend changes are needed. (And if backend changes are needed to supply this data, then I imagine we need a Privacy check in, and then this is definitely more of a second iteration task).

Hiya I realised after updating with these two questions that the diff and article info is available in the corresponding Echo notification that is sent to the thankee.
Having said that, if we want other people to continue to be able to access the Impact module of any user (currently possible via Special:Impact/$username, then maybe it will require Privacy review? And/or possibly something @Trizek-WMF knows more about?

We could detach this specific information from the API for the impact module. So, it would be a separate API endpoint that allows only the user who calls it to get information for themselves, rather than about others. We would need to provide a configuration flag for Special:Impact/username and T219025: Impact Module Extensibility: allow transcluding Special:Impact on wikitext pages with {{Special:Impact/username}} to not attempt to query this endpoint when viewing data for someone else.

The Android client is able to use the revision / title because that's available when the Echo event is generated. But what we store in the Log doesn't contain this information, exactly (for privacy purposes, I suppose). However, we can query the log_search table to find ls_field => 'thankid' records, and the ls_value column contains the revision ID.

Filed that as T322218: Create API to allow retrieving detailed information about Thanks log items for my own user account. We probably need Security/Legal to review sign off on that, conceptually at least. @DMburugu or @KStoller-WMF is that something you could ask about?

I don't remember why the decision to hide which edit was thanked publicly is obscure to me. It seems to be a by default feature; see the "privacy" section at https://www.mediawiki.org/wiki/Notifications/Feature_requirements#Flyout:

For the record, all personal Echo notifications will be completely private, both in the flyout and all-notifications pages, like all other websites. To clarify, even if a public notification is sent to the user in future releases (e.g. 'a new edition of the Signpost has been published'), the content of that notification will obviously be public (but the fact that you received that notification will remain private).

We have two possibilities there:

  • have a different behavior for the page the user sees, compared to the page anyone else sees (who thanked me is private; how many thanks I got is public)
  • consult with communities to make public which diffs have been thanked public.

The latter would drive some changes:

  • recall which edits have received thanks from the log (I re-read https://en.wikipedia.org/wiki/Special:Log?type=thanks&page=Trizek and I was like "I was thanked, that's great, but for what?")
  • have a way to prevent "harassement by thanks", where some users thank others just to tell "I'm watching you on this article we disagree on".
  • publicly show appreciation of others to the community
  • we could have less thanks from people who support others who support them on conflictual topics

Another thought - isn't it explicit in the confirmation step to "Publicly send thanks?" that the editor should expect their thank to be publicly shown?

image.png (82×618 px, 19 KB)

Another thought - isn't it explicit in the confirmation step to "Publicly send thanks?" that the editor should expect their thank to be publicly shown?

image.png (82×618 px, 19 KB)

That makes sense to me, but I think we'd need to ask around and build some consensus about changing what that means. From https://en.wikipedia.org/wiki/Help:Notifications/Thanks:

> The Thanks log does not record which particular edit of yours triggered the thanks.
> You will only be able to see who you thanked, and when. The log does not record the specific edits

It looks like the only reason we added code to record the revision ID in the log_search table was to prevent duplicate submissions (T53303, T88820).

I don't remember why the decision to hide which edit was thanked publicly is obscure to me. It seems to be a by default feature; see the "privacy" section at https://www.mediawiki.org/wiki/Notifications/Feature_requirements#Flyout:

For the record, all personal Echo notifications will be completely private, both in the flyout and all-notifications pages, like all other websites. To clarify, even if a public notification is sent to the user in future releases (e.g. 'a new edition of the Signpost has been published'), the content of that notification will obviously be public (but the fact that you received that notification will remain private).

We have two possibilities there:

  • have a different behavior for the page the user sees, compared to the page anyone else sees (who thanked me is private; how many thanks I got is public)

The path with less friction is to have an API endpoint that allows you to access only your own data. I just realized that we already have some form of this: you can query your Echo notifications (https://www.mediawiki.org/w/api.php?action=query&format=json&meta=notifications&formatversion=2&notsections=message&notnotifiertypes=web) and that contains the revision ID. But we'd want to add a parameter to allow us to filter specifically for type: edit-thank.

  • consult with communities to make public which diffs have been thanked public.

The latter would drive some changes:

You can get this already by viewing your Notifications, but yeah, would be nice to have it available in Special:Log, IMO.

  • have a way to prevent "harassement by thanks", where some users thank others just to tell "I'm watching you on this article we disagree on".
  • publicly show appreciation of others to the community
  • we could have less thanks from people who support others who support them on conflictual topics

Another thought - isn't it explicit in the confirmation step to "Publicly send thanks?" that the editor should expect their thank to be publicly shown?

image.png (82×618 px, 19 KB)

Indeed, it is public, but less public than people may think.

That makes sense to me, but I think we'd need to ask around and build some consensus about changing what that means. From https://en.wikipedia.org/wiki/Help:Notifications/Thanks:

> The Thanks log does not record which particular edit of yours triggered the thanks.
> You will only be able to see who you thanked, and when. The log does not record the specific edits

It looks like the only reason we added code to record the revision ID in the log_search table was to prevent duplicate submissions (T53303, T88820).

Let's not forget that the official documentation is https://www.mediawiki.org/wiki/Help:Notifications/Thanks. At some wikis, local help pages are interpretations of how the feature has been designed.

You can get this already by viewing your Notifications, but yeah, would be nice to have it available in Special:Log, IMO.

Old notifications are deleted, while logged actions are kept, with no possibility to know what was the concerned edit. It is nice to know that you've been thanked on [date] by [user], but what was it for again? It I've ben harassed, it is word against word, as it is not possible to know what the thanked edit was.

KStoller-WMF moved this task from Inbox to Needs Discussion on the Growth-Team board.

Moving out of current sprint and into Needs Discussion.
@DMburugu will look into privacy / security review.

Moving out of current sprint and into Needs Discussion.
@DMburugu will look into privacy / security review.

@KStoller-WMF we can move forward with this per T322218#8419135, so let us know when we should start working on it. Building the API and the UX component both seem fairly straightforward, with the caveat that we haven't yet added a dialog in the new impact module so that might need some scaffolding work.

I think we should have a community discussion before moving this forward since this wasn't part of our original designs we shared and discussed with communities.

@Trizek-WMF - Do you think when we discuss adding Thanks to Watchlist and Recent Changes, we could also incorporate a discussion about this task? I realize it's totally different, but they are both about increasing the use and visibility of Thanks on the wikis, so perhaps it makes sense? If yes, does that discussion fit into this task: T322812 ?

Displaying publicly the number fo thanks received is already doable by anyone who wants to use the logs. What's new is to show who thanked who for what.

I made some research and, back in the days (circa 2015), this Thanks feature was a bit controversial for some users.
Some were afraid of one using the number of thanks received as a way to show that they are right about an edit. This is a concern that could be raised again, especially with the API providing this information. However, any community can decide to make these thanks non-relevant for in-discussions arguments.
Some others were afraid of seeing Thanks as being the first stone of an à la Facebook system, where likes are the key component of interactions. It is not that Positive reinforcement is for, but this concern might be raised too: some users might do whatever they could to receive thanks, even controversial edits, or edits that can be perceived as positive at the first view but that aren't.

Time has passed though, and the number of Thanks sent shows that the feature is popular. Looking for improvements, on a specific field as Growth does, is perfectly understandable and reasonable. So we definitely need to open a conversation about making it easier to find who thanked who for what if we go in this direction. Adding it to T322812 is possible if we consider it as an Epic, with sub-tasks for each consultation.

Displaying publicly the number fo thanks received is already doable by anyone who wants to use the logs. What's new is to show who thanked who for what.

@KStoller-WMF @Trizek-WMF, IIUC, this dialog is only for the logged-in user to see who thanked them for what. You would not be able to use Special:Impact/{username} or the new API endpoint (T322218) to see someone else's data (who thanked them for which specific edit).

As such, this is basically adding functionality that already exists in everyone's email client: search for thanked you for in your email archives, and you'll find your backlog of Thanks messages with links to the edits that you were thanked for.

So, IMO informing communities that we are adding this functionality is a good idea, but I don't think it needs to be blocking, because the functionality already exists (in your email history) and the restricted, private access to this information doesn't change. My 2 cents :)

On the other hand: a community consultation about allowing others to see this data for anyone, and/or more broadly exposing it on Special:Log might be useful, but I don't think it should block the creation of this dialog for the impact module.

@KStoller-WMF @Trizek-WMF, IIUC, this dialog is only for the logged-in user to see who thanked them for what. You would not be able to use Special:Impact/{username} or the new API endpoint (T322218) to see someone else's data (who thanked them for which specific edit).

Thanks for the clarification. I misunderstood and thought this data might be visible to others via Special:Impact/{username} and the new API endpoint. If it really is private to only the authenticated user who received thanks, then I agree communication should happen but doesn't need to be a blocker. @Trizek-WMF - feel free to disagree!

Have we thought about how this would scale? Would we have a list of up to 1,000 or paginate?

If the data remains private, then there is nothing special to do, except saying "we improved the Impact module". :)

We will have a limitation on the number of thanks displayed, as (IIRC) the thanks are deleted from the database after a certain amount of time. If they aren't deleted, then we should display the exact number.

I'm moving this tasks to T316699: [EPIC] Growth: Positive reinforcement - Iteration 2 for two reasons:

  • To reduce the scope of the first iteration of the Impact Module (T222310), so we can move on to T317813: [EPIC] Positive Reinforcement: Leveling Up
  • I want to see data on how many newcomers actually click on the Thanks count in the new Impact Module, so we have a better sense of how many newcomers would actually see this new dialog

A suggestion: we should remind newcomers how they can get more thanks: by following the instructions and in doubt ask your mentor.

update: Added user stories for this task along with the associated Mentor use case for wanting this info available.