Tuesday, July 26, 2016

Organizations Promoting Better Voting Methods

OpaVote is a huge proponent of using better voting methods.  The point of voting is to represent the will of the voters, but the most commonly used voting method (plurality voting) often doesn't do that well.

Especially with online voting, it so easy to implement better voting methods, such as instant runoff voting, single transferable vote, Condorcet, or approval voting.  Many organizations support these kinds of voting reforms, and I'll keep an up to date list in this blog post.  Let me know if I missed a good organization.

Australia

Canada

United Kingdom

United States

Sunday, June 26, 2016

Guest Post: Rethinking STV Fundamentals

This is a guest post from Kevin Baas.  Kevin is a computer programmer from Milwaukee and he has been thinking deeply about the right way to implement STV elections.  His conclusions sharply disagree with long-standing practices for STV elections so it makes for a very interesting read!

I am still unsure if I personally agree with Kevin's conclusions, but his approach is very novel and worth sharing with others.  Kevin's post is very technical so put on your thinking caps and get ready to dive in.

Rethinking STV Fundamentals

Three errors have plagued the counting of ranked choice ballots for over a century, and here’s how to fix them.

 While learning about how ranked choice ballots are traditionally counted, I discovered three critical flaws in the way everyone does it -- indeed, the way everyone has been doing it for over a century. I would like to share with you how I discovered these flaws and how to fix them. In the end I will outline a new and complete method for counting ranked choice ballots that contains none of these flaws, and consequently produces fairer results than any other system. (With the possible exception of CPO-STV, which it might be tied with.) In addition to explaining the reasoning for these changes, I will provide evidence to support my (admittedly bold) claim that the results are more fair.

 Firstly let me outline two of the flaws by walking through two hypothetical scenarios.

On passing two tests. 

Failing Test 1

