I have an idea for an abstract generalization of the ban/throttle/ page protection concepts, unifying them in a single table with great flexibility. Details at the bottom, but first some quick motivation.
We have a proposal with some support, but also some strong opposition, for a rule that says that sysops can 24-hour ban people who break the (widely supported) 3 revert guideline.
I think it's safe to say we have strong consensus that the 3 revert guideline is a good guideline. What we don't have yet is consensus about what should be done about it.
My problem with it, and I think that this would be echoed by many who have reservations, is that a 24 hour ban is sort of a big hammer to use in cases like this.
I have some questions about the technical feasibility of some smaller-hammer ideas.
1. per-article bans -- this could be very useful in a number of cases, particularly now that we have an arbitration committee to divide up the work of studying such things.
2. per-article, per-person throttles -- this would be the technical application of the 3 revert rule, applied to individual people and individual articles. Basically, a sysop could put Wik (for example) into throttle-mode for a given article where he's committed a 3 revert violation, and after that Wik can only edit that article 3 times per day. This might push him to be more co-operative.
Or consider the DNA case. Pretty much all parties to the dispute, even those who were not guilty of anything bad could be placed, without stigma of "punishment", into throttle mode for that article.
3. per-article throttles -- for particular articles, instead of "protecting" it so that no one can edit, we could "throttle" it so that each person may edit it only 1 time per day. The idea is to slow down an edit war to allow people to calm down, and to keep everyone else from being bothered by an ongoing fiasco.
---
All of these seem fairly technically do-able to me. I'm especially keen on the latter two. (And suspect that the first one could be implemented as a form of the latter two, with edit_count set to zero.)
Here's a table to show what I mean:
Jimbo Wales - Oregon - 3 # Jimbo throttled on this article Jimbo Wales - Cats - 0 # Jimbo per-article banned * - DNA - 1 # everyone throttled here * - Judaism - 0 # same as protected Wik - * - 3 # Wik throttled everywhere Plautus - * - 0 # Plautus banned
Then, to find out if a user has permission to edit a given article, we just look them and the article up in the table, and see what the number is. If it's not there, then all is well, if it is there, then we have to make an additional check in the history table to see what's happened in the past 24 hours.
Obviously, it's easy for me to say that this is easy.
Jimmy-
I have an idea for an abstract generalization of the ban/throttle/ page protection concepts, unifying them in a single table with great flexibility. Details at the bottom, but first some quick motivation.
I'm all for more fine-grained solutions. What I propose is a compromise. *Until* we have these solutions, sysops should be allowed to use the privileges which they have *today*. Then those who do not like 24 hour bans have a motivation to lobby for implementing these solutions, or to implement them themselves. We would always acknowledge that 24 hour bans are not optimal.
In other words, I don't want to have to tolerate edit warring another month just because we don't get this implemented and tested until then.
Regards,
Erik
Jimmy Wales wrote:
Here's a table to show what I mean:
restr_user restr_article restr_num
Jimbo Wales - Oregon - 3 # Jimbo throttled on this article Jimbo Wales - Cats - 0 # Jimbo per-article banned
- DNA - 1 # everyone throttled here
- Judaism - 0 # same as protected
Wik - * - 3 # Wik throttled everywhere Plautus - * - 0 # Plautus banned
* - * - 0 # Mwahahahaa! ;-)
Seriously:
This smells a bit of database problems. In order to determine if someone can edit an article, you would have to:
- query this table you've suggested: SELECT restr_num FROM retrictions WHERE restr_user IN ('User Name', '*') AND restr_article IN ('Article title', '*')
- query both cur and old to see how often they have already edited it: SELECT COUNT(*) FROM cur WHERE cur_user=$userid AND cur_timestamp < $twentyfourhoursago AND cur_title='Article title' AND cur_namespace=0 SELECT COUNT(*) FROM old WHERE old_user=$userid AND old_timestamp < $twentyfourhoursago AND old_title='Article title' AND old_namespace=0
and then compare.
I'm not saying it can't be done, but I have my suspicion that this is going to slow things down even more.
Timwi
Timwi wrote:
This smells a bit of database problems. In order to determine if someone can edit an article, you would have to:
query this table you've suggested: SELECT restr_num FROM retrictions WHERE restr_user IN ('User Name', '*') AND restr_article IN ('Article title', '*')
query both cur and old to see how often they have already edited it: SELECT COUNT(*) FROM cur WHERE cur_user=$userid AND cur_timestamp < $twentyfourhoursago AND cur_title='Article title' AND cur_namespace=0 SELECT COUNT(*) FROM old WHERE old_user=$userid AND old_timestamp < $twentyfourhoursago AND old_title='Article title' AND old_namespace=0
and then compare.
I'm not saying it can't be done, but I have my suspicion that this is going to slow things down even more.
Timwi
Technical point of view: In Jimbo's proposal, an admin would explicitly flag a user for throttling.
Thus very few users would ever be throttled and all the querying you suggest would be inside a big if( is_throttled($userid) ), which is false for a massive majority of edits.
Practical point of view: The number of disruptive users is still relatively small. (There are only three users I would ban today if I were GodKing that aren't banned already). Speedy use of current technology and processes (Arbitration) would solve these issues.
Pete