Beyond Software: What Open Source can teach the world.
Richard Stallman has many times argued that Open Source Software (OSS) merely refers to a model of software development, while Free Software refers to a social movement. I don’t tend to agree with Stallman, and I tend to side with the people that care about Open Source as an efficient way to develop software. But regardless of whether you think closed source software is immoral (as Stallman does) or not (like myself), there are things about how the (F)OSS community manages their projects that are not just efficient, or moral, but plainly and objectively superior to the way we handle things in our daily lives. Perhaps the most jarring one is Democracy.
Think about it for a second. How does enormous projects such as Debian, Ubuntu, Wikimedia, Gentoo, and Fedora manage to develop, meet release dates, make roadmaps, distribute their work, and many other things, while still being Open Source? Doesn’t Open Source means everyone can change the code? Yes. It does. What Open Source doesn’t mean is anarchy, or lack of central planning.
So how did this projects managed to still be open source while having central planning? Easy enough: By using democratic tools, in this sense, you can think of some of these projects as relatively big experiments on democracy, Debian even has its own constitution.
And what happens when a bunch of engineers, mathematicians, computer scientists, among others, set themselves the goal to select a democratic process? More often than not, better things happen than when the same thing is picked by a set of politicians.
First things first: Electing leaders
So you probably think this is an easy one, don’t you? We’ve been electing leaders for quite some time now, surely, we’ve figured it out. Well no. There’s a set of very interesting results in electoral science initiated by the Nobel Winning economist Kenneth Arrow (there were others before him who also discovered important things, but none as important, among those was the Marquis of Condorcet, whose name will soon make a comeback), who in 1950 published a paper that focused on what is known as Arrow’s Impossibility Theorem, where he proved that no electoral system can accomplish a set of desirable features all at the same time (this isn’t precise, there are a few systems which escape this theorem, but not to other stronger theorems, for technical reasons not worth discussing now some systems are not covered by Arrow’s definition of voting).
Some took this the wrong way, some thought of Arrow as someone who was against democracy, but this couldn’t be further from the truth, as he once said, his result was akin to thermodynamics which ruled out the existence of a perfect engine, but that was hardly a reason not to perfect our current engines!. So Arrow pretty much pushed the world of academics into thinking What makes a good electoral system? And once this question was asked, something was discovered: First Past The Post (FPTP, also known as Plurality, or Winner takes all, or what is used in most of the world) is among the worst of all.
Have you ever looked at those old history books? Look at the pages describing the start of any country’s democracy, you’ll notice a constant: It started with many parties, political diversity was at the order of the day. Look at those same countries now, if enough time has passed (i.e. not a democracy that was born yesterday), all of them now are trapped in what is known as two-party domination, this is an inescapable consequence of their voting system. It’s tad long to explain, but basically it happens because this system allows Minority Rule (imagine an election with 10 parties, one party got 19%, the rest got 9%, even though 81% of the population didn’t want it, the party with 19% won), and it suffers from a terrible spoiler effect which in turns causes what is known as the wasted vote effect.
This means people is forced to lie in order to stop the candidate they dislike to win, over time, this predictably causes the collapse of all parties but two, the terrible thing is that preferences have not changed, and the political positions of the people are still divided into many. It’s commonly said among the electoral geeks that it makes people choose between being a liar or a fool.
The alternatives used around the globe
Hey, but you may be from Australia or from France. And you guys have fixed this, right? I mean, Australia uses what is known as IRV (Instant Runoff Voting or Alternative Vote or Fair Vote) and France, like other countries, uses a second round, so they surely figured it out!. Nope. IRV is slight improvement over FPTP as is a second round, but both have terrible strategic consequences that still end up in two-party domination (in fact, there’s empirical evidence that suggests that IRV is worse than FPTP and Second Round, not to mention people in Australia hate it).
A system with a second round is pretty straight forward, you go to the voting booth and select your favorite candidate, if he doesn’t end up in the top two, he gets eliminated and then you vote again among the two survivors. IRV is mostly a simulation of this, you make a list ordering your candidates, the first is your first vote, the second, is in case your favorite candidate has been eliminated, the third, in case the first and the second have been eliminated and so on. Let me give you a simple example of why this is terrible: If A gets 5% of the first votes, B 15%, C 30%, D 40%, and E 10%, then A gets eliminated and we check their second option, but imagine A was the second option of all other people, then in an election of A versus each candidate, A would’ve won!. This is what is known as the Condorcet Winner (the winner that beats all other candidates in 1 versus 1 matches), and IRV (and second round) declared him not just a loser, but the loser.
Exploring Open Source democracies: Debian’s and Ubuntu’s Voting System
As I explained a second ago the Condorcet Winner is the candidate who wins against all other candidates in individual matches. This seems like quite a desirable property, but is tricky to obtain without big issues. Happily a very good Condorcet system was developed in 1997 by Markus Schulze, the way to pick the winner is not so easy to explain, for the voter there’s little difference between IRV and Schulze’s Method, he just ranks his candidates from favorite to least favorite (unlike IRV, ties are allowed). To determine the winner we generate a matrix of pairwise preferences, and then we need to determine the strongest path (we can simply use the Floyd-Warshall algorithm, Wikipedia also has a very graphic way of showing it), if there’s a Condorcet Winner, Schulze will provide it.
Schulze is much better than FPTP, IRV or Second Round. In fact, according to many (but not myself) it’s the best of all (currently known) voting systems. It solves a ton of problem related to the previous systems, specially if voters are honest when voting. It isn’t perfect of course, Arrow’s theorem makes that impossible, but if voters are honest the outcome is an order of magnitude better than FPTP, and if every voter is dishonest (i.e. votes strategically) it’s still better than IRV, FPTP and Second Round.
However, Schulze has a couple of big problems: Not going to vote for your favorite candidate can make him win while going can make him lose and betraying your favorite candidate is a viable strategy to keep someone out of the office, the last result means that despite all of its advantages Schulze also tends to two-party domination (albeit at a much slower pace).
Exploring Open Source’s democracies: Fedora’s Voting System
Fedora uses a different system, a system that in my opinion is the best of all. The system is known as Range Voting (or Score Voting). Instead of voters making a partial order (a list) as in Condorcet systems, here you give candidates a score (the scale can vary), then all the scores are aggregated and the candidate with the highest score wins (equivalently, the candidate with the highest average wins).
You’ve probably used this system yourself as this is how you vote on IMDb for example, and you recently saw this voting system in action in the Olympics (gymnastics scores are determined using a slightly modified range voting). What are the advantages of this system? There’s many, and there’s a deep philosophical principle that is playing here, but the most obvious advantage is that you can support your favorite candidate without that helping the one you don’t like (in other words, it never makes sense to rate your favorite candidate lower to stop someone from winning) and thus it doesn’t tend to two-party domination.
What’s criticized often about Range Voting is that it fails to pass the Majority Rule, this means that a candidate that is ranked higher by 50% + 1 of the population can lose, you may think this is a defect, but it’s in fact merely because the philosophy behind Range Voting is less childish.
Range Voting is designed to maximize voter’s satisfaction with the outcome of the election, and the highest overall satisfaction of the electorate isn’t always provided by majority rule. How so? Imagine we want to go to a restaurant to pick something to eat, we’re a group of 10: 6 vote for Tacos and 4 for Pizza, according to majority rule then we should go to eat Tacos, but what happens if we have more information, like we do in Range Voting (in this case a scale 0 to 10, any scale is possible, including words representing numbers)?
Taco Voters: 10 for tacos, 8 for pizza.
Pizza Voters: 10 for pizza, 0 for tacos.
Indeed the second group can’t tolerate tacos, so according to majority rule we should go eat tacos despite that resulting in a miserable afternoon for 40% of our group (an overall satisfaction of 6), while going for Pizza (as Range Voting says) results in an overall satisfaction of 9.2. In fact, it’s pretty easy to create examples with as many options (i.e. more candidates) as we wish in which the winner of plurality provides the worst satisfaction of all candidates.
So kudos to Fedora for picking a system that allows voters to express themselves more and that doesn’t tend to two-party domination, and that also maximizes as most as possible the happiness of its voters.
Beyond Voting Systems: The Open Source development model as a governance model
So many OSS projects use superior voting systems, but that’s merely picking better alternatives from existing alternatives (France has done large scales experiments with voting systems, and by the way, FPTP, IRV and Second Round were all a failure of democracy, warning: French ahead, simplified summary in English). In this sense, while these OSS projects were smarter than all countries, they didn’t create anything new, or did they?
We’ve merely sorted out how to elect the leaders, but we’re far from being able to manage the code changes, aren’t we? I mean, everyone can download and modify the source code as they please, but you can’t simply commit a change to Netrunner and having it ship with the official version, no matter how open source Netrunner, Ubuntu, Debian, or what have you is. There’s a system in place.
The most common way is that changes to the main repository have to be approved by the main developers, so anyone can try to merge something into the main tree but it has to first be approved. Simple, right? Now imagine we applied a system like this to our legal system. All persons (who have enough knowledge to write in the required legal language, just like anyone who has enough coding skills can with open source projects) could propose commits to our constitution and legal systems, these commits could be later evaluated by the people we elected to office using a superior voting mechanism, like Range Voting.
In fact, although this is not my personal preference, a system of direct democracy using a similar system is easily conceivable, the elected officers’ job could be to make sure the proposed laws make legal sense and are fully compatible with the current law (by this I don’t mean that the constitution can’t be changed, just that the changes need to produce a consistent legal framework), then if the law is deemed to be consistent, the people could vote to decide if it passes or not, this has the inherent disadvantage of being very inconvenient, there are hundreds of law proposals, and therefore, it’s rather hard for the people to constantly vote on them, and alternative system would be to let people vote just for major changes in law, which seems more reasonable and doable to me, and is in fact done in some places, you could also implement a system of direct democracy that allows to revert any law passed by the representatives through a referendum. So say we do exactly that, anyone can propose laws, major changes are voted directly, the rest is voted by the elected people we put in office, what about the non-legal experts? Do they get a saying beyond electing representatives and voting once in a while on referendums?
Again, the Open Source community has fixed this already. To better communicate with its users they’re allowed to write and send bug reports, i.e. mistakes in the software, these are equally open to non-coders and coders. All users are also free to submit feature requests and vote feature request themselves. Again by analogy, we can create a system where citizens can report mistakes (i.e. dissatisfaction with something, although this mostly exists in some form or another already) and a system in which they can request stuff they want to happen without being an expert, all people can vote each request and as a consequence we get more information on what people want, and therefore, can start working to implement some of them and fix others.
The jump of going from Plurality and our current Congress-Parliament system to Range Voting and Open Governance would be potentially as big as the change from non-democracy to democracy was. There’s a bit of evidence for this statement based on something known as Bayesian Regret which is obtained by running computer simulated elections (the closer the system is to the left the smaller the dissatisfaction is among voters with the result):
So the voting system alone makes a big difference. Open Source projects have proven that these systems are fully workable, they’ve managed to plan big releases, elect leaders, make big changes, allow any developer from anywhere around the world to contribute, all of this while producing beautiful, functional, secure operating systems, and applications of all types, built by tens of thousands of contributors ranging from all levels of technical knowledge. Sometimes there’s an overly individualistic way of thinking, and while thinking from an individualistic perspective is good for many things, there’s also things that we do better when we work together, and open source development is one of those things, and governments are obviously other type of thing in which doing stuff together works.
The satisfaction of people with the results of their governments and the result of elections is what we should be prioritizing (and the only way to accomplish this is by letting their preferences shape the state of their countries), isn’t this what democracy is about? Allowing regular people, without being elected to office to propose laws and to reject or approve others is a big step forward in knowing what satisfies citizens and a step closer to a government truly built by all contributors, voters, citizens or tax payers, just taking a fast look at the current state of affairs in many countries is enough to realize that our current democracies are deeply flawed, and is in hard times when this shows, when we need democracy to work better and allow people to work together easily, that’s when our current systems more often fail:
And while everyone agrees democracies can be improved, there are few examples of real alternatives being used somewhere. So perhaps we, the community around Linux, Netrunner and other Open Source Projects, could once in a while promote these concepts to the rest of the world, because our ideas (as a group) can not only provide people with better, more open, flexible operating systems and applications, but the same ideas may end up giving the world better democracies. People more satisfied not only with their operating systems, but also with their governments.
Hm, I gotta study some of those links, but, so far, I really think the Australian system is the best.
There’s also a problem with the Fedora system. At first, people wouldn’t vote dishonestly as in the FPTP, but they might vote dishonestly by giving dishonest grades. For example, I think candidate A is an 8 and candidate B is a 2. But, to maximize A’s chances, I give him a 10 and I give B a 0, so it gets really close to FTPT. I might even give other candidates good grades, if I think B has too much chances of winning.
It might work in an honest, small and dedicated community such as Fedora’s, in broader situations, it doesn’t seem much better than other systems.
It’s nice to see interest on this topic. However, the Australian system (IRV) is among the worst of all, the strategy when there’s more than one candidate is really terrible, and it tends to two-party domination. On the other hand, Fedora’s system (RV) while it has a definitive strategy its effects are rather minor.
There was a big experiment done by the French that pretty much confirmed what the math suggested: Two rounds, IRV and FPTP are worse than all other alternatives.
Strategic Voting in Range Voting collapses into strategic approval voting, as you can see in the Bayesian Regression, the best case scenario of IRV (all voters are honest) is inferior to the worst case scenario of Approval Voting (all voters vote strategically), and incidentally Range Voting. In fact, if all voters voted strategically in Approval Voting or Range Voting you would get a strong Nash equilibrium (http://en.wikipedia.org/wiki/Strong_Nash_equilibrium).
It’s kinda geeky, but IRV is just a bad system. Range Voting is mathematically and philosophically the best one (and it totally doesn’t tend to two party domination, which IRV does, and is not only a matter of theory, Australia is under two party domination).
What I didn’t discuss in this article that I may discuss in a future follow-up (or I could update this one) is how to elect parliaments, which is a different type of problem.
You have no idea how useful this article was for me! Also I love the way you write sweetie!!!
Hi, I’d like to ask your permission to re-blog your post, or at least parts(s) of it, with, or without pictures, as you prefer. With a link back and acknowledgement of the original author, of course. my site is quite new, but I am adding content rapidly, before I attempt to promote it to a wider audience (currently I am getting a rather low amount of views). It is not a technical blog, but concerned with free and open source aspects of “things in general”. :) Thank you kindly for your time, – A.
[…] Less advanced users also benefit enormously from the community effort. Apart from having a constantly evolving system, free of charge, they might find countless forums and other channels offering help from the community, should they encounter any problem with their system. It may not sound as fancy as a professional call centre, but it also costs less, never-mind the benefit of belonging to a great bunch a of people, helping each other out, wherever they can. Although most support forums are based around individual distributions, and this might limit their usage somewhat, there are others out there for more general/generic questions and answers. It is basically a global knowledge base, that is built, just like the system itself, by the community, for the community, for everyone’s benefit, and no one single company’s or corporation’s profit. The world could definitely learn from such system. (A great article on how we may learn from the open source community, can also be found here.) […]
Good Article !!
Thanks!