Page MenuHomePhabricator

Event pathways opt-out: preference, dialog link to user preferences, and not show modal if it is off
Open, In Progress, Needs TriagePublic

Description

NOTE: Remove sections that are not needed. Instead, leave the section and write NOT NEEDED as its content.

Background: Some logged-in editors will want to stop seeing the event discovery dialog once they know what it is. This task gives them a straightforward path: we add a new global preference on Special:Preferences > User profile > Event discovery. They will have the option to show/hide the post-edit dialog that promotes events. They will learn about this preference because, in the post-edit dialog, there will be a message with a link to Preferences: "You can hide this message in the future by going to your user preferences"

Type of story
  • Front End
  • Backend
Acceptance criteria
  1. User preferences: New global opt-out campaignevents-opt-out-event-discovery with default off (dialogs allowed); toggle + section copy on Special:Preferences under User profile ("Event discovery"), same registration style as other CampaignEvents preferences.
    • Event discovery will be the rename of the currently named "Invitation lists" section
  2. Dialog: A link is added on the Event Discovery Dialog that goes to "User Preferences";
  3. Global suppression: If the opt-out is true, for any event, do not record a discovery promotion and do not show the modal — since user has said they do not want see this type of modal anymore.
  4. Turning the preference off again in Special:Preferences restores normal behaviour (task-13 may signal when all other conditions match).
Design
Hide message in post-edit popupUser preferences
hide message.png (1,712×3,732 px, 356 KB)
preferences (2).png (428×933 px, 70 KB)

Figma link

Messages and copy included
  • For happy path:
    • Message key: campaignevents-eventdiscovery-dialog-hide-in-preferences
      • Message text: "You can hide this message in the future by going to your user preferences."
      • Context: Full text of the link on the Event Discovery Dialog; entire string links to Special:Preferences
    • Message key: campaignevents-eventdiscovery-preference-label
      • Message text: "After I publish an edit, notify me about relevant events."
      • Context: Toggle label on Special:Preferences for the opt-out preference
    • Message key: prefs-campaignevents-event-discovery
      • Message text: "Event discovery"
      • Context: Section header on Special:Preferences for that group
  • For unhappy path: NOT NEEDED
Depends on
  • task-13 (Event Discovery Dialog and promotion post-save path must exist before patches 2 and 3)
Testing required?
  • Yes
  • Patch 1: preference appears, default correct, save toggles value.
  • Patch 2: link text + href to Special:Preferences.
  • Patch 3: with opt-out true, edits on worklist pages for two different events → no promotion row and no signal; with opt-out false, happy path from task-13 works again.
Split patches suggestion
  • Patch 1: new opt-out in user preferences only (defaults + Special:Preferences UI).
  • Patch 2: link on the Event Discovery Dialog + i18n for campaignevents-eventdiscovery-dialog-hide-in-preferences (Special:Preferences strings stay with patch 1).
  • Patch 3: post-save guard only — global opt-out stops promotion + modal signal for every event.
Gherkin scenarios
NOTE: These are all drafts and we will refine them

Feature: Event discovery global opt-out

  • Scenario: Preferences link on the dialog
    • Given the Event Discovery Dialog is open for a logged-in user
    • Then a link is shown whose text matches the hide-in-preferences message
    • And "Visit event page" and "Skip" remain available
  • Scenario: Link opens Special:Preferences
    • Given the Event Discovery Dialog is open for a logged-in user
    • When the user follows that link
    • Then the user reaches Special:Preferences
  • Scenario: Global opt-out blocks dialog for any event
    • Given user "Carol" is logged in
    • And Carol has turned on the global event-discovery opt-out in Special:Preferences
    • And Carol is not a registered participant of event E1
    • And Carol is not a registered participant of event E2
    • When Carol saves a worklist article for event E1
    • Then no discovery promotion is recorded for that save
    • And no modal signal is sent for that save
    • When Carol saves a worklist article for event E2
    • Then no discovery promotion is recorded for that save
    • And no modal signal is sent for that save
  • Scenario: Turning preference off restores discovery when task-13 would signal
    • Given user "Carol" is logged in
    • And Carol previously had the global event-discovery opt-out on
    • And Carol has turned off the global event-discovery opt-out in Special:Preferences
    • When Carol makes a save that satisfies task-13's happy-path conditions
    • Then the Event Discovery Dialog can appear again

Event Timeline

Hi @cmelo!

I am discussing this ticket with @JFernandez-WMF. It generally looks good (we made some tweaks to the language, but nothing major). However, we are wondering about the placement of the preference. The AC says it would be in a section for CampaignEvents in Preferences. From our understanding, this section does not yet exist, correct? We are wondering if it makes more sense to either rename the Invitation Lists section in Preferences to be "Event discovery" and include this preference under that section OR perhaps create a new section under Editing for post-edit actions, with the first one being this preference (since other teams are working on post-edit actions as well). What do you think?

Also, @bmartinezcalvo, @ppelberg, @KStoller-WMF, & @AAlhazwani-WMF: Are the Editing or Growth teams interested in creating a new section in preferences for a post-edit moment (so people can opt out of seeing some things after they publish edit)?

