Git Product home page Git Product logo

society-voting-bot's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

society-voting-bot's Issues

Allow members to change/re-submit their ballot

Allow members to change/re-submit their ballot. A possible (and not very well thought through) solution could be to store an anonymised token alongside the ballot. This token would be a hash of their Discord user ID and a password. The password could either be submitted by them, or by the system depending on the level of security needed. This will also need to leverage the list of members that have voted, which already exists.
When the member goes to submit, they must provide the password, which leads to one of 3 cases:

  1. If they haven't voted - This is their first vote, so add the token + ballot.
  2. If they've already voted and the token already exists - Update the vote.
  3. If they've already voted and the token doesn't exist - The submitted password is incorrect.

It may be necessary to rate limit the re-submission attempts, or give a number of possible attempts, in order to prevent brute-force. Another approach would just be to enforce having a password with enough entropy that it's infeasible to brute-force it.

Consider a unique voting code for each post

Consider having a unique voting code for each post. This would add complexity to the procedure, but would ensure that if someone joins for the first 5 minutes, then leaves, that they cannot continue to vote.

Expand automated message sent when people stand

Expand the automated message sent when people stand to say that:

  • They will need to prepare a 2 minute speech.
  • If they have any questions to contact the secretary (configurable), or someone else on the committee.
  • If they can't make it to the actual call, tell them to get in touch with the secretary ASAP to sort alternative arrangements

Allow committee members to stand people down

Allow committee members to stand people down, for use in cases where someone accidentally stands for a post that they are ineligible to stand for (like if a non-PGT stand for PGT rep)

When a member stands for a post, email the secretary

When someone stands for a post, email the secretary with their name, email (this currently isn't collected), student number and the post they are standing for.
It's important that this email arrives relatively quickly (ideally <2 minutes) as this may happen during the election call as people stand from the floor.

Support voting on constiutional ammendments and referenda

The changes required will include:

  • A separate listing from the standard posts
  • A command for committee members to create them (similar to \setup, or a adjustment to it)
  • Default "Candidates" created of "Yes" and "No" for each one on setup
  • A restriction to stop members from standing as candidates

Consider splitting the codebase into cogs

Possible cogs could be Admin (create posts, begin/end voting, etc), Info(list posts/candidates/referenda, display the rules) and Voting (DM only, submit/validate)

Support committee members deleting posts

Committee members should be able to delete posts. A warning may be necessary to ensure posts aren't deleted if people are already standing for it. Or maybe just those standing for it should be messaged saying it's been deleted?

Allow candidates names to be changed.

Both for general satisfaction and from an inclusivity point of view, we should allow candidates' names to be changed. This could either be through a committee action or the candidates themselves

Consider implementing an improved elections style to avoid bias against those near the bottom of the running order

Support new voting style such that people standing for posts lower down the running order can still stand for other posts if they do not get elected to their desired post.

As things stand, if people stand for a post near the top of the running order, but do not get it, they can stand for a later post from the floor. This is a very good thing, but is not available to those standing for posts near the end of the running order as there are no more posts left for them to stand for from the floor.

One proposal to fix this would be:

  1. Everybody stands for all posts which they even have any sort of desire to run for
  2. All voting happens without revealing the results
  3. Announce which people won more than one post
  4. Let those candidates pick which one they want to keep
  5. Re-run the IRV voting calculations on the ballot papers for the posts that were not chosen, as if that candidate did not stand in the first place (no more voting has to happen, as this can be calculated from the original ballot papers)
  6. Repeat 5 until no more candidates hold more than one role

The issues I can see here are that:
A. people in this scenario will often stand from the floor for posts which have 0/few candidates, which is unknown at the point they are standing (maybe this could be bypassed by candidates registering in advance, publically, what their preferences are for the post they want to hold, but this might amplify issue C.
B. This could result in each role having a huge number of candidates
C. This could bias people's voting as they may not want to vote for a candidate for more than one post (for example: "well I voted for person X for the president, so I won't vote for them for secretary"). This could maybe be mitigated by making this possibility very clear and educating people on not doing it.
D. The order in which the IRV is re-run could impact the results, as those who get their IRV re-run first are more likely to get their first choice of post. Maybe this order could re randomised to avoid this?

Consider a setting to allow all posts to be elected at once

Consider a setting to allow all ballot papers to be sent at once, then all voting happens, then all ballots are submitted at once.
This has its advantages (speed) and disadvantages (people may forget what they thought of candidates' speeches, etc for the early posts by the time they have all happened)

Allow the post lists ordering to be fixed

At the moment it's just the order in which they were \setup with the bot (\rename also moves a post to the bottom). It would be nice if this were fixed so that it is easy to see the voting order

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.