User:Titoxd/sandbox/CVU FR task force

Here's some plans about a "First Responders" task force for the Counter-Vandalism Unit, and some ways how to implement that task force.

Analysis of current IRC-based system
While the current IRC-based system can definitely be improved, one has to consider its strengths, and try to maintain it, and its weaknesses, to try to address them.

Strengths

 * Real-time monitoring
 * Real-time communications between users monitoring RC feeds

Weaknesses

 * IRC is not available for everyone
 * IRC occasionally carries negative connotations in Wikipedia
 * Perceived lack of on-wiki control of system

WT:CVU concerns
The discussion at Wikipedia talk:Counter-Vandalism Unit and subsequent sections has identified the following concerns:
 * Simplicity is desired for users who want to perform "drive-by cleanup" of vandalism
 * A listing of currently-active members of the CVU is desirable
 * Real-time, or near-real-time communications need to be retained
 * First Responders task force's notification list needs to be separate from CVU membership
 * IRC communication not needed

Proposal
After weighing all of the points above, I've come up with a hybrid system that can maintain all the functionality of the current system, extend it seamlessly to the wiki, and enhance both.

The main features of this system will be a membership list similar to a relational database. Using the concept of unique keys, every single member will be identified primarily by his or her Wikipedia username. Additionally, his or her IRC hostmark may optionally be entered, to enable use of IRC-based features. Additional optional fields can be entered for future notification options, but the only field that is required is, again, the MediaWiki username.

If the user has not read a Wikipedia page in a certain amount of hours, as determined by Javascript, the user is displayed a prompt similar to the "You have new messages" notification upon the next page read. Said prompt asks the user if he or she wishes to be displayed as "available" for FR communications. If the user says "No", then he or she will appear to be offline to the system. If he says yes, then he will be logged into the system. If he says "Yes, but show me as away/busy", then he will be logged in, with a flag attached to his or her username on availability lists. (See below for more details.)

If a user has logged onto IRC, identified with NickServ, and received his or her hostmark, then he or she just needs to join the #cvu-en-wikipedia channel (or another channel to be determined) to activate IRC features. This channel will be used essentially as a discussion hub, and to track IRC logins from users who have entered hostmark information into the member table. No RC feed bots will be reporting output on the channel; instead, existing channels will be used to monitor the RC feed.

The IRC bot in the central channel will use logins and /away information to feed information onto the same availability lists as the on-wiki method.


 * Availability lists

These lists are the core of the task force; in these, the usernames of members online, unavailable and offline are displayed. The IRC and on-wiki logins will be populated by a bot, and will be publicly viewable in a semi-protected page.

For an available user, his or her table entry will look like this:

The first column will contain the username, and the second column will contain other relevant information. That information could be whether a user is on IRC, whether a user is an administrator to perform deletion and/or blocking, or whether a user is a CheckUser or Oversight for more specialized tasks. The IRC information will be opt-in, and the rest can be populated from Special:Listusers.

If the user is online, but not available, then his or her table entry will look like this:

Primarily, the only change will be to change the color of the table entry.

If the user is offline, then the table entry will change color once more:

(In all cases, I am using to indicate an empty space.)

While it is desirable to maintain the connection between IRC hostmarks and usernames, it can raise a few privacy concerns. As a result, it is better for those to not be available by default on-wiki. An adequate place to put those, as well as the rest of the member information, is in the Toolserver, which also has support for a proper relational database back end. Having toolserver support would allow for a more sophisticated on-wiki login system as well.
 * Member list

That said, the member list needs to be visible on-wiki. The same bot that updates the availability lists can update the member list at periodic intervals, without entering "sensitive" information.

As the primary method of identification would be the MediaWiki username, registration would have to be done on-wiki. The process would be similar to the #vandalism-en-wp confirmation process, with the bot updating its database and clearing the page, and an administrator deleting the page after the Toolserver database is updated.
 * Registration

To remove oneself from the membership list, the same would have to be done, but in a different "unsuscribe" page.

There are two ways to update status: by logging to the IRC channel mentioned above, or by using an on-wiki login system. The on-wiki login could be used automatically via StatusBot, with "busy" tags being placed manually by the user upon his or her wish.
 * Updating status