This is the result of some pondering on IRC, regarding a form of 'properly democratic' channel management. The original idea was by Alenik; I just bashed together this document to describe how I think it would be implemented.
The only person on the access list, if there is one, and with channel operator privileges, is the service bot. Every other user must, for channel administrative actions, call for a vote via the bot.
Upon a vote being called, users (Other than the user who called the vote) may perform one of three actions:
- Agree with the action to be performed.
- Disagree with the action.
- Abstain from voting (i.e. Do nothing.)
For a vote to succeed, and the action be performed, the number of users agreeing with the action must exceed both the users disagreeing with the action, and a minimum threshold; failing otherwise.
This threshold varies as a function of the amount the vote-caller is trusted, and the number of users in the channel.
Only users who have been in-channel (Alternate nicks, hostmasks, etc must be tracked), and active, for more than a certain amount of time (e.g. 3 days) are counted in votes; to reduce the probability of attacks using multitudes of bots to influence votes.
(That is, the bots would have to be considered as 'active' to be able to manipulate votes; which would complicate their design, and perhaps make them obvious as bots to the normal members of the channel, who may vote for the bots to be kicked before they do damage.)
This may also, if IRC services are available upon the network, take into account the registered status of a nick. (e.g. Non-registered nicks need to be active on the same hostmask for the whole induction period to count; a change of hostmask resets the timer.)
Each user has a value that is considered to be a representation of the amount they are trusted by the channel; this starts off as 0. It can climb to be higher than 0, lowering the threshold that the user has to overcome to have a successful vote; or sink lower than 0, increasing the threshold.
This value has limits at both ends of the scale, to prevent highly-trusted users being uncontestable (by setting the threshold so low their vote passes instantly), or users of extremely low-trust being unable to call a vote.
For each vote that succeeds (Which is deemed to be of utility to the
channel), the vote-calling user's trust value is increased by a
(num_positive - num_negative).
Likewise, for each vote that fails (Is deemed to not be of utility to
the channel, e.g. abuse), the vote-calling user's trust value is
decreased by a function of
(num_negative - num_positive).
Users who abstain from voting are not counted in these values.