- From: Charles McCathie Nevile <chaals@yandex-team.ru>
- Date: Sat, 03 May 2014 13:27:22 +0200
- To: "public-webizen@w3" <public-webizen@w3.org>
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