Voting system specifications

We got together again today. I'll admit that we didn't make a whole lot of progress... but at least our hearts are in the right place ;-)

There is still no code to speak of but at least we came up with some more prelimirary specs in narrative form...

1 Configure voting system
1.1 Determine vote importance levels (core vote vs casual vote vs indcative)
1.2 Set quorum requierments (mandatory or not, set percentages)
1.3 Set administration permissions on vote creation and who can vote
1.4 Set global settings vote creation possibilities
1.4.1 Enable proxy voting
1.4.2 Enable vote types
1.4.3 Enable winning conditions
1.4.4 Enable voting list edition
1.4.5 Enable viewing of votes (i.e. secret ballot or not)
1.4.6 Set vote weighting by role
1.4.7 Enable voter comments on votes (?)
1.4.8 Set parameters for scoring votes (i.e. “You have 10 points to allocate but you can only give a maximum of 3 points per choice”)
1.5 Vote spoiling settings
1.5.1 Allow vote spoiling
1.5.2 Set vote rejection threshold
1.5.3 Set vote spoiling justification interface (yes-no or detailed)
1.5.3.1 Voter can declare the vote spoiled without giving details
1.5.3.2 Voter can declare the vote spoiled on specific reason
1.5.3.2.1 Spoiled because of vote type
1.5.3.2.2 Spoiled because of winning condition
1.5.3.2.3 Spoiled because of voter weighting
1.5.3.2.4 Spoiled because of question/options clarity
1.5.3.2.5 Spoiled because of option missing
1.5.3.2.6 Spoiled because of bad timing (date and deadline)
2 Create a vote
2.1 Choose vote type
2.1.1 Binary voting (aka “choosing”)
2.1.1.1 Deadline delimited
2.1.1.2 First past the poll (i.e. where winning condition closes the vote e.g. quorum met or 50%+1, etc...)
2.1.2 Automatic spinoff voting (aka “ranking”)
2.1.2.1 Single winner
2.1.2.2 Multi winner
2.1.3 Allocation voting (aka “scoring”)
2.1.3.1 Independent (you score each otion independently)
2.1.3.2 Point pool scoring (you have x points to distribute)
2.1.3.2.1 Unrestricted (you can put all your points to the same option)
2.1.3.2.2 Ceiling limit (can't give more than y points to a single option)
2.1.3.2.3 Rigid distribution (e.g. one three point vote, one 2 point vote and one 1 point vote)
2.2 Set vote secrecy (yes/no)
2.3 Set choices
2.4 Set winning conditions
2.5 Set deadline (not applicable to
2.6 Allow proxy voting
2.7 Enable voter comments on votes (?)
2.8 Make voter list
3 Hold vote (voter interface)
3.1 Display all vote settings
4 Compile data and decision making
4.1 Determine if winning condition was met
5 Display results
6 Documentation
6.1 Admin help
6.2 Voter help
6.3 Voting systems evaluation (virtues and flaws)