Voting systems

TL;DR: The proposed system is about as bad at choosing representatives as
it is possible to get without deliberately fudging the results. We should
use some form of STV.

No voting system is perfect (mathematically suggested by Arrow's theorem).
But almost anything is *much* better than the proposal we have. Even the
terrible system currently used for TAG and AB.

I recommend we use the 'Schulze' algorithm[1]. It is among those most
likely to give results that match what the community actually wants, and
has an open source python implementation so we don't need to do
complicated work ourselves to use it.

But pretty much any STV system would be a sufficiently huge improvement to
be acceptable.

I also recommend we automatically add "none of the above" as a candidate
to ballots.

Details:

The current proposal is very simple to understand. It's very simple to
operate. And it is known to be extremely simple to game, as well as highly
likely to effectively disenfranchise people under the cover of
"democracy". (This is why people have spent a hundred or so years
researching and implementing "Single Transferable Vote" systems.)

The issue is as follows. If there are 5 places, and 5 candidates, it
doesn't matter how we count the votes (although it could be argued that a
more representative system - such as that used in the old Soviet Union -
should be used, which actually requires some minimum vote for a candidate
to be accepted).

==The Problem:

Where there are more is where the problem arises - especially when there
are at least 3 more than the number of candidates, but it can also be
shown in a simple election for a single position.

The basic problem is called "dividing the vote". Let's imagine a situation
where the webizens are more or less equally divided between 5 regions -
lets call them alicia, boben, carolia, drewland and erica.

Now imagine that alicia, boben, and carolia produce one candidate each,
drewland produces 2, and erica produces 3 - a total of 8 candidates for 5
places, which should be the stuff democracy ismade of, right?

Assuming they are roughly equally good, that people from different
communities want to be represented, and the vote is fair, the results are
trivially predictable: Alicia, Boben and Carolia get one representative,
the Drewland gets 2, and Erica gets none.

Unless people work really hard to make deals to skew the voting, we will
have disenfranchised everyone in Erica.

In real elections for real governments, this happens reasonably
frequently, and it is known as a simple way to take over smaller
organisations.

STV is specifically designed to solve this problem. By being able to rank
all candidates in order, with our naive assumption that people vote for
someone in their own community, we find that each region gets 1
representative, under pretty much every STV system invented.

Because we find that the people of A,B,C elect their candidate as
expected, the people of D put their two candidates above the rest which
means that *one* of them will be elected, and similarly for E.

There are some obvious potential complications to the story.

While the real world doesn't divide neatly into 5 equal-size communities,
and real representatives are often capable of fairly representing the
interests of more than just people like them, it still strikes me as
manifestly wrong to use one of the worst available methods of voting if
our goal is fairness (as opposed to selling a sheen of democracy).

If the communities are of unequal size then of course larger communities
have more votes. The current proposal handles this by effectively throwing
away the "excess" votes of the most popular candidate. If we imagine that
in our example above, Erica is actually divided into 3, with a candidate
each, we can still predict the same results. If, in addition, Alicia and
Boben are 50% larger than the other communities, we *still* get the same
results.

This could be worse. Imagine, for example, that one of the Drewland
candidates is hated by everyone outside Drewland for consistently taking
extremist positions and seeking to destroy consensus even on such trivial
issues as voting systems other than the one used in Drewland. Meanwhile,
the other candidate is universally loved by those outside Drewland for
always taking minutes and always seeking the good of the whole community
even at personal expense. And imagine that the situation isn't quite the
same in Drewland, where there is a slight (52%) majority for the otherwise
unacceptable candidate.

Our current system gets the "bad" candidate from Drewland, and the good
one.

In a slightly less uneven election, eg where Erica only has two
candidates, we *only* get the bad one from Drewland. But if the same
applies to the two Erica candidates as to the two Drewland ones, guess
which one we get…

==Implementing STV in practice

STV systems allow the "excess" votes from Boben to be directed among the
remaining candidates - so in our scenario some go to the candidate from
Carolia, where they are also excess, and are then distributed among the
candidates from Erica and the good candidate from Drewland, or among the
good candidates from Drewland and Erica. Which means we get one candidate
   from each community, who is in each case the overall most popular
candidate among the entire community...

There are many different STV systems. But they all share one thing in
common - the way you vote is to put the candidates in your preference
order. So you need to be able to count up to however many candidates there
are. (Australian Senate elections often have more than 50 and introduce
ways of simplifying the process for voters. If you want to encourage
parties to develop and do their own deals with each other, that's a path
to follow. I suggest we don't).

Note that there is a possible "edge" case, where people don't have a
strict preference order, and would vote
[1, 2, 3, 3, 3, 4, 5, 5] or equivalently [1, 2, 3, 3, 3, 6, 7, 7]. Also
you can get [1, 2, 3, 4] leaving the rest out - equivalent to
[1, 2, 3, 4, 5, 5, 5, 5]. Some STV systems explicitly reject such votes as
invalid, but they are very easy to count fairly if you want to do that.
You just need to recognise such votes and regularise them to the same
format.

The difference, and the "complexity" (assuming counting that far is
something you're OK with) is in how votes are *counted*. There are a
couple of basic ways to do this.

One is that you essentially count up to the number of votes needed for a
candidate, and then distribute the rest of the votes for them according to
the next preference, or you reject the least-popular candidate and
distribute the second preferences of those voters among the rest. This is
pretty straightforward, often done by hand (in cases of thousands of votes
it takes a few people a few hours), and widely used.

More modern systems actually compare all the possible options to the votes
people made. The reason is to defeat some relatively complex gaming
strategies (such as "vote 1 for your second preference, 2 for your
first"), and because when you count many thousand votes it requires
millions of comparisons, is often implemented using the power of computers.

The Schulze system [1] is one of the latter. As well as being fairly
robust against gaming, and explicitly designed to actually reflect what
the overall community wants, it happens to be implemented in open source
python code[2], with an implementation available on the web[3] to play
around with.

==None of the above?
In systems where voting is optional and ballots can be exhausted, the  
final winning candidate may actually only be approved by a tiny handful.  
Imagine a case where there are 8 candidates to elect, and 8 candidates. 7  
are considered reasonable, and the 8th runs on a single policy which 6 of  
the 1000 voters support, 9 don't care about, and 985 think is a terrible  
idea and strongly oppose.

Rather than simply allowing such a candidate to be named as a  
representative of webizens, there should be an election where "none of the  
above" is considered a candidate (or a default option when preferences are  
exhausted), and any candidate who fails to beat "none of the above" will  
not be elected.

This may mean that while there are 8 places available, only 6 candidates  
are elected. Which may more accurately reflect the overall goals of the  
community. However it is not without risk of excluding outright small  
communities.

It was a system used in practice in the Soviet Union, where in some single  
candidate elections a candidate who failed to get 50% of the vote was not  
elected.

I have separated it from the rest of this discussion because it is not a  
necessary thing to do, but I believe it is worth considering.

[1] http://en.wikipedia.org/wiki/Schulze_STV
[2]
https://github.com/bradbeattie/python-vote-core/blob/master/pyvotecore/schulze_stv.py
[3] http://www.modernballots.com/ (complete with Zombie apocalypse
example…)

cheers

Chaals

-- 
Charles McCathie Nevile - Consultant (web standards) CTO Office, Yandex
         chaals@yandex-team.ru         Find more at http://yandex.com

Received on Saturday, 3 May 2014 11:27:57 UTC