Consider the scenario (from http://www.accuratedemocracy.com/e_shares.htm ):

A ranked-choice election to fill 3 seats. The candidates are A, B, R, and S and 36 ballots are cast. 

Numbers of voters  12   7   9   8 
Their preferences  AB  BA  RS  SR 

Thus 19 voters, a majority, prefer A and B while 17 prefer R and S.

Now the most immediately apparent way to determine the winners, is that, since each candidate represents 1/3 of the voters, or 36/3 voters, then that's how many votes they need to get elected. Any surplus votes should transfer to the next choices. And the final seat will be determined by who has the most votes.

Okay, so 36/3=12... So only A has quota. A is elected, leaving:

Numbers of voters  7   9   8 
Their preferences  B  RS  SR 

Well now no one has quota, so what do we do now? Well the standard thing to do in counting ranked choice ballots is to eliminate the candidate with the fewest votes, and transfer the votes to the next choice. Well, that would be B. That leaves only R and S. There are only 2 candidates left, and 2 seats, so we give them to them. So the final winners are: A,R,S.

But wait.... A and B was preferred by the majority, so shouldn't it have gone to A,B,R? Yes, it should have. We have failed this test.

Passing Test 1

The standard way to "solve" this problem is by using votes/(seats+1) as the quota instead. This is called the "Droop quota” and is used almost universally in ranked choice elections. If we instead used votes/(seats+1) = 9 as the quota, B would have received 3 surplus votes, making it 10 B - 9 RS - 8 SR. B & R make quota, filling the two remaining seats. Thus, the majority wins the majority. We now pass the test.

...but Failing Test 2

But the "Droop" quota introduces its own problem. Consider this scenario:

5 seats, 2 parties (a,b,c,d,e - vs - v,w,x,y,z)

ballots are:

690 ballots: a,b,c,d,e, v,w,x,y,z 
310 ballots: v,w,x,y,z, a,b,c,d,e, 

Using votes/(seats+1) as the quota, quota is 1000/(5+1) = 166.666 Majority party meets quota 4 times, minority party 1 time. No seats remain Thus majority party wins 4 seats, and minority wins 1. Using, instead, votes/seats as the quota, quota is 1000/5 = 200

Majority party meets quota 3 times, minority party 1 time. There's 1 seat left. The final seat is determined by plurality vote. After subtracting used votes, the remaining votes are:

690 - 3*200 = 90 
310 - 1*200 = 110 

The minority party has plurality, and thus gets the final seat, making it 3 to 2. So which one is right? Well the ratio of majority voters to minority voters is closer to 3:2 than it is to 4:1, so the proper quota is more fair; represents the voters more proportionally. Using votes/(seats+1) as the quota systematically over-favors the majority at the expense of minority parties. Test failed.

Passing both Test 1 and Test 2

So how can you solve both problems at once? Well, by realizing that the problem in the first scenario, was never with the quota - it was that after B was eliminated in the first round, he was never re-introduced. Simply re-introducing candidate B -- and more generally re-introducing dropped candidates each round -- allows them to win in a later round. Thus solving the first problem. And does so without having to skew the quota, thus never creating the second problem.

So let's go back to the step where we eliminated B and this time only _temporarily_ eliminate B. 

Numbers of voters 7  9  8 
Their preferences B RS SR 

We see that, as before, it leaves only R and S. Only 2 candidates left, and 2 seats... but remember B can be re-introduced in the next round - so we still have 3 candidates that could win a seat! So we can't just give 'em to R and S. We have to check for quota, which is votes/seats, which is 12. No one has it, so temporarily eliminate the lowest, which is now S. The votes all transfer to R, giving R 17, which meets quota.

Numbers of voters  7  9     8 
Their preferences (B) R(S) (S)R 

So now remember we only _temporarily_ eliminated S, so any surplus votes can still transfer. Well there are 17-12 = 5 surplus votes, and they all transfer to S. So now we elect R, and S now has 5, leaving us with:

Numbers of voters 7 5
Their preferences B S 

No one has quota, so we eliminate the lowest, leaving just B, which thus fills our final seat. And the winners are: A,R,B. The majority wins the majority! And without having to create the second problem discussed above, where the minority can get under-represented! By solving our initial problem correctly we avoided creating a second problem.

You look skeptical...

At this point, a reader knowledgeable in voting system theory will probably be skeptical, particularly on the subject of using the “Hare quota” (votes/seats) instead of the unbalanced “Droop quota” (votes/(seats+1)). They’d say “The Droop quota has been preferred for over a hundred years. You’d have to make a very strong case, if you presume to claim the Hare quota should be used in any scenario.” Well the critical thinker in me would be inclined to respond “That’s the ad populum fallacy! A claim is true or false based on its merits, not its popularity or lack thereof!” But the rhetorician in me would say “Why yes, yes I would have to make a very strong case. Bear with me, and I shall do precisely that!”

Let me begin by backing this up a bit. I came to discover the errors with the current methods when working on an entirely different (though related) problem...

How I discovered a new method of counting ranked choice ballots 

While in the process of generating multi-member redistricting maps for FairVote.org, we were discussing how the winners are calculated. This is when I first learned of the “Droop quota” (votes/(seats+1)), and how basically all STV vote counting methods use it. My first impression was "that's wrong". Where “seats” is the number of seats available, each candidate represents votes/seats voters. So quota should obviously be votes/seats.

Let me explain this in pictures… A “seats-votes curve” graphs the relationship between the fraction of votes a party gets, and the fraction of seats that gives them. When you use votes/(seats+1), then the further the vote is from a 50/50 split, the more distant the resulting winners are from what people want. You can clearly see this in the resulting “seats-votes curve”. Theoretically it should be a straight diagonal line, but when you use a quota of votes/(seats+1), it’s inevitably steeper than it should be. Below are the seats-votes curve for hypothetical multi-member districts (5 seats per district) for Texas, Ohio, and Pennsylvania, when using votes/(seats+1) as the quota.


Votes-seats curves for multi-member districts (5 seats per district), using a quota of votes/(seats+1). (Namely, Texas, Ohio, and Pennsylvania) (x = % dem votes, y = % dem seat) The +1 in the denominator skews the seats-votes curve in favor of whichever party has the majority, resulting in representation that is not proportional. The darker red/blue shading shows excess seats for that party, beyond what would be proportional to the votes. (The extra-dark shading highlights asymmetries in the curve.) The curve has a slope of (5+1)/5. 

Now there is only one way to solve this problem: Take the +1 out of the denominator. With the +1 in the denominator, you’re essential graphing the function y = x * (seats+1)/seats, which looks, well, like you see above. But to be proportional, the curve should look like y = x, by definition. To get that, you need to change that y = x *(seats+1)/seats to a y = x * (seats+0)/seats. Which means you need to use votes/(seats+0) for the quota instead of votes/(seats+1).

The inescapable conclusion is that in order to get proportional representation, you must use votes/seats as the quota. There’s no two ways about it. So why does everyone use votes/(seats+1) as the quota, if it’s doomed to bias? Well when I asked, I was given that first example I explained above in “On passing two tests”.

Then I found there was another thing wrong with the way ranked choice was traditionally counted. When no one meets quota, they eliminate the candidate that got the fewest votes and look at the next highest choice for those ballots. Okay, that's fine -- that makes sense -- but then after a candidate meets quota, they never reintroduce those candidates! That elimination should have only been temporary -- only for determining the winner for that seat. You should only eliminate a ballot permanently when it's used to meet quota. Otherwise those voters just aren't being represented at all. They might as well not show up to the polls because you just threw away their ballot.

But now I was starting to see why they were using an unbalanced quota of votes/(seats+1) (called the "Droop" quota): because the premature elimination of the ballots was screwing things up, especially for minority candidates. So instead of realizing what was causing this (the premature elimination of ballots), they artificially lowered the bar, and that seemed to work, so they went with it. They added a second error to try to treat a symptom of the first, thereby compounding the error. I'm reminded of the nursery rhyme "There was an old lady who swallowed a fly..." Now it made sense. They were using the wrong quota because they were prematurely eliminating ballots. The correct solution was of course to not prematurely eliminate ballots, and to use the correct quota of votes/seats. Somehow this had gone unnoticed for centuries. The old lady had gone on swallowing things and the fly was still wiggling and jiggling inside her.

The first iteration 

So, equipped now with a proper solution, I did as all good programmers do: I wrote a program. This accomplishes three things:
  1. It helps me make sure I've got every nuance and corner case and all that taken care of; make sure I really have every part in the machine figured out. (And if I do, it demonstrates that.) 
  2. It allows me to quickly and accurately run tests to verify and confirm the method. 
  3. It gives me a working automated counter to demonstrate the method's superiority. (Or discover its inferiority, be that the case.) 
Though I had first to figure out one more thing: how to deal with only partially ranked ballots – that is, what to do when a ballot runs out of choices? It seemed to me the correct way to deal with it was to say that they rank all remaining choices equally – the remaining choices are tied for last. But this seemed like it would make for some complex code, so I looked for a way to simplify it. Sure enough, it turns out that simply reducing the quota as if the ballot was never cast is mathematically equivalent to saying they ranked the remaining candidates as tied for last.

So there was my 3rd change:
  •  Re-calculate the quota just before testing for it, instead of just once at the beginning. This compensates for ballots that have run out of choices. 
Now that I thought I had all the pieces, I wrote it up...

 The second iteration 

Well turns out I didn't have every nuance figured out. It occurred to me that if I tried (temporarily!) eliminating candidate A, then tried eliminating candidate A and B, well wouldn't it be better to try eliminating just candidate B, before trying both A and B together? The standard method was just to add one more candidate to what you’re eliminating, each time, thus skipping eliminating just B alone. That didn’t seem right. More precisely I knew it was wrong (because I had a counterexample) – I just didn’t know what the right way was.

So, I just went with the traditional way for now, see where that gets me. I figured I could revisit the problem later, and be better equipped when I did. All the results of my tests looked pretty good, except for one. And I knew almost right away what the problem was. Because the elimination order was wrong. It was going from A to A,B -- skipping B. it was time to revisit the elimination order.

Thanks to some conversation on google election science forum, I decided to go all the way with this - to order every single possible combination of candidates. The key was switching the sort criteria from how many ballots were affected, to what I called (for lack of a better term) how many "choice demotions" were produced. Going from 1st choice to 2nd was 1 “choice demotion”, whereas going from 1st to 3rd was 2. Now I had a way to score every possible combination of candidates, and thus a way to sort them. Notwithstanding ties (which are unavoidable), I now had a complete ordering.

So I tried that, worked beautifully. And now I have my final algorithm. The 4 major changes from traditional STV are:
  • Uses the correct quota of votes/seats (don’t swallow the spider) 
  • Only permanently eliminate ballots if they are used to make quota (don’t swallow the fly) 
  • Recalculate quota right before checking (‘cause ballots could have run out of choices) 
  • Temporarily eliminate sets of candidates in order of fewest "rank demotions" to most, ordering all possible combinations. 

Validation 

So now I have 3 major changes from the traditional way of counting ranked choice votes:
  1. Restore ballots that haven’t been used to meet a quota. (as opposed to not restoring) 
  2. Use votes/seats as the quota. (commonly known as “Hare quota”). (as opposed to using an unbalanced quota of votes/(seats+1)) 
  3. Temporarily ignore combinations of candidates based on the number of choice demotions it results in. (sorted from least to most) (as opposed to fewest votes) 
Now the first obvious question that comes to mind is “How does applying these three changes compare against not applying any of them?” The answer to this should come pretty easily: we’ve corrected 3 mistakes, so unless there’s some glaring 4th mistake that will just wipe out all our progress, it should on average be better.

But the more curious would ask a few further questions: “What if you implement just some of these changes? E.g. just the first and the second, or just the third? Maybe one of those rules doesn’t really make that big of a difference. Maybe one of those rules makes a huge difference. Maybe two of those rules only make a difference when they’re both applied… etc.”

Well I’ll give you one guess which type of person I am -- that’s right, the more curious type. And I have a very valuable skill that gives me a unique ability to satisfy my curiosity with relative ease: I know how to code. So you can guess what comes next: I wrote a computer program to automatically calculate the results for all 8 different combinations of the rules, then I gathered no less than 42 different scenarios from across the internet, and made my program test all 42 of them, for all 8 different combinations. Then I put the results in a spreadsheet and prettied it up.

A few things stand out in the results:
  • Firstly, and most glaringly, using all 3 changes passes ALL BUT ONE of the tests, and it is the ONLY combination that does
  • Secondly, if you don’t apply change #2 (Hare quota), neither of the other changes make much of a difference, except for a few cases. 
  • Thirdly, the only way to pass the proportionality test is by using change #2 (Hare quota). This also is the only way to make it tactical voting immune, at least for the cases tested. 
  • Fourthly, if you pick ANY of the changes and choose not to apply it, there are tests that that will ALWAYS fail, regardless of whether or not you apply the other 2 changes. This tells you that each original rule is definitely wrong
  • And finally, change #1 (Restore ballots) only makes a difference (save a few cases) when change #2 (Hare quota) is applied. So there is no value in combining the restore ballots rule with the Droop quota. You need to do both Hare & restore or neither
The most significant conclusion we can draw here, is that, using all 3 changes together, at least as far as the 42 tests go, ALWAYS results in a better result than any other combination.

But you say: “This isn’t every possible test case. There may be some scenarios you haven’t tried in which some other combination performs better.” To this I say: “Find one, show it to me, and I’ll concede it. That is the true test of science.” What did Albert Einstein say?: “No amount of experimentation can ever prove me right; a single experiment can prove me wrong.” I welcome such a test -- nay, I invite it! I wrote a user-friendly interface for my vote-counting program, and published it and its source code online, here. Test, test, test away! For with each successful test, my case grows stronger, and with each failure our knowledge increases!

The method 

For the sake of precision, let me lay it all out:

STEP 0: Make a copy of the ballots - these will be referred to as the "original" copy, even though they'll be altered (reweighted) due to surplus vote transfers.

Determining the next winner:

STEP 1: Determine quota 1: Count how many ballots are left (using the weighted value of the ballot), divide by number of seats left to fill. This is the quota.

STEP 2: order all combinations of candidates
  1. Compute all combinations of candidates (e.g. {a},{b},{c},{a,b},{b,c},{a,c},{a,b,c}) 
  2. For each such combination, count how many "choice demotions" would happen if those candidates are removed, in order for every voter to have a 1st choice candidate, or run out of choices. For instance, if a person's choices are {a,b,c,d}, and a,b & d are removed, then the result is {c}, and it counts as 2 demotions. (Since what is now the 1st choice used to be the 3rd). Remember to use the weighted value of the ballot in counting demotions. 
  3. Sort all combinations by how many choice demotions they produce, least to most. 
    1. Ties are broken by fewest ballots affected. 
    2. Ties on that, in turn, are broken by most candidates eliminated this way. 
    3.  Add the "empty set" (no candidates) to the beginning.
STEP 3 (loop): Make a local copy, and try removing the next combination. (first time through, this is removing no combinations)
  1.  Make a local copy of the ballots. For the remainder we will be operating on this local copy. 
  2.  Take the next set of candidates in the sorted demotion list (if this is the first time, this will be an empty set). 
  3.  Remove those candidates from the ballot, and promote all the choices so it doesn't skip any ranks. if a ballot is out of choices, disregard it. 
STEP 4: Check for quota (repeat from step 3 if not reached)
  1. Check if any candidate has reached or exceeded quota (using their weighted value -- always use the weighted value). 
  2.  If one has, the one with the most votes is elected. 
  3.  If none have reached quota, revert to the local copy you made in step 3, and repeat, using the next candidate combination in the sorted list. 
STEP 5: Winner selected, transfer surplus votes proportionally (on _original_ copy).
  1. The candidate with the most first place votes is elected. 
  2. Re-weight the ballots that were used to make quota - that have that person listed as first in the local copy. Their new weight is whatever their previous weight was, times 1-(quota/(the sum of their current weights)). This re-weighting applies to the _original_ ballots, not our local copy. 
  3. Remove the elected candidate from all ballots, and shift the ranks up to make them sequential. If any ballot runs out of choices, remove it. 
STEP 6: Repeat as necessary. Repeat from the step 1 for the next seat.

Saturday, May 28, 2016

Monitoring Email Delivery

Many OpaVote elections depend on the delivery of voting emails to voters. Delivering large quantities of email is a tricky business because, as you all know, emails are unfortunately abused by spammers.

As an election manager, it is very important for you to know the status of email delivery for your election. OpaVote now makes it very easy to do this!

Above, is a portion of the management console for an election that shows email delivery status.  For this election, there are 2782 email voters.  Each email sent to a voter can be in one of four states: pending, in transit, rejected, or delivered.  We'll explain each of these.

Pending Emails

OpaVote sends emails out at a rate of 2 per second.  This helps ensure that receiving mail servers accept the emails.  If OpaVote suddenly sends thousands of emails to a single mail server, the mail server may assume they are spam and drop them in the digital trashcan.

While voter emails are waiting to be sent out they will be in the pending state.  Right after you start your election, all voter emails will be in the pending state.  If you refresh the management console, you will see this number go down at a rate of about 2 per second.

An email will change from the pending state to another state when we receive a response from the email server the voting email is being sent to, and then the voter email will transition to one of the states below.

In Transit Emails

Sometimes a receiving email server will play coy with an incoming email if it isn't sure who the sender of the email is.  The receiving email server will basically say, no one is home, please try again later.  The idea is that spam senders probably won't come back but legitimate email senders will try again.

OpaVote does try again, and while OpaVote is in the process of trying again, the voter email will be in the in transit state. The email will probably be delivered in the future, but we don't know yet for sure if it will.  It may take 24 hours for an in transit email to be delivered.

If all of your voters have email addresses at the same domain (e.g., myschool.com) and most or all of the voters are in the in transit state, then you should contact your IT department and ask them to whitelist opavote.com as a sending domain.  If your IT department wants other information, such as our sending IP addresses, please contact us.

Rejected Emails

For voter emails that are not delivered or where it seems the voter does not want to receive the emails, the voter email is put in the rejected state (note that some of these emails have been delivered but are not included in the delivered state below).  Fewer than 2% of your emails should be in the rejected state.  If many of your emails are rejected, we may terminate your election.

An email bounces if it cannot be delivered.  This could be caused by a typo in the email address, because the person closed that email account, because the person's inbox is full, or for a variety of other reasons.  If you click on the rejected emails link, you will see the response that we received from the email server.  Although the responses are somewhat cryptic, most of the time they make sense.

Voters can mark emails as spam, and often the mail server will tell us that the voter marked the email as spam.  When this happens, we put the voter on a blacklist and we never send emails to them again.  A voting email will be in this category if they previously marked a voting email as spam (from your previous election or someone else's) or marked a voting email from the current election as spam.

Voters can opt out of OpaVote emails.  They have the choice to opt out of emails for the particular election or for all OpaVote elections.  Voters who opt out are put in the rejected category, though it is really sort a gray area.  Some voters may vote and then opt out so they haven't really rejected the email...

Delivered Emails

The last category is delivered emails.  Nearly all of the time, this means the voting email reached the voter's inbox.  We can't be sure however.  All we really know is that the mail server told us that it accepted the email.  The email could have been put in the voter's spam folder or could have been lost on the receiving end.

So there you have it.  We hope you find this feature useful!


Friday, May 27, 2016

Combining Online Votes with Paper Votes

Some of our customers have a mixed election where most voters vote online via a link in a voting email but some voters vote via a postal ballot.  When you have such an election, you need to combine the online votes with the postal votes and then count the combined votes.  In this post, we explain how you can do that with OpaVote.  We provide two options, and you can pick which works best for you.

Election then Count

OpaVote provides three types of items: (1) an Election, (2) a Poll, and (3) a Count.  With this method, you will create an OpaVote Election for your online votes, and then create an OpaVote Count to combine the online ballots with the postal ballots (you won't use a Poll).

Create an OpaVote Election for all of your online voters.  See the OpaVote Help menu for more details about how to do this.  When the election is over, click the "Download Ballots" button to get the online ballots.  The default name of the file is "ballots.blt", but you should change this to a more descriptive name, such as "online-ballots.blt".  The ballot files are just plain text files that you can open in any text editor (you can also view them in the Chrome browser).  If you need help looking at the contents of a ballot file, contact your local tech guru.

Send paper ballots to your postal voters and get the completed postal ballots back.  We recommend numbering the received postal ballots to make it easier to audit the ballot entry process.

Now combine online ballots with the postal ballots.  We do this by creating an OpaVote Count.  Note that you may need to make a payment for each of your Election and your Count.  We recommend the following procedure:

First, in your Count, click the "Edit Ballots" button to bring up the ballot editor.  Then enter the postal ballots in the order that you numbered them.  Double check to make sure you entered them correctly!

Second, after you have finished entering the postal ballots, use the "Download" button to save the postal ballots.  Again, the default name is "ballots.blt" so you should rename it to a more descriptive name, such as "postal-ballots.blt".  You could skip this step, but we think it makes the auditing process easier.

Third, use the "Append Ballots" button to append the online ballots to the postal ballots.  After clicking the button, you simply select the file containing the online ballots.

Fourth, double check that you have done the above steps correctly.  If you make a mistake and need to redo it, then you will need to start over again (which may require another payment).

Fifth, select your desired counting method, and then count the votes.  If desired, you can share the link to the results with others.

I'll now go into a couple variations of the above process.  To make sure that you enter the postal votes correctly, you could have two different people do the first step, and make sure that the two ballot files are identical.  You'll need a local tech guru to help you determine if the two ballot files are identical.

If you have a lot of postal votes, you can take a divide and conquer approach.  For example, if you have 200 postal votes, you could split them up into 4 groups of 50 and have 4 people enter them in parallel.  You will then have four different files of postal ballots and one file of online ballots.  You can combine all 5 by repeatedly using the "Append Ballots" button.  (Note that Counts are free until you actually want to count the votes so there are no extra charges for having people enter ballots in parallel.)

Election with Code Voters

You have another option that is a little simpler than the above process, but may be harder to audit.

As above, create an OpaVote Election for your online voters.  When setting up your Election, include a "code voter" for each postal voter (see the Help if you need more details on this).  We recommend downloading the codes and adding them to a spreadsheet alongside the name of each each postal voter.

You now know have two options for entering votes for a postal voter.

First, for each postal voter, you can send them their code via post along with the website address of your election (something like https://www.opavote.com/vote/1234).  The postal voter could then go to that address, enter his or her code, and enter his or her vote.

Second, you can send a paper ballot to each postal voter, receive the paper ballot back, and then enter the postal ballot yourself using the assigned code.  You simply go the election website, enter the voter's code, and then enter the vote on behalf of the postal voter.  Note that you need to trust the person entering ballots this way not to cheat!  Because ballots are anonymous after they have been entered, there is no way to later determine whether the ballot was entered correctly.  For this reason, we prefer the Election then Count method above.

You could even mix the above two options.  You can allow a postal voter to enter the vote online or send it back via post.  Since a code can only be used once, there is no danger of the ballot being counted more than once.

Make sure that you keep the codes confidential!  Anyone with the codes can use them to enter votes.  If you put the codes in a public place, it is easy for someone to use them to cheat.

Tuesday, March 15, 2016

Tracking Voter Activity

We are excited to announce a new feature in OpaVote to help managers understand what their voters are doing!
One of the hardest parts of running an election is getting voters to vote.  For many OpaVote elections, voter turnout is only 10-25%.  If you want to improve that turnout it is helpful to know what your voters are doing.

OpaVote is now tracking two new statistics of voters: (1) whether they opened the voting email, and (2) whether they visited the voting page.  We track these in a couple different ways:

  • Opens -- The total number of times a voting email was opened.  If a single voter opens the email twice, then both of those are counted.
  • Unique Opens -- The total number of voters who have opened the voting email.  If a single voter opens the email many times, this counts as only one unique open.
  • Visits -- The total number of visits to a voting page (after clicking the voting link in the voting email).
  • Unique Visits -- The total number of voters who have visited the voting page.
  • Votes -- The total number of voters who have voted.  There is no need for unique votes since a voter can only vote once. :)
In addition to providing the total number of these, we also track them on an hourly basis.  Above we show an example.  In the first hour, there were 13 email opens, 12 visits, and 10 votes.  The numbers quickly decrease until the next morning when voters start checking their emails again.

Here are a few ways you can use this information:
  • Evaluate the effectiveness of reminder emails.  You can remind all voters every three days and you can see how many people voted after receiving the reminder email.  Perhaps changing the text of the reminder email will get more people to vote.
  • Evaluate the interest of your voters in the election.  If the open rate or the visit rate is very low, then you way want to reevaluate the purpose of the election.  Perhaps you don't need to have an election to determine which brand of toilet paper to buy?
  • Evaluate the voting page itself.  For most elections, almost every voter who visits the voting page ends up casting a vote.  If you have a lot of people visiting the voting page and not voting, then perhaps there is something wrong with the voting page.  It might be confusing, not have enough information, or may have too many choices (e.g., 20 contests with 15 candidates in each contest).
You may be curious how we track email opens.  A common practice is to use tracking pixels or web beacons.  When a voter opens a voting email, the email client downloads a small image from a server, and we can detect when that image is downloaded.  Some people disable the downloading of such images so the number of reported email opens will be less than the actual number of email opens.

We hope you enjoy this new feature, and we always appreciate feedback as to how we can make OpaVote work better for you.

Monday, February 15, 2016

Best Methods for Electing a Group of People

In our previous post, we provided our recommendations for the best voting methods to use when electing a single person.  In this follow-up post, we give our recommendations for electing a group of people.

Proportional or Majoritarian Representation?

The first thing to decide is whether you want proportional representation or majoritarian representation.  Proportional representation means, in a nutshell, that the demographics of the elected group should be similar to the demographics of the voters.  For example, under proportional representation, 50% of elected bodies would be women and parties and ethnic minorities would be represented according to their support among voters.

Majoritarian representation means that the majority group should be able control every single available seat.  In the future, we'll do another post with more details of when you might want to consider majoritarian representation.

To give an example, suppose you live in a city that elects a city council of 10 people each year, and that about 60% of the voters favor Democrats and 40% of the voters favor Republicans.  If you think the fair outcome is that 6 of the 10 council members are Democrats and 4 of the 10 council members are Republicans, then you want to have proportional representation.  If you think the fair outcome is that all 10 council members are Democrats, then you want majoritarian representation.

If your organization is electing a group, such as a committee or council, then you want to have proportional representation so that you can represent the views of all of your members.

For most organizations, the best way to obtain proportional representation is to use a version of the single transferable vote.  Other voting methods, such as list voting or MMP, are possible but generally not practical outside of government elections.

Single Transferable Vote (STV)

Similar to instant runoff runoff voting, STV methods also eliminate losing candidates and transfer their votes to other candidates.  The interesting part about STV is that there is a second kind of transfer!  Candidate with too many votes also transfer some of their votes to other candidates.

Too many votes?!?  How can a candidate have too many votes?  We'll use an example to explain.

Suppose a city is electing 3 councillors, the city is highly partisan, 90% of the voters favor Republicans, and 10% of the voters favor  Democrats.  Further suppose that the Republicans have 3 candidates (named R1, R2, and R3) and the Democrats have two candidates (named D1 and D2).  The following is a possible outcome of first choices:

R1R2R3D1D2
85%  3%  2%  5%  5%

Although Republicans make up 90% of the electorate, we have a situation where two of the three seats go to Democrats.  How could this happen?  Because R1 got too many votes!

Here is what might happen if we transferred some of R1's extra votes:

R1R2R3D1D2
25%  24%  25%  14%  12%

Presumably, most of the people who voted for R1 would prefer other Republicans over the Democrats, and when R1's extra votes are transferred, most of them go R2 or R3.  Now that R1's votes have been transferred, the Republicans will win at least two seats, which makes for a more proportional outcome.

The above example isn't that realistic, but it does show how a voter can have too many votes and why transferring extra votes can make the outcome more proportional.  Watch the video linked at the top of this page to see a cool example of an STV count.

All STV counting rules follow these principles, and we'll next give you our recommendations.

Scottish STV

Because we value simplicity and understanding of how the voting process works, our top recommendation to most organizations is to use Scottish STV.  The two main advantages of Scottish STV are (i) the rules are reasonably easy to understand and apply, and (ii) the rules are very well defined in Scottish law!

If your organization wants to use Scottish STV, you can simply state that in your by laws (no need to describe the counting process in your by laws because it is already defined) and then use OpaVote to count the votes.

Meek STV

For organizations that are comfortable with more complex counting procedures (e.g., mathematicians and computer programmers), we recommend Meek STV.  Meek STV provides better proportionality than Scottish STV, but it takes more effort to understand how it works.

If you are mathematically inclined and curious about voting, I strongly recommend reading about Meek STV.  How it works is really cool!

ERS97 STV

Lastly, I'll mention the ERS97 STV rules.  I start this section with the adverbial enumerator as a nod to our friends across the pond who created these rules.  The Electoral Reform Society in the UK has long been a staunch advocate of STV and their suggested rules are commonly called ERS97 (because they were finalized in 1997 and to distinguish their older rules finalized in 1976, 1973, and 1955!)

The ERS97 STV rules are used by quite a few organizations in the UK.  The rules were designed to facilitate hand counting of a large number of ballots.  In our view, they are not needed today since ballots are counted by computers.  The rules are somewhat complicated and don't provide any better results than the Scottish rules, so we favor the Scottish rules.


Sunday, December 27, 2015

2015 Year in Review

OpaVote in December 2014
It has been a tremendous year at OpaVote!  We have been constantly adding new features and improving existing features to provide you with the best experience possible for running your elections.

To the right, you can see a screenshot of how OpaVote appeared in December 2014.  Shortly afterwards, we hired a graphic artist to design a new logo and we completely revamped the site to make it mobile friendly and better looking.

Below are some other highlights of the past year, and we are looking forward to an even better 2016.

New Features in 2015

Over the past year, we had over 100 checkins of new code.  There are too many improvements to list them all, but here are some of the top improvements:
  1. Redesign of entire website to improve appearance and make it mobile friendly.
  2. Added code voters in addition to email voters.
  3. Added option to prevent voter from casting empty or incomplete vote.
  4. Added more functionality to Counts (e.g., ballot editing, counting options, withdrawing candidates, ballot cleaning, and appending ballots)
  5. Added Stripe payments in addition to PayPal payments.
  6. Allow managers to make one payment to apply to multiple elections.
  7. Automatically email the ballots to the manager at the end of the election.
  8. Allow managers to login with Facebook and LinkedIn in addition to Google.
  9. Allow managers to publish results after reviewing them at the end of an election.
  10. Allow managers to disable voters (e.g., if an email was sent to the voter's old email address).

Help Promote OpaVote

At OpaVote, we don't do any sales or marketing and we depend on referrals from happy customers to grow our business.  This keeps our expenses low and means we can offer you very low prices.  Please help us by doing the following two things:
  1. Tell your friends and colleagues about OpaVote.  For every organization you refer, we will give you an OpaVote credit equal to their first month's use of OpaVote.
  2. Link to OpaVote from your website (e.g., your election page or blog post).  This informs your voters so they are not surprised when they receive an OpaVote email and we also appreciate the search engine karma.

Donations by OpaVote

At OpaVote, we are committed to improving voting rights, and our small contribution to that effort is to help introduce organizations to to better voting methods, such as ranked-choice voting, and to make it easy and affordable for organizations to use better voting methods.

We also want to support voting rights in other ways, and to that end, OpaVote has donated $500 to each of the following organizations:
Please consider these organizations in making your year end donations.