emma put together some points that we need to address before she can proceed with the code:
https://raddit.me/wiki/raddit-app/voting
Give it a read and let's hear your ideas. We'll see if we can form a consensus about how to move forward in installing the democratic (or not?) systems we'll use to run each subforum.
sudo wrote
These are good ideas. For adding a moderator, I would suggest that someone first make a motion to add a new moderator, then wait for someone else to second the motion before proceeding. If the motion doesn't get seconded within three days, it is not considered. If it is seconded, there should be a period in which users can nominate themselves, or another user, for the position. Three days seems like a reasonable amount of time to keep the nominations open. Once nominations are over, then each active member of the subforum should be able to cast one secret vote for the candidate they like best. Voting could last for another three days. Then, at the end, whoever received the plurality should be elected. In order for the ballot to truly be secret, and in order to restrict voting to only active members of the community, and in order to ensure that someone does not vote for more than one candidate, I think the voting system should be a separate part of the site.
As far as removing a moderator, I think it would be very similar to the process of adding one, but without the period for nominations, since the moderator to be removed would already be named in the motion. If more than 50% of the votes are for them to be removed, then they will be removed. I think 2/3rds of the vote is too extreme - a 2/3rds majority should be reserved for votes on massive changes, like changes to the highest laws of the website.
As far as avoiding gaming of the vote, I think an "active user" should be defined as a user who has made 2 or more posts or comments on the subforum in question in the 30 days immediately preceding the motion. That way, a user who isn't a member of the community cannot try to quickly post a lot on the subforum in order to be allowed to vote on the motion they want to, because it will be too late at that point.
For quarantine periods, I think if a motion is rejected, or if it fails to gain a second, the submitter should not be allowed to submit the same motion until 7 days later. If they resubmit it and it fails again, the quarantine time for them should be doubled. Likewise, for the person who was the subject of the motion, they should be immune to the same motion for 7 days, then 14 days if it fails again, etc. This should be pretty effective at stopping people from spamming unpopular motions, but also not prohibit those motions from being made if they become popular at some point in the future.
I think the names of the motioner and the seconder should be hidden, as well as the names of the nominaters, and the names of the voters. That would prevent bitterness like "So-and-so is my friend, but they voted for someone else for moderator instead of me!" and "So-and-so voted to remove me as a moderator. I'm going to downvote all their posts, and ban them from all the other subforums I moderate."
As far as voting goes, I think abstaining is only useful if we're going to make a list of eligible voters, and only come to a decision once everyone on the list has cast a vote. That doesn't sound like a good idea here - if someone on the list takes a long vacation from this site, we'd have to wait for a long time to come to a decision; possibly forever. Instead, I think saying "you have 3 days to cast a vote" is much better. If someone wants to abstain from this system, there's no need for them to say "abstain"; they could just not submit a vote. So, I think we should start out with just yes and no, and change it later if the need arises.
I do think proposals should be a special type of post, displayed alongside the normal ones. Maybe their title could be a different colour to distinguish them, or maybe they should have a special flair. Like I said before, I think the submitter of the post should be hidden to everyone. Of course, the submitter should still be logged, in order to implement the anti-spam measures, so this means the admins could tell who it was by checking the database, but hopefully, they wouldn't do that, unless the situation called for it. Once the motion is posted, any user eligible to vote on it would have the option to anonymously second it (perhaps by clicking a special "second" button in place of the upvote button). If nobody seconds it, the motion would automatically disappear in 3 days, and the user wouldn't be allowed to make the same motion for X days. If it is seconded, it would move to the nomination phase, if necessary (I supposed someone could nominate "None", if they don't think another mod is necessary). Here, users would anonymously comment with their nominations. Once that's over, it would move to the voting phase. Users would be allowed to upvote only one of the comments, and would not be able to downvote them. The vote totals should be hidden, and the order of the comments scrambled, just like reddit's "contest mode." Once voting is over, the new mod would be added, or the unpopular one removed, if the vote carried.
I haven't thought about how a discussion phase would work, since some motions that aren't adding or removing mods could require discussion. Does anyone have any ideas for how this could work?
Feel free to add your critique to my ideas.