Scenario
User Apples is being harassed by User Bananas
Definitions
- Mute: User Bananas can still preform any action, but User Apples never sees (or hears) the notification (web or email).
- Prevent: User Bananas cannot perform certain actions towards User Apples (email User Apples, Write on User Apple's talk page, etc.).
This issue is specifically to investigate muting T150419 globally T167902. Although, it is important to remember that preventing is already on the roadmap T138166.
Interface
User Apples should be given a page (or field(s) on existing page) to list out users. A interface was already added in T150419. For this issue, this should remain as-is T171624#3534281. However, it may be split out onto a separate page (for technical reasons). In the future it may become a matrix T171624#3534281 or separate lists T171624#3534782. Regardless, prevent is an escalation of mute T171624#3534010.
Implementation Options
- Global Preferences
- User list ought to be global-only T171624#3532227, because making them local-global raises a lot of questions and usability issues T167902#3471195. However, global-only preferences are not supported by T16950. We would have to increase the scope of T16950 to cover global-only preferences or resolve all of the issues raised in T167902#3471195.
- Expose List from Meta Globally
- User list would remain only on Meta and we would use the API to get the list T167902#3476640. Other wiki users would be directed to Meta to update their list.
- This data is currently available via the API (https://meta.wikimedia.org/w/api.php?action=query&meta=userinfo&uiprop=options) under the key echo-notifications-blacklist, however, when attempting to make the request cross-origin (https://meta.wikimedia.org/w/api.php?action=query&meta=userinfo&uiprop=options&origin=*) the user info is missing (I'm assuming this is for security reasons). We could use the API server-side, but I imagine we would probably want to create a proxy endpoint so the request can be made asynchronously?
- Create a new Global Database Table & Special Page
- We will need to migrate the data from the existing Echo user preference to the new table.
- Initially this will be in Echo then when T138166: Allow users to restrict who can send them direct emails via Special:EmailUser...
- Move the list to a new Mute/Prevent extension.
- Mute/Prevent extension will provide global table, special page, and use hooks to prevent users from performing core actions (i.e. send Email to another User). Other extensions (like Echo) will use the list extension however they want. In Echo's case it will 1) see if the extension is enabled 2) check to see if user is on the list before sending/display notifications.
- Move the list to core
- Will provide a global database table, special page, and we will modify core to work with the list. Extensions (like Echo) will work directly with the core list which is guaranteed to exist.
- Some wikis (like Office) do not have a need for a Mute/Prevent list so the feature isn't always necessary for every wiki. But any public wiki ought to have this feature.
- Move the list to a new Mute/Prevent extension.