Page MenuHomePhabricator

Add a link: refresh button on post-edit dialog (nice to have)
Closed, ResolvedPublic

Description

NOTE: this task is not required for the release of "add a link", but would be nice to have.

Right now, when users see the post-edit dialog after completing a suggested edit, they get a single suggestion to choose from. If they want a different one, they have to return to their homepage to access their whole feed.

In this task, we want to add a refresh button to the upper right corner of the suggestion. When the user taps/clicks it, the suggestion should change to the next one in their feed. If there is a limited number of tasks available at this moment, repeated clicking of the button should cycle through those available tasks.

The invisible label for the refresh button should be "refresh suggestion".

Mobile mockups as of 2021-01-12:
image.png (678×772 px, 158 KB)
Desktop mockups as of 2021-01-12:
image.png (530×842 px, 218 KB)

NOTE: Refer to Figma for up-to-date detailed redline mocks and specs:
Mobile: https://www.figma.com/file/2SONd8P1tsexIB5coMOp8h/Growth-Structured-tasks?node-id=181%3A65
Desktop: https://www.figma.com/file/2SONd8P1tsexIB5coMOp8h/Growth-Structured-tasks?node-id=112%3A0

Event Timeline

MMiller_WMF renamed this task from Add a link: refresh button on post-edit dialog to Add a link: refresh button on post-edit dialog (nice to have).Jan 22 2021, 2:32 AM
MMiller_WMF created this task.
MMiller_WMF updated the task description. (Show Details)

Moving to upcoming work, as it's a nice-to-have.

kostajh triaged this task as Medium priority.Apr 26 2021, 7:53 PM
MMiller_WMF added a subscriber: mewoph.

@mewoph -- because in our initial analysis we see lots of users doing "add a link" edits from the post-edit dialog, this is a user interface improvement that is a good candidate to prioritize.

Question for @MMiller_WMF (or @mewoph you may know too) - do we need to add a separate instrumentation task to capture how often people use this refresh button?

Question for @MMiller_WMF (or @mewoph you may know too) - do we need to add a separate instrumentation task to capture how often people use this refresh button?

I think that' mainly a question to @nettrom_WMF. Presumably we'd emit another task impression event when refreshing the suggestion, so it would be possible to reconstruct from that that a refresh happened, but maybe less convenient than having a specific event for the refresh button click?

Question for @MMiller_WMF (or @mewoph you may know too) - do we need to add a separate instrumentation task to capture how often people use this refresh button?

I think that' mainly a question to @nettrom_WMF. Presumably we'd emit another task impression event when refreshing the suggestion, so it would be possible to reconstruct from that that a refresh happened, but maybe less convenient than having a specific event for the refresh button click?

Derp sorry, obviously @nettrom_WMF is the main person for this. Besides knowing how often it is used, it would be great if we also knew how often this refresh is clicked until an article is selected. This would be useful info indicator as to what extent people prefer to stay on an article page for editing in a feed-like experience, versus wanting to return to their homepage.

Thank you for remembering about instrumentation, @RHo! Yes, we will want to know how often this button is used. @nettrom_WMF, please tell us your preference! And once we decide, you can add an amendment about it to the measurement plan.

Hi @RHo @MMiller_WMF — a few clarifications:

  • What should the refresh button (invisible) label be?
  • Currently we are only fetching 10 tasks when showing the post-edit dialog. Do we want users to be able to view more tasks than that? I was thinking we'd cycle through all the tasks we've fetched if the user keeps refreshing to avoid making additional network requests.

Change 701991 had a related patch set uploaded (by MewOphaswongse; author: MewOphaswongse):

[mediawiki/extensions/GrowthExperiments@master] [WIP] Suggested Edits: Add refresh button on post-edit dialog

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

@mewoph -- the invisible label should be "refresh suggestion". And yes, it is fine to cycle through the ten options. I'll change the task description to include these specifications.

@nettrom_WMF -- I wanted to ping you again about how you think we should instrument the click on this button. Would you like there to be an explicit event? What should it contain?

@nettrom_WMF -- I wanted to ping you again about how you think we should instrument the click on this button. Would you like there to be an explicit event? What should it contain?

Thank you everyone for making sure I pay attention to this! While the impression events give us a way to infer that users click this, I think we should have an explicit event for this (similar to how we handle navigation between tasks on the Homepage). That'll make it easy to measure the use of this feature and answer questions like the one Rita mentioned.

I'd suggest something like action=postedit-task-refresh (or postedit-task-renew?) I don't think we need anything in action_data, because we can use the impression event to identify the task if need be, and if they click the task we've got the task token in that field then.

Let me know if that sounds good or not, happy with other names for the event too. Once we've got a patch for it, I'll update the measurement specification to reflect this.

Thanks @nettrom_WMF! postedit-task-refresh sounds good for the refresh button click.

For the impression event, should we send one when the new task is shown? If so, should we use the existing postedit-impression event or a new one? I was looking at the data sent for postedit-impression and it looks like only the information about the task that was just saved is sent so upon refresh (not the information about the next task).

For the impression event, should we send one when the new task is shown? If so, should we use the existing postedit-impression event or a new one? I was looking at the data sent for postedit-impression and it looks like only the information about the task that was just saved is sent so upon refresh (not the information about the next task).

Ah, excellent questions, thanks for catching this!

I think using postedit-impression for the new tasks would work just fine and makes sense to me, as it's similar to how task navigation is logged on the Homepage (except there it's next/previous). Looking at the values in action_data for postedit-impression, I don't think we need to duplicate all the information about the task that was just saved. That information should be available in the first impression and that should be sufficient as far as I'm concerned.

