User:Crazycomputers/VandalSniper

VandalSniper is a counter-vandalism tool that focuses on automating the more tedious aspects of RC patrol. It started as a featurewise port of VandalProof to Mono/Gtk#, with the goal of bringing a native RC patrol tool to the Linux desktop. Some of the highlights of VandalSniper include:


 * Unlimited browser tabs.
 * Uncluttered, resizable UI.
 * Changes listed on the Recent Changes tab display various characteristics of the edit, which can be used to locate likely vandalism.
 * User links are annotated with a red link that will display a menu of common user-related tasks.
 * Edits of blacklisted users are displayed in realtime.
 * Similarly, edits to watchlisted pages are displayed in realtime.
 * Cross platform. (Theoretically at least. Linux is the only OS known to run it, but Microsoft Windows should support it soon.)

For my benefit, and that of interested people, I periodically make development notes on my blog.

If you like you can look at the Revision History.

Download
Revision 63 (sig) is available for beta testing. You must request authorization before using VandalSniper's rollback features, but you can use it without this feature before requesting authorization to make sure that it will work on your system.

At this point, VandalSniper will not run on Windows.

It has been tested on Debian Etch, and should be usable after running. Leave a message on my talk page if you cannot get it to work, and please note your system information.


 * I have been using libgecko2.0-cil 0.11-3 and VS 59 for several weeks now and have experienced no problems with this crash, so the problem may have been fixed. If you experience this issue please leave a note on the VS talk page.
 * Debian users: A bug has been discovered in libgecko2.0-cil 0.11-3 (or possibly libxul0d) in etch and sid that will cause VandalSniper to crash shortly after displaying the main window. This has been reported to Debian and confirmed by one of the maintainers . In the meantime it may be worked around by installing libgecko2.0-cil 0.11-2 and , and running   to prevent apt from updating this package later. (This can be undone by running  .)

In theory it will run on Mac OS X, but there are no prebuilt Gtk# packages for OS X so you will either have to compile your own or wait for someone else to package them.

System Requirements

 * A Common Language Runtime and the .NET 2.0 corlib.
 * Both Microsoft's runtime and Mono should work.
 * GTK+ >= 2.6.
 * Gtk# >= 2.8.
 * Gecko Runtime Engine.

Why a port, why not help with VandalProof?

 * VandalProof is a Visual Basic 6 project. While that is okay, I find VB to be a very limiting language. VandalSniper is written in C# and should be very maintainable and flexible. (Assuming that I write maintainable and flexible code, that is.)
 * As it targets the .NET Framework, it will automatically be available for Microsoft Windows, Linux, and Mac OS X, as well as any other operating system with a .NET runtime and a port of Gtk#. Not all Wikipedians use Windows!

Does VandalSniper require a similar approval process to VandalProof?
Yes, it does. See here to apply.

The basics
Roll back bad edits and apply a warning to the editing user with one click.

IRC feed
Much of VandalSniper's functionality comes from monitoring browne's recent changes IRC channel.

Unified lists
All of the lists that display realtime edits (RC, sniper, and watchlist) display several visual cues:
 * A bold username indicates an edit that you have not yet reviewed.
 * A struckthrough article name indicates that the article has since been edited by a different user that the user listed. (It does not necessarily mean that the article was reverted, but more often than not this is the case.)

User-friendly UI

 * Familiar browser navigation bar.
 * Browser tabs; the action buttons will operate on the selected tab.
 * Resizable interface elements.

Intelligent diff clues
When the recent changes list is refreshed, VandalSniper will examine the diff of each change in the background and will display various characteristics of the diff:


 * A:n - n new lines were added to the article.
 * R:n - n lines were removed from the article.
 * R:n! - n lines were removed from the article, and no context lines were seen. This usually indicates article blanking.
 * C:n - n lines were changed.
 * P:n - Added content contains n words of profanity.
 * S:n - Added content contains n words of slang commonly used in vandalism.
 * L:n - Added content contains n external links.

This information can help locate vandalism quickly. For example, if the only information displayed is "R:38" you can be reasonably sure that an article or a significant portion of one was blanked.

Of course, you will still need to investigate each edit as it may not be vandalism. This information only serves to indicate possible vandalism.

Sniper
If you suspect someone of being a serial vandal you can add them to a "hitlist." VandalSniper will monitor the users on this list while you are doing something else, like browsing the recent changes list. If any of those users makes an edit, VandalSniper will display a subtle visual cue of this and you can inspect these users' latest edits at your convenience.

Watchlist monitoring
Similar to the sniper, your watchlist will be monitored, and any changes brought to your attention.

In-browser user links
References to users in the text of the page being viewed are annotated with links that look like this: [VS]. These links will pop up a menu that lists various actions that can be taken on that user. If desired, these links can be hidden.

Possible features
Some ideas would be cool, but would require a lot of resources to pull off.

Coordinated monitoring
All VandalSniper users would be coordinated by some server (or using a decentralized network) to ensure that no two VandalSniper users see the same changes. This would reduce race conditions where one user starts a rollback-and-warn procedure, and someone else performs the same action later, resulting in two warnings to the user. It would also expand coverage of changes, allowing more changes to be monitored.

The coordination could allow a certain amount of redundancy, so that each change is sent to two VandalSniper instances instead of just one, to better cover the list; it's always possible one user might miss vandalism.


 * AmiDaniel is implementing an IRC-based "worktogether" system in VandalProof. He has been receptive to the idea of a compatible implementation in VandalSniper, which would allow VP and VS users to join forces. (Users of this system will be required to register for VandalProof, in addition to VandalSniper.)

License
This license is simple and to the point.


 * 1) I wrote it. Don't claim that you did.
 * 2) You are granted the right to use this software on as many systems as you desire, and distribute unmodified copies to anyone, on any medium. All other rights are reserved.
 * 3) There is no warranty, express or implied. I am not responsible for any damages that might occur as a result of using this software. You use this software at your own risk.
 * 4) You may not modify, disassemble, decompile, or otherwise reverse-engineer the software. You may not attempt to bypass the user authentication system that protects access to the rollback features.

VandalSniper is &copy; 2006 Chris Howie.

Screen shots

 * 2006-06-02 12:14 EDT - After close to six or seven hours of straight development, the browser functions are nearly done!
 * 2006-06-04 12:13 EDT - RC list is populated from RSS.
 * 2006-06-05 16:36 EDT - Redesign of UI, fixed some small UI glitches. Contributions tab is functional.
 * 2006-06-06 18:16 EDT - Intelligent diff check, UI tweaks.
 * 2006-06-18 03:52 EDT - Patched and implemented jscall library. This screenshot demonstrates the library in two ways; see if you can spot them!
 * 2006-07-07 03:28 EDT - Added popup links following user names.

Userbox
And now, a nifty little box to put on your page!

Code: