Suggestions for Paul Downey's VoteBot ===================================== 1. Permit votes to be indicated like: vote: 1a instead of: chad: 1a 2. Permit the colon to be omitted when voting: vote 2b, 1, 3 BT vote: 2b, 1, 3 3. For third party voting, I don't like this syntax: vote: : ... How about instead having: BT vote 2b, 1, 3 dbooth votes 3 And perhaps: I vote 3 we vote 3 4. One process per channel? 5. Permit the poll title/question text to be defined when the poll is opened: votebot, poll "What to do about Appendix E" (Quotes optional.) This will simplify and speed its usage. Also permit the question to be renamed this way (to a non-empty title) without error until the first vote is cast or any options are defined. (Cannot allow it after the first vote is cast or option is defined because it would cause ambiguity about which question the vote/option was for.) However, permit "votebot, question: ..." to redefine the question at any time. 6. Characterize the degree of the win. "Landslide victory" "overwhelming" "by a nose" 7. Permit revoting with the same options: votebot, revote votebot, delete all votes 8. Allow a poll to be reopened for late voters or vote changes: votebot, (reopen|re-open|resume|continue) (poll)? 9. Permit voting without pre-defined options. This is for speed and because the group may have already defined the options before inviting votebot. Just collect whatever votes are received (and map them all to lower case). If options have been defined, then warn if someone gives a vote that is not one of the defined options. 10. Permit yes/no votes and recognize synonyms. Some synonyms (though I'm not sure all should be supported!): # (aye|nay|yay|yes|no|y|n|agree|disagree|favor|in favor|oppose|opposed|against) 11. Make the vote counting algorithm be pluggable, or count the votes multiple ways. 12. Drop this command (not needed): votebot, what is option ? votebot, what's option ? 13. Keep the "votebot, what is the question?" commands, but also accept a little more syntax: # Written as statement (optional ?/. at the end): votebot, (what|whats|what's|what is|what was) (the)? (question|poll|vote|strawpoll|straw poll)?(\??) votebot, (list|show|what|what|what are|what were)? (the)? (options|choices)(\??) # Written as question: votebot, (the)? (question|poll|vote|strawpoll|straw poll|options|choices)(\??) votebot, (the)? (options|choices)\? I think all of the above commands could be equivalent, i.e., produce the same result: Both the name of the poll/question, and a list of the options. 14. Permit a list of options (without associate text): votebot, options: a, b, c votebot, options: 1 2a 2b c The options may have already been defined by the group, prior to inviting votebot. 15. Permit the word "choice" instead of "option": votebot, (option|choice) : .* votebot, choices: a, b, c votebot, drop choice a 16. Permit options to be any words if they are explicitly stated, such as: votebot, option drop: Drop section 6.2 votebot, option rewrite: Rewrite section 6.2 or: votebot, options: drop, rewrite 17. Permit: votebot, option 4 = "Rewrite to reduce MUST" 18. I think it would be better to omit these: votebot, restart votebot, reset votebot, clear The reason is that it would be good to be able to reopen a previously closed poll (in case a missed vote needs to be added). And if there is a privacy concern with votebot still retaining the previous vote info, then it can simply be dismissed and reinvited. 19. Also permit "abs" as a synonym for "abstain" (and implicitly permit abstain votes always): dbooth votes abs 20. Permit spaces (and semicolons?) as vote/option separators: BT vote 2b 1 3 votbot, options: 1 2a 2b 3 votbot, options: 1; 2a; 2b; 3 21. Permit #, "option" and "choice" as noise words before vote: vote: #3 vote: option #3 Actually, this is not a good idea if later you want to permit the word "vote:" to be omitted, such as: #3 option #3 because then it looks too much like a comment about one of the options: option #3 is not clear However, from the perspective of scribe.perl being able to strip out the votes later (and retain only the summary/results), it's helpful to have the word "vote" there. I'm undecided about whether to make it easier for users by permitting "votebot, " or "vote: " to be omitted from some commands, such as defining options and voting. Thoughts? 22. Warn if it looks like someone tried to vote or define options with wrong syntax: 2a * VoteBot dbooth, if you intended to vote, type "vote: 2a" options: 1 2a 2b 3 * VoteBot dbooth, if you intended to define voting options, type "VoteBot, options: 1 2a 2b 3" option a: Drop section 6.2 * VoteBot dbooth, if you intended to define a voting option, type "VoteBot, option a: Drop section 6.2" 23. I don't think you should allow private message voting. I think private voting is a separate problem and should be done separately. 24. What IRC syntax is your example? The votbot's results need to be logged, so that scribe.perl will pick them up. Votebot warnings/feedback do not, though. 25. Other synonyms for closing the poll: votebot, (please)? (stop|end|close)? (the)? (strawpoll|straw poll|poll(s?)|vote(s?)) votebot, (count|tally) (vote(s?)|poll|strawpoll|straw poll)? (result(s?))? (\??) votebot, (count|tally)? (vote(s?)|poll|strawpoll|straw poll)? (result(s?)) (\??) However, I'm not sure it's wise to advertise all of these forms in the documentation! 26. Idea about raw output format (aside from the STV results): Vote summary for "What to do about Appendix E" 4 votes for option 3: "No change / status quo" (dbooth, hugo, yves, plh) 2 votes for option 2: "Publish as Note" (dbooth, plh) 2 votes for option 4: "Rewrite to avoid MUST" (dbooth, yves) 1 votes for option 1: "Move to Primer" (carine) 0 explicit abstains () Total voters: 5 (dbooth, hugo, yves, carine, plh) Votes by voter: carine (3), dbooth (1 2 4), hugo (1 3), plh (2), yves (1 4) [Then have STV results]