I think it makes sense to have type in action_data, but most important for me is the newcomerTaskToken. The latter's how I connect this to the NewcomerTask schema to be able to identify the task type and page that's suggested (I just used that in the Add a Link leading indicators analysis, for example). That of course means that there needs to be a NewcomerTask event logged with the task impression. Ideally, it would only be sent once even if the user refreshes enough to see it again, but maybe that's already taken care of?

Here's the sequence of events for clicking on the refresh button & new task being shown. @nettrom_WMF  — let me know if this makes sense or if further changes are needed.

[2021-06-30T21:20:43.623Z] TRACE: service-runner/88140 on wmf2818: event passed schema validation, producing...
    event: {
      "event": {
        "action": "postedit-task-refresh",
        "action_data": "",
        "user_id": 7,
        "user_editcount": 64,
        "context": "postedit",
        "editor_interface": "machineSuggestions",
        "is_suggested_task": true,
        "is_mobile": false,
        "page_id": 0,
        "page_title": "",
        "page_ns": 0,
        "user_can_edit": true,
        "page_protection": "",
        "session_token": "1da4dadd52cd29064d4d",
        "help_panel_session_id": "gt9gga75ebdn10lni38b4ef34r66602b"
      },
      "schema": "HelpPanel",
      "webHost": "localhost",
      "wiki": "my_wiki",
      "$schema": "/analytics/legacy/helppanel/1.0.2",
      "client_dt": "2021-06-30T21:20:42.606Z",
      "meta": {
        "stream": "eventlogging_HelpPanel",
        "domain": "localhost",
        "id": "b3c824f3-ad2b-4b6d-a5e1-b22e7686d783",
        "dt": "2021-06-30T21:20:43.622Z",
        "request_id": "0730d420-d9e9-11eb-be5c-010f20b3dbc7"
      },
      "http": {
        "request_headers": {
          "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
        }
      }
    }


[2021-06-30T21:20:43.624Z] TRACE: service-runner/88140 on wmf2818: event passed schema validation, producing...
    event: {
      "event": {
        "newcomer_task_token": "ed138e60da80f9a576a6",
        "task_type": "link-recommendation",
        "maintenance_templates": [],
        "revision_id": 1841,
        "page_id": 1753,
        "page_title": "Vombat obecný",
        "has_image": true,
        "ordinal_position": 0
      },
      "schema": "NewcomerTask",
      "webHost": "localhost",
      "wiki": "my_wiki",
      "$schema": "/analytics/legacy/newcomertask/1.0.0",
      "client_dt": "2021-06-30T21:20:42.762Z",
      "meta": {
        "stream": "eventlogging_NewcomerTask",
        "domain": "localhost",
        "id": "6aa8bee8-e514-44b5-a052-35d09be23c4d",
        "dt": "2021-06-30T21:20:43.623Z",
        "request_id": "07312240-d9e9-11eb-800f-17a480680be2"
      },
      "http": {
        "request_headers": {
          "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
        }
      }
    }

[2021-06-30T21:20:43.624Z] TRACE: service-runner/88140 on wmf2818: event passed schema validation, producing...
    event: {
      "event": {
        "action": "postedit-impression",
        "action_data": "type=full;newcomerTaskToken=ed138e60da80f9a576a6",
        "user_id": 7,
        "user_editcount": 64,
        "context": "postedit",
        "editor_interface": "machineSuggestions",
        "is_suggested_task": true,
        "is_mobile": false,
        "page_id": 0,
        "page_title": "",
        "page_ns": 0,
        "user_can_edit": true,
        "page_protection": "",
        "session_token": "1da4dadd52cd29064d4d",
        "help_panel_session_id": "gt9gga75ebdn10lni38b4ef34r66602b"
      },
      "schema": "HelpPanel",
      "webHost": "localhost",
      "wiki": "my_wiki",
      "$schema": "/analytics/legacy/helppanel/1.0.2",
      "client_dt": "2021-06-30T21:20:42.766Z",
      "meta": {
        "stream": "eventlogging_HelpPanel",
        "domain": "localhost",
        "id": "ddb79c0b-f765-4479-a4fd-4608bfe20e19",
        "dt": "2021-06-30T21:20:43.623Z",
        "request_id": "07314950-d9e9-11eb-8efc-44edd1ed90ed"
      },
      "http": {
        "request_headers": {
          "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"
        }
      }
    }

Change 702472 had a related patch set uploaded (by MewOphaswongse; author: MewOphaswongse):

[schemas/event/secondary@master] Add postedit-task-refresh to helppanel schema

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

@mewoph – These events all look correct to me! I also reviewed the schema patch and +1'ed it. Let me know if a +2 is needed there, as I'd be happy to do that as well.

Change 702472 merged by jenkins-bot:

[schemas/event/secondary@master] Add postedit-task-refresh to analytics/legacy/helppanel

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

Change 701991 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Suggested Edits: Add refresh button on post-edit dialog

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

Checked in testwiki wmf.17

  • the sequence of events is exactly as in @mewoph comment above.
  • the screenshots:
mockuptestwiki wmf.17
Screen Shot 2021-08-03 at 4.39.49 PM.png (386×721 px, 93 KB)
Screen Shot 2021-08-03 at 4.38.55 PM.png (854×2 px, 405 KB)
Screen Shot 2021-08-03 at 3.24.53 PM.png (812×1 px, 187 KB)
Screen Shot 2021-08-03 at 4.39.03 PM.png (860×1 px, 171 KB)