Page MenuHomePhabricator

[EPIC] Build opt-in/opt-out mechanism for desktop improvements project
Open, HighPublic

Description

Description

Before making any changes to the desktop experience, we would like to ensure that users are able to opt-in and opt-out of the new experience

User story

As a user, I would like the ability to turn off the new experience so that I can go back to my old workflows

Designs

Acceptance criteria

States
Feature StatusOpt-out buttonSetting
Anon, test wikionnonenone
Logged-in, test wikionyes, button in sidebarlegacy vector toggle turned off
Anon, non-test wikioffnonenone
Logged-in, non-test wikioffnonelegacy vector toggle turned on
Main setting

For all logged-in users, a "legacy vector" setting will appear under skin preferences

  1. This setting will be "on" for test wikis and "off" for other wikis
  2. For users on test wikis using any skin other than Vector, no changes will occur (i.e. they will not be opted in)
  3. Setting copy: TBD
Opting out
  1. For all logged-in users who have the new experience enabled by default (i.e. logged-in users on the test wikis), an opt out button appears
    1. Selecting the opt-out button will display a modal with more information on the project
    2. Selecting to opt-out from the modal will take users to the appearance tab on the preferences page where they can turn it off
    3. Button copy: Turn off new look

Related Objects

Event Timeline

@alexhollender - seems like we have two options for logged-in users at least - display a modal that confirms they want to opt out and turn it off via the modal, or navigate them to their preferences page where they can turn off the setting. I think the first one is probably better, but the second option is what we use for page previews. Thoughts?

alexhollender renamed this task from Build opt-in toggle for desktop improvements project to Build opt-out toggle for desktop improvements project.Oct 23 2019, 2:30 PM

@alexhollender - seems like we have two options for logged-in users at least - display a modal that confirms they want to opt out and turn it off via the modal, or navigate them to their preferences page where they can turn off the setting. I think the first one is probably better, but the second option is what we use for page previews. Thoughts?

As we discussed the other day I think navigating them to the Appearance tab in settings will be sufficient. That way they also get to learn where the setting is located in case they want to switch it in the future.

ovasileva triaged this task as High priority.Nov 1 2019, 12:02 PM
ovasileva renamed this task from Build opt-out toggle for desktop improvements project to [EPIC] Build opt-out mechanism for desktop improvements project.Nov 1 2019, 12:13 PM
ovasileva renamed this task from [EPIC] Build opt-out mechanism for desktop improvements project to [EPIC] Build opt-in/opt-out mechanism for desktop improvements project.
ovasileva updated the task description. (Show Details)
ovasileva updated the task description. (Show Details)
ovasileva updated the task description. (Show Details)Nov 1 2019, 12:22 PM
ovasileva updated the task description. (Show Details)
ovasileva updated the task description. (Show Details)Nov 1 2019, 1:30 PM

ToggleSwitches should only be used in settings where instant effect is possible. Unlike AMC mode


we feature a “save” button on Special:Preferences and don't have instant saving ability. A checkbox is recommended here.

alexhollender updated the task description. (Show Details)Nov 4 2019, 6:26 PM
alexhollender updated the task description. (Show Details)Nov 6 2019, 5:11 PM
alexhollender updated the task description. (Show Details)
Demian added a subscriber: Demian.Jan 23 2020, 5:35 AM

Technical question: how will be the "Vector Legacy" skin and the new Vector separated?
Is it going to be a forked skin as suggested in T234907: RFC: Where to implement Desktop Improvements project Proposal 3?
Which repository will contain the old one? Will it be renamed to https://gerrit.wikimedia.org/r/mediawiki/skins/VectorLegacy, or the new one [[ https://gerrit.wikimedia.org/r/admin/projects/mediawiki/skins/VectorV2 | VectorV2 ]] (there is one already)? Or is it going to be a branch, which I assume would cause some difficulties to operators unfamiliar with git (branches).

Hi @AronManning! Per the outcome of T234907, development is already underway in Vector itself. My understanding is that this approach will allow us to minimize development costs. The existing experience (now called "legacy") will be carefully preserved via a user preference (the subject of this task) and feature manager.

The existing experience (now called "legacy") will be carefully preserved via a user preference (the subject of this task) and feature manager.

Thank you! I missed that part that a final decision has been made (confirmation bias on my part). I think the hard part in "carefully preserving" the legacy mode will be the branching in the code itself, while implementing the user setting is the easy part. I'd like to better understand the former. As I haven't yet seen how this will manifest in code, I have the superficial presumption this might turn into a lot of branches and a more intertwined code, on the other hand, if cleanup steps are also applied to the Legacy Vector, it might even be beneficial.

Could you, or somebody familiar with the commits link to code that shows how this branching is done in practice, so I can better understand?

@AronManning, I think a good place to start would be FeaturesManager.php in MobileFrontend and the contents of the features subdirectory. An example mode implementation would be the AMC UserMode (this class represents advanced mode on mobile--the name is a relic from when it was called Advanced Mobile Contributions) and an example feature would be the standard and advanced menus. More details in T242835.