Also, @bmartinezcalvo, @ppelberg, @KStoller-WMF, & @AAlhazwani-WMF: Are the Editing or Growth teams interested in creating a new section in preferences for a post-edit moment (so people can opt out of seeing some things after they publish edit)?

Growth allows users to opt-out of our post-edit dialogs via a “Don’t show this again” check box.

image.png (712×790 px, 120 KB)

I believe the opt-out isn’t actually saved as a Preference, but as a user property or ConditionalUserOption [citation needed / I might be wrong].

Either way, we should ensure we aren’t serving competing post-edit dialogs. So let me know if you need more information from Growth!

El T423741#11919038, @ifried escribió:

Also, @bmartinezcalvo, @ppelberg, @KStoller-WMF, & @AAlhazwani-WMF: Are the Editing or Growth teams interested in creating a new section in preferences for a post-edit moment (so people can opt out of seeing some things after they publish edit)?

Adding a new Preferences section for this feels more complex. Keeping it in the dialog itself (like Growth's dialog) is more contextual since the user can act on it right when it's relevant, without having to find it in preferences. Also, given that Growth already uses this solution, it makes sense to align on the same pattern.

Thank you so much for your feedback and for offering alternatives, @KStoller-WMF & @bmartinezcalvo!

We discussed this in our team meeting on May 14, and decided on the following:

  • We want it to be a preference so that a) people can opt in/out rather than being stuck as opt out, and b) it is actually technically easier to implement this way because this would not be per-event but for all events (which would require us to create a new table to store this data).
  • Since Growth and Editing do not have a need for a post-edit section in Preferences, we will alter the existing Invitation lists section in Preferences to be more broadly for Event discovery, which is where we'll place this preference
  • @JFernandez-WMF can create a design example and then move it into Ready

I added the designs for preferences - @ifried, @cmelo do we also need designs for the hide message in the dialog?

I believe the opt-out isn’t actually saved as a Preference, but as a user property or ConditionalUserOption [citation needed / I might be wrong].

From what I can see in the source, the opt-out is still saved as a user preference, Just, seemingly, not exposed on Special:Preferences. I do have thoughts on that, for example the fact, mentioned above, that it's not clear how you would opt back in. So, I agree with the idea of renaming the existing section of Special:Preferences and adding this one (although mind you, we could still use the preferences backend without exposing the checkbox there, which is unrelated to this not being per-event).

We discussed this in a team meeting, and @JFernandez-WMF will create a basic design to show the placement of the message in the post-edit dialog.

ifried renamed this task from Event discovery opt-out: preference, dialog link to user preferences, and not show modal if it is off to Event pathways opt-out: preference, dialog link to user preferences, and not show modal if it is off.Wed, Jun 3, 6:17 PM

designs added, moving to ready for dev cc @ifried :)

Just review the updated designs and commenting some feedback about the button's copy. As recommended in the Codex content guidelines, we should avoid language that implies visual skills to make the content accessible for everyone. So I recommend rephrasing the See event page button to View event page or Navigate to event page.

@bmartinezcalvo thank you <3! i don't think the designs are definitive yet (only the text about hiding the message is)-- so i'll change that!

designs added, moving to ready for dev cc @ifried :)

Just review the updated designs and commenting some feedback about the button's copy. As recommended in the Codex content guidelines, we should avoid language that implies visual skills to make the content accessible for everyone. So I recommend rephrasing the See event page button to View event page or Navigate to event page.

@bmartinezcalvo just noting that "View event page" is still a _visual_ verb and has the same a11y issue as "See event page".

@JFernandez-WMF i'm taking advantage of this note to also share a few spontaneous thoughts on copy:

  1. "You're already part of something bigger!"
    • this feels a bit too informal and vague. also "bigger" is idiom-adjacent and might be non-trivial to translate. something like Your edit is part of an ongoing effort might also help shorteing the text below.
  2. "The article you just edited is on the worklist for {Event}. Join the event to have your impact tracked and connect with other editors working on this topic."
    • i feel we're trying to pack possible too much in this sentence: explaining the situation, upselling joining events, and sharing benefits. also "connect with other editors working on this topic" are both long phrases with structural complexity - the passive construction in the first and the relative clause in the second will expand significantly in german, greek, or malayalam languages. something like This article is part of {Event}. Join to measure your impact and collaborate with editors on this topic. might work better.
  3. "You can hide this message in the future by going to your user preferences."
    • this sentence is explaining how to use the UI rather than doing something the UI can't do. something like To stop seeing this, update your preferences. where "update your preferences" links to the user preferences page. or Hide this message in your preferences. where "your preferences" is the link.
  4. "See/View event page" / "Cancel"
    • what about Join event so that we can make the main CTA more action oriented, alternative it could be Open event if we don't want to imply commitment.
    • Dismiss might be a better alternative instead of "Cancel" given that this is not a user initiated action. thou i'm also wondering if we need a Dismiss button given that we already have the X button.

@bmartinezcalvo just noting that "View event page" is still a _visual_ verb and has the same a11y issue as "See event page".

@AAlhazwani-WMF I know both are visual verbs, but to me "view" feels closer to "open" or "navigate to," whereas "see" feels more related to the act of visually perceiving (but ignore if it's not true since I'm not entirely sure about this distinction in English). In addition, i was proposing to use "View" since we already use it in other places like "View history".