A few people have convinced me to start work on a side project (My main project as always is ElectronicMe), an extension short discussion ended up calling PatternFilters.
Currently we have a number of blacklist extensions -- SpamBlacklist, SpamRegex, RegexBlock, UsernameBlacklist, TitleBlacklist, BadImagesList, BlockTitles, etc... -- and there is very little consistency among them. Some match plaintext and some match regexps. Some have a specialpage interface and some use a article page.
The idea of PatternFilters is a single extension replacing all of these with one extension founded around the singular principle all of these extensions share, Filtering (blacklisting and whitelisting) some part of user interaction using some sort of pattern. However other than just combining a mess of extensions together I hope to improve some other things. Primarily making the interface for filtering things more intuitive. Firstly, using a special page rather than a page on the wiki with cryptic syntax. And secondly, giving a helpful interface on that special page which helps give an estimate on what the filter will affect on the wiki. Just as an extra, it could easily validate a regex on it's own before adding it to avoid issues like with the other blacklists where a bad regex breaks the whole filter. As well the extension would properly support global/local modes.
For example, if you were to go to [[Special:PatternFilters]], select global, select blacklist, select regex, select 'block existing users', 'block user creation', and 'block title editing' with 'Restrict to namespaces' on User and User_talk, and fill in the pattern 'Fo+Bar' then hit the check button the page would help give an estimation on what the filter would do by listing out existing usernames which match that regex, and also existing pages which match it as well. Things like url backlisting would work nicely to with the externalinks table. For a little more ui simplicity I plan to support wildcards as well. The text blacklist of course can't go hunting through the entire DB, so rather than that it'll display a text field you can use to check and see if a filter will catch something inside a block of text, probably even highlight it. Also separate from url and title, comments could be blacklisted as well. Of course some checks are DB heavy, so there's a special right already in so you can disable use of those simply by not giving out that right.
Currently I only have a small special page but the start of it can be viewed at: http://svn.nadir-point.com/viewvc/mediawiki-extensions/trunk/PatternFilters/
I've also created some dev wiki dedicated to the extension (Don't want filtering experiments going awry on my demo wiki): http://spam.dev.wiki-tools.com/ http://zeta.spam.dev.wiki-tools.com/ http://omega.spam.dev.wiki-tools.com/
The number of wiki is for a variance in testing. The root spam.dev wiki is the one that is configured as the global db so I want to test out an interface change when you are editing the global db directly as a global db instead of pure local. zeta and omega are normal and so you can test global and local blacklists, probably add a global blacklist, whitelist on one wiki, and test something on both. Though I may tweak it and turn one of those into a local only setup to test the interface for that.
Currently there isn't much at all to test or do, but once the PatternFilter extension, well... filters ;) then I'll consider tweaking my right configurations on the wikis to allow people to grant themselves the check, heavy, immunity, global, and edit rights for the patterns.
wikitech-l@lists.wikimedia.org