Community health initiative/Partial blocks
This page documents a feature the Wikimedia Foundation's Anti-Harassment Tools team may build. Development of this feature is complete.
The Wikimedia Foundation's Anti-Harassment Tools team has completed the work on partial blocks. Sitewide blocks are not always the appropriate response to some situations. Smaller, more tactical blocks may disable situations while retaining constructive contributors. The goal of this project is to give wiki administrators a firmer set of tools to be able to better respond to different user conflict situations.
Please discuss this project at Talk:Community health initiative/Per user page, namespace, and upload blocking!
Types of blocks
No functionality will change for sitewide blocks. All existing blocks will remain in place and the ability to block troublesome users from the entire wiki will remain as-is. In addition to sitewide blocks, we would like to introduce the ability to block a user from:
- Editing one or more specific page(s)
- Editing all pages within one or more namespace(s)
- Emailing other users
These types of partial blocks could be useful when:
- An otherwise productive user has an agenda on a particular topic (e.g. politics, religion, etc.)
- There is sustained vandalism to one page from an identifiable IP range (e.g. students from one sports team vandalizing pages about a rival team.)
- Two or more users have been sanctioned with an interaction ban
- A user abuses the Email User feature but is otherwise productive on-wiki
- A user makes ill-advised edits to templates
These partial blocks would work similar to sitewide blocks:
- Can be set by administrators.
- Can be set for usernames, IP addresses, or IP ranges
- Will include standard block parameters: reason, expiration, talk and subpage inclusion, and the option to autoblock IPs.
- Will appear on the block log, Special:BlockList, and everywhere else sitewide blocks appear.
- When a user has been blocked, they will see a block message displayed that explains what they are prevented from editing in addition to the rest of the block information (the admin who blocked them, when the block expires, the block reason, and how to request an unblock.)
May 7, 2020
The AHT team is going to dedicate some time towards adding feature to partial blocks. There is an open question about this on the talk page. Your thoughts would be much appreciated.
February 20, 2020
Partial blocks have been enabled on all Wikimedia wikis. Thank you to everyone who has helped this project along.
Partial blocks have been asked for more and more wikis recently. In light of that, we are ready to enable partial blocks across all wikis. This deploy will happen in the week of January 6th for most projects (unless your project has already requested more time for discussion). If your project wishes to opt-out of this deployment, please reach out to us – User:NKohli (WMF) or User:SPoore (WMF) on the talk page. We strongly encourage you to try the feature out before deciding whether it serves the needs of your project or not.
Partial blocks has been enabled on all wikivoyage, wikisource and wiktionary wikis. We think the partial blocks feature is at a good, stable stage now as we have seen fewer and fewer bugs come up in the last few months of the feature being deployed on various projects. The team has spent a lot of time in improving the backend infrastructure of block code and made sure that the code is reliable, in anticipation of any future features that may need to be added.
There continues to be requests from more wikis for partial blocks. We also presented about partial blocks at Wikimania and it was very well-received, with several attendees asking for partial blocks to be enabled on their home wikis. In light of the general positive reception to partial blocks on wikis where it is deployed, we are planning to do a wider deployment to more Wikimedia projects in the next few weeks.
We will continue to collect feedback about partial blocks as we launch the feature on more wikis, alongside data collection on usage of the feature. We are also around to do maintenance work on the features, as and when needed.
Partial Blocks are now live on Arabic Wikipedia, which means they fully support non-Latin languages and RTL languages. Partial blocks is ready to enable on any language Wikimedia wiki (except Wikidata.) 🎇
We're looking for users who want to represent their wiki to enable this feature. Please leave a message on the talk page if you would like to help. Thank you!
Namespace blocks are live! 🚀
There are some minor fixes and changes we'll be working on over the next few weeks, but the next major stage for this project is to release to more wikis so we can observe how effective they are at mitigating user misconduct, and to get feedback about any changes we should make. Specifically, we are seeking to understand:
- What is an appropriate limit of the number of pages a user should be blocked from? In the first version limit is 10, but it can any number.
- How should partial blocks be logged to allow for accurate and specific logging while keeping the logs easy to read? Currently they are being logged comprehensively in the block log.
- Should a notice appear when someone edits the user or user talk page of a partially blocked user? Currently, a notice only appears if the user cannot edit that page (e.g. a user is blocked from their own user page)
- What features are missing that need to be built?
If you would like to have this functionality on your wiki to combat harassment, vandalism, or other forms of user misconduct, please let us know on the talk page.
As upload blocks will require additional database changes (which requires months of advance notice and planning) we will first complete page and namespace blocks before deciding to pursue upload blocks.
January 16, 2019
Today we reached another significant milestone! Partial Blocks have been enabled on Italian Wikipedia and the local wiki administrators are setting partial blocks to combat vandals! A big congratulation to my team for working through the inner guts of MediaWiki and all its processes to make sure we have a safe and reliable blocking tool. 🎉
If you would like to test the functionality, it will forever be available on http://test.wikipedia.org/wiki/Special:Block (write us if you need admin privileges.) We're already talking to two other languages of Wikipedias about being testers — if your wiki would like to test please write on our talk page!
As 2018 draws to a close, our team is putting the final touches on Namespace blocks. This functionality should be ready in January on Test Wikipedia and on the non-English Wikipedias that are eager to adopt this new functionality. Our plan for early 2019 is to release to several wikis and make changes based on what problems and opportunities arise. We'll also build the ability to block a user from uploading files, creating new pages, and renaming pages.
Meanwhile, our team's analyst is analyzing data on the effectiveness of blocks. These measurements should help us better understand how many blocks are effective at stopping continued abuse to the wiki or its community members. We expect this data to show us if partial blocks are as effective as sitewide blocks and hope this data can inform the governance policies for when to levy blocks and block lengths.
Our team is still working on addressing the final defects before we enable Partial Blocks on Italian Wikipedia. We're optimistic that we can hit this milestone next week! In the meantime testing is still available on Test Wikipedia and Test Wikidata for users interested in taking a look at what's ready so far.
We're also confident that we can get Namespace blocks to a near-ready state by the end of December, before we break for the winter holidays. That functionality should be ready on Test Wiki in January.
We have a handful of bugfixes and feature enhancements to release this week! This list explains everything that's changed. In short, these changes will make Partial Blocks only affect exactly what is listed in the block set by the admin, as we originally intended. All changes will be available on http://test.wikipedia.org by Wednesday of this week.
With this set of changed we feel confident in the stability and functionality of the feature. We are working with Italian Wikipedia to look-over the functionality on Test Wiki before they adopt the feature and integrate it into their user mediation workflows. If any other wikis are excited to use this functionality, please let us know and we'll begin working with you!
Meanwhile, our devs are also working on implementing Namespace blocks. We hope to have them completed in the coming weeks.
This first feature set is limited: admins can block an user or IP from editing up to 10 specified pages. There are some known defects that we're currently working on (for example, if an admin is partially blocked from a page they can't delete any page.) and we'll get back to building namespace and upload blocks in later November.
If you're testing partial blocks we'd love to hear from you! Drop us a note about your experience with the tool. We're looking specifically for feedback about:
- What is an appropriate limit of the number of pages a user should be blocked from? In the first version limit is 10, but it can any number.
- Are you satisfied with how partial blocks are logged?
- Do we need to change anything that has already been built?
- Is the warning message in the VisualEditor too gentle?
We're making significant progress on Partial Blocks and are nearly live on production wikis. We hope to have a functional version on test.wikipedia.org and test.wikidata.org in the coming weeks. We're very excited to share it with you!
While the devs put the final touches on the first version, others on our team are currently thinking about how we want to measure the effectiveness of blocks. We're asking ourselves (and anyone who will listen) questions like "Are blocks effective at stopping harm? Do users who are blocked return to make constructive edits? How do we measure this?" — if you are interested in discussing this topic, we have a 7 proposed measurements and commentary on why we selected them at the other project page.
As part of this, we've generated some data on how frequently blocks are set (did you know there are currently 3.4 million active blocks?) and pages are protected (~20,000 pages are currently protected) to better understand the scale of administrative actions.
We have a fourth round of designs, based on feedback from our second round in June. Here are the two new designs, detailed UI element views can be seen in the gallery below.
What Special:Block will look like after this change.
A partial block configured.
Our team is nearly ready to release the first feature set of partial blocks — the ability to block a user from ≤10 pages — on the beta environment then test.wikipedia by mid-October. We are talking with some early opt-in wikis to test the functionality, please let us know if your wiki would be interested in utilizing this functionality, which also gives you a great opportunity to dictate the future of this project!
In other news, due to technical complexity, we have decided to de-prioritize multiple blocks and remove it from this project. I've moved the documentation here. This small amount of functionality would take a very large amount of time to build and we first want to make sure page, namespace, and upload blocking work as expected and actually produce meaningful impact. We'll have another round of designs soon and we look forward to delivering a great partial blocks feature in the coming months!
We have our third round of designs almost ready and we want to share them now before we go too far without validating our direction. These designs include functionality to view details about multi-blocks. Because of this change we need to introduce a new piece of information during the blocking process. This led us to the idea of a block modal window, which can theoretically appear on any page — a diff page, recent changes, a profile, etc. This would allow an admin to block a user without having to navigate to another page. Here is how it would work:
// designs redacted, moved on Multi-blocks subpage. //
Based on conversations on the talk page, in person at Wikimania last month, and on the TechComm RFC for this project our team has decided to merge the project of multi-blocks into Partial Blocks. The goal of multi-blocks is to allow admins to set multiple concurrent blocks against an account with independent expiration dates, decreasing the manual workload on administrators. Example use cases for multi-blocks include:
- User:Apples has been indefinitely blocked from editing
Neptune. They then receive a 24 hour full-site block. When the full site block expires, they should continue to be blocked from
- User:Bananas is indefinitely blocked from editing
Marsand from editing
Venusuntil 2025. An admin wants to block them from
Saturnfor one month.
- After User:Carrots has violated a wiki policy, an admin wants to set both an indefinite block against
Plutoand a 24-hour sitewide block at the same time, without having to write a self-reminder to update the block.
This will require changes to Special:Block, Special:Unblock, Special:BlockList, and Special:Contributions. We are working on another round of designs (with minimal changes from the last round) which we will post on this page next week. Work for multi-blocks will be tracked in Phabricator at phab:T194697. Our TechComm RFC can be found at phab:T199917 which includes all our proposed database changes and other technical implementation details.
Most feedback we’re receiving at this stage in the project is about one hypothetical — yet entirely likely — workaround a malicious user could exploit to their advantage: a user using a temporary sitewide block to erase (and therefore evade) an indefinite partial block. This could be resolved with manual solutions (e.g. calendars and reminders to reinstate the partial block) but this is inconvenient and interruptive to your workflows and prone to human error. It’s clear that we need to determine a solution to prevent this abuse before Partial Blocks releases to most wikis. There are a few ways to do this and this can get pretty complicated, please help me determine which system we should build:
- Option 1 – Re-blocks
Description: If an admin escalates a partial block to a sitewide block and the expiration date for the sitewide block is shorter than the previous partial block, the admin should have an option for the block to revert to the previous partial block parameters when the sitewide block expires.
Example: An admin blocks User:Apples from editing the page Argentina for 9 months. The same day, an admin modifies the block to Argentina and Bahamas for 8 months. The same day an admin blocks the user from the entire site for 7 months. After 7 months, User:Apples would be blocked from Argentina and Bahamas for 1 more month, after which the partial block would be entirely expired.
This change would only require adding one additional option into the Special:Block UI when a block is being modified.
- Option 2 – Multi-blocks
Description: Admins should be able to set different expirations for different elements of a block.
Example: An admin could block User:Bananas from editing Argon for 9 months, Boron for 8 months, and sitewide for 7 months. After 7 months, the user would be blocked from Argon and Boron and after 1 more month the user would be blocked only from Argon. After 1 more month the partial block would be entirely expired.
This change would require a more significant change to how blocks are currently logged and managed on Special:Block, Special:BlockList, Special:Contributions, and Special:Unblock. Users can be partially blocked from an unlimited number of pages, meaning every page could hypothetically have a different expiration, which could lead to some complicated situations.
- Option 3 – Something else!
We’d love to hear more alternate proposals. Please discuss on the talk page.
For all options it should be possible for an admin to clear all blocks from an account, leaving it entirely unblocked. This will most likely be a change to Special:Unblock.
Join us on the talk page to let us know what you think!
The banner has been disabled because of the delayed code release to major Wikipedias. We aim to re-enable it on all wikis from July 30 to August 3.
From today until Monday, July 23 we will be running a banner on Special:Block to invite administrators to visit this wiki page to read about this project and to provide feedback on our designs. If that banner brought you here, welcome!
This project was slightly delayed due to other interruptive work and unfortunately will not be demonstrable by Wikimania. The entire Anti-Harassment Tools team will be at Wikimania in Cape Town next week, so if you are attending please find us and discuss this project!
We are optimistic to have a functional version of this in early August. We're still planning to build it according to the designs in the June 28 update.
During the last week on July, we will post a banner on Special:Block inviting people to visit this page to learn about our changes. We anticipate a lot of people will join the discussion. Welcome!
We will also be holding a technical RFC in the coming weeks to make sure our architecture decisions are agreeable.
June 28, 2018
This project is currently in development and we hope to have a functional version ready by mid-July to demonstrate how this would work for further feedback. We anticipate a mid-August release to test wikis and will soon be looking for a wiki to try this as a pilot.
We have a new series of designs to share. We believe these should address most feedback we've received over the past month.
Our most recent design, as of June 28, of how we will change Special:Block to allow for administrators to block a user from parts of the site instead of a sitewide block. This is the default view.
Special:Block, showing how an admin could set the details of a partial block. On wide monitors, the block log will be displayed to the side of the options.
A partial block with several pages set
Type-ahead suggestions for namespaces
Type-ahead suggestions for pages
How a partial block will look and function on Special:BlockList
Notes about these designs:
- The first mockup shows the checkboxes for 'upload files' and 'moving pages' as unselected. This is an error we will fix in our next round of designs.
- The dropdown for Reason will display as wide as it needs to, based on the customized list on every wiki. It will function as it does today.
- We plan to add in ajax loading for the block history table, which will display under the tool on small monitors or to the right of the tool on wide monitors for LTR wikis.
Previous updates have been posted on the talk page, but moving forward we will provide updates directly here. Here is a summary of the project to date:
- We believe it makes the most logical and practical sense to build this functionality on top of Special:Block as opposed to a new tool, as it shares nearly identical mental models, workflows, and user experiences. We understand that most blocks will be sitewide so the default workflows will be optimized to not interrupt current usage. All changes we make will be additive to existing functionality.
- We have decided to put blocking by categories on hold as it poses some complicated challenges. We will ensure page, namespace, and upload blocking are satisfactory and are achieving the goal of allowing communities to set appropriate sanctions to keep troublesome users productive yet distanced from areas where they cause problems.
- It has been suggested that we abandon this project altogether. Our team, the Anti-Harassment Tools team, strongly believes this will be a useful tool to address situations and we acknowledge this needs to be released to wikis delicately as it will alter how sanctions are set. We do not believe partial blocks will be appropriate for all situations, in some cases socially enforced sanctions may still be needed.
- On Special:Block, add a radio button to select setting the block as sitewide vs. partial.
- When a block is saved with the
sitewideradio button selected, the block should behave exactly as it does today.
- If the
partialradio button is selected, the admin should be able to provide a list of pages and/or namespaces:
- If an admin specifies page(s) to block:
- Page blocks can only be set for existing pages, with validation required in the input field.
- An autosuggest should help the admin find the correct page.
- Pages can be from any namespace
- If a page is moved or deleted, the user should still be blocked from editing that page (i.e. block by page ID, not page name)
- If an admin specifies namespace(s) to block:
- The input field should only accept valid namespaces, with validation required in the input field.
- An autosuggest should help the user find the correct namespace.
- If an admin specifies page(s) to block:
- Help tooltips should display for the new fields
- Block log entries on Special:Contributions, Special:Block, and Special:Log should be indicate if the block is partial:
- Log for sitewide blocks should not change.
- Log for page blocks should include
TIMESTAMP Admin-who-blocked (t|c|b) blocked BadApples (t|c) from editing the page(s) Foobar with an expiration time of N (reason) (unblock | change block)
- Log for namespace blocks should include
TIMESTAMP Admin-who-blocked (t|c|b) blocked BadApples (t|c) from editing the namespace(s) Foobar with an expiration time of N (reason) (unblock | change block)
- Log for both page and namespace blocks should include
TIMESTAMP Admin-who-blocked (t|c|b) blocked BadApples (t|c) from editing the page(s) Foobar and namespace(s) Foobar2 with an expiration time of N (reason) (unblock | change block)
- The block should be listed and annotated on Special:BlockList, per the designs
- When a user attempts to edit an applicable page, they should see a new type of block warning message using a new string key which include information on their block (reason, expiration, etc.)
- If a partial block is set, the checkbox for
Prevent this user from editing his own talk page while blockedshould be marked as disabled
- The Block API should be updated to support all partial block functionality
- Sitewide blocking via API should not change
- API documentation should be updated
- If a partial block is set via API, invalid pages and namespaces should be ignored
Our most recent design, as of September 24, of how we will change Special:Block to allow for administrators to block a user from parts of the site instead of a sitewide block. This is the default view.
Special:Block, showing how an admin could set the details of a partial block.
A partial block with several pages set. (Some details are slightly outdated in this design.)
Type-ahead suggestions for namespaces. (Some details are slightly outdated in this design.)
Type-ahead suggestions for pages. (Some details are slightly outdated in this design.)
How a partial block will look and function on Special:BlockList
Previously, this project aimed to build the ability for admins to block a user from editing all pages inside a category. This has been put on hold until we build page, namespace, and upload blocking. Category blocks pose unique challenges that need to be addressed before we proceed with development:
- How do we handle categories that may be on the Talk Pages of applicable article pages?
- How many sub-categories deep should the category blocks apply?
- How to address situations where a user may use a sock to remove a category from a page and therefore change their own block?
- Will this introduce a speed performance drag on the user experience?
Functionality for setting more tactical types of blocks has been requested in:
- The 2015 Community Wishlist Survey/Moderation and admin tools#Enhanced per-user / per-article protection / blocking
- The 2017 Community Wishlist Survey/Anti-harassment/Per-page user blocking
- Phabricator ticket T2674 since 2005.
- This was also discussed in our wider Community health initiative/Blocking tools and improvements on-wiki consultation in late 2017 to early 2018.
In addition to simple per user blocking, the Foundation's Anti-Harassment Tools team would like to support the work done by volunteers who set, monitor, and enforce editing restrictions on Wikimedia wikis, as well as building systems that make it easier for users under a restriction to avoid the temptation of violating a sanction and remain constructive contributors.
The Editing restriction page will be used to collate and share ideas about implementing tools to make this work more accurate and more efficient. Join us on Talk:/Editing restrictions to discuss the problems encountered today that could be addressed with tech solutions.