Discussions on the checkuser list (which is Wikimedia-wide) suggest that an all-project blocking mechanism would be very useful in keeping our more persistent vandals from hopping from project to project, wreaking havoc. This happens quite a bit.
A variant of Wikia's regex block would be a likely candidate for a useful implementation.
One detail it would need (in some coder's Copious Free Time) would be an option to unblock a globally-blocked IP or range locally. (One use case would be a local ISP which has several good editors from a small project, but has open proxies or similar that are a source of vandalism on many other projects.)
Presumably such a global block would only be available to stewards, on due consideration.
Before anyone starts coding - what are the devs' thoughts on a global blocking mechanism? What could go badly wrong?
- d.
On 1/31/08, David Gerard dgerard@gmail.com wrote:
A variant of Wikia's regex block would be a likely candidate for a useful implementation.
I'm not sure if regexes would really be necessary. What's wrong with regular CIDR ranges?
Before anyone starts coding - what are the devs' thoughts on a global blocking mechanism? What could go badly wrong?
The main problem with global blocking is not really that it requires SUL (although that could help with blocking a single USER wikimedia-wide), but that it requires messing around with creating a new database. It's not really a problem -- just an annoying "gotcha" that a lot of people aren't willing to mess around with.
Presumably, we would maintain some sort of local exception list, which could be maintained by local administrators, in order to satisfy the requirement you specified.
On Jan 31, 2008 10:35 PM, Andrew Garrett andrew@epstone.net wrote:
On 1/31/08, David Gerard dgerard@gmail.com wrote:
A variant of Wikia's regex block would be a likely candidate for a useful implementation.
I'm not sure if regexes would really be necessary. What's wrong with regular CIDR ranges?
The regex part is for usernames, not IPs. It's especially used for blocking people who troll by using inappropriate names like "Werdna Sucks". Even without a shared user database, that can be useful.
Angela.
On Jan 31, 2008 6:46 AM, Angela beesley@gmail.com wrote:
The regex part is for usernames, not IPs. It's especially used for blocking people who troll by using inappropriate names like "Werdna Sucks". Even without a shared user database, that can be useful.
That's implemented per-wiki using the Username Blacklist extension. I think per-wiki is probably better in this case than global -- different projects are likely to have fairly different naming policies, and also most of the wikis are non-English. Of course you could have global plus local, but I don't know how much more useful that would be than currently, i.e., if it would be worth the developer effort and user-end complexity. (One more thing for stewards to maintain a request list for, one more thing for sysops on wikis to have to know about, one more possible cause of conflict between Meta and local communities.)
A global IP block would certainly be useful. Currently stewards would have to sysop themselves on every project in turn, block, and de-sysop, if they want to do a global ban. This makes me wonder, though -- would it be better to have a separate global database of blocks, or just add an ordinary block to each project's block list? I don't know if there's any gain in distinguishing between global and local blocks on the backend. If you do it this way, local sysops will be able to view, unblock, and adjust the block just like any other block, and not have to use any kind of separate interface or who knows what. Some issues:
* The global block list still has to be tracked separately somewhere, so that new wikis can be initialized with it. * You would have to have an extension able to access and modify all other wikis' databases. That shouldn't be a problem, I guess, since some already do (like changing rights for foreign wikis' users). * Global unblocks need to be able to distinguish between ordinary and global blocks, since they should undo the latter but not the former. This one is a bit tricky, since it's not clear how an extension could store metadata in a preexisting log. * The current logging mechanism sucks, and probably won't be able to cope cleanly with actions taken by off-wiki users. But come on, it should be improved anyway. It's ridiculous to have no log entries allowed by anyone other than locally-registered users (no foreign users, no fictitious users, no anons). This is also moot when SUL finally arrives, real soon now. * Arguably, global blocks *are* different from local blocks, and should be treated as such. But this is only plausible to a point. Users don't care whether they've been blocked locally or globally, and sysops don't have to care either, since the procedure for unblocking would be the same. Users who have been globally blocked likely want to approach local sysops first, not stewards, because local sysops more likely speak their language and are more familiar with local blocking policy (which may differ from global policy).
Advantages:
* Increased local interface simplicity: no need for local sysops to learn about Yet Another New Feature. Everything's straightforward: you just have a block like any other, except it was made by someone who is (visibly) not from the current wiki. This includes only having to check one block log to establish the reason for a block, only having to maintain one interface message for blocks -- which isn't inappropriate, because in any case you're probably going to want to discuss with local sysops first, not the stewards -- only having one interface to unblock, and so on. * No special unblock, logging, or other local interfaces need to be written, since they don't exist. The only code that needs to be written is to make a new local database for one project (Meta), and some code to add or remove a special sort of block to/from many databases at once. This would basically be a single special page extension, instead of multiple ones probably needed for the alternative implementation: one to institute or remove a global block, one to view global blocks locally, one to institute a local exception.
I think the implementation issues here might be greater, but the interface and concept would be considerably cleaner. But that's just my opinion, which isn't particularly important, since I'm not about to write the thing.
wikitech-l@lists.wikimedia.org