New OSS project: Solon Voting - cryptographically secure e-voting for delegated democracy platforms

Those who know me know how excited I am about open source as a phenomenon. I contribute to open source projects myself, but I'm just as excited about non-software incarnations about the same phenomenon. Wikipedia, Project Gutenberg or Open Clipart are obvious projects to mention. "Life in a day is an awesome movie that was mass-produced by thousands of Youtube users all around the world - things like this are only possible through the open source method. It's a bit embarrassing but I even get excited about viral videos and flashmobs.

One area that has not been discussed a lot - nor has there been much to discuss - is government. What would it mean to open source government? Yes, I'm aware of the so called Open Government and Open Data movements. This is mostly about publishing government owned data for public analysis. Social networking has also brought politicians closer to their constituents and thanks to this politicians seem to be more likely to be affected by public opinion (or outrage, as it sometimes happens) than before. All of this is great, and more transparency usually does good for the democratic process. But ultimately I don't see it as a revolutionary new way of government: the same old politicians from the same old parties remain in power while you play with their data.

Beth Noveck worked under President Obama to start the White House Open Government Initiative and recently spoke about this topic at TED Global 2012 (video of the talk). Even she speaks passionately about the fact that: "Simply throwing data over the transom doesn’t change how government works." While she is clearly enthusiastic about the opportunity to revolutionize democracy, she doesn't actually seem to have a proposal for how that should happen. The talk just continues to mention various apps created around open data, not really discussing any actual shift in power.

In 2004, before we had social media, Howard Dean ran for the Democratic presidential nomiation in the US. He created an innovative grass-roots campaign using Drupal as a platform. With his campaign he was able to mobilize much more grass-roots volunteers than ever before, including getting a large share of his campaign funding from small donations from these volunteers. Elements of this strategy were later adopted by the Obama campaign, and indeed Drupal now runs the whitehouse.gov website. This is an encouraging example of a small shift in power, where a candidate can win with support from ordinary citizens instead of winning with the support of campaign donations from big corporations. But still, the game is played by the old rules. It's encouraging, but not revolutionary.

I believe the revolution that is about to happen is called delegated democracy. It's a topic I've been thinking about for many years and in 2007 I actually gave a talk about it at Nottingham University.

Delegated democracy is a hybrid between representative democracy and direct democracy. Basically, the problem with representative democracy is that you can only delegate your powers to one elected representative (or worse, one that doesn't even get elected), who will then *represent* your powers for the next four years and there's nothing you can do to stop him. With the arrival of the internet, the argument goes that a more direct form of democracy is called for where each citizen can impact legislation directly, at any time. On the other hand direct democracy has the problem that nobody will have the time to properly familiarize himself with and then vote on all the issues a typical Parliament handles, which would lead to poor policymaking. Delegated democracy is therefore a hybrid approach: Citizens can delegate their powers to any other citizen - much like in representative democracy - but also they can at any time change their delegation, or just vote directly on an issue, so that their delegation is not kept "hostage" for a four year election period by a corrupt politician who didn't keep his election promises after all.

You can read about this in more depth from my Nottingham speech or at the Liquid Feedback website, but the above is really the essence of it. An open source revolution in government of course has to be something where we use computers and the internet to shift the balance of power from an exclusive group of politicians to the masses. This is exactly what open source does in other fields too.

Except for the day in Nottingham, I never wrote about or acted on these ideas before. But in July this Summer I found out about Liquid Feedback. This is a platform for delegated democracy created by a group of German developers, closely related to the German Pirate Party (and apparently also the famous Chaos Computer Club). It was even more exciting when I started looking into their platform that it implements almost exactly similar ideas that I had written down for my own talk - this reinforced my belief that when the time is right for an idea, then many people will come up with the idea independently. (...an argument against patents.)

Liquid Feedback is already very complete. The really exciting thing it is being actively used by many chapters of the Pirate Party, especially then in the German speaking countries. Since the Pirate Party in Germany already has representatives in many state parliaments, this means that these guys have started the revolution: you can have a direct impact on policymaking of their party, and the outcome of this process will dictate how their representatives will vote on legislation in an actual parliament. In other words: Delegated democracy has arrived! I should point out that the system has also been trialed by groups of some other German parties, as well as some local city governments. Yeah, it's all quite exciting.

I always thought that one day I shall do something about delegated democracy. When I found out about Liquid Feedback I of course immediately wanted to become a contributor. To be honest I was a bit put off when I discovered the core of this system is 100% implemented PostgreSQL PL/SQL procedures. (The full SQL schema is some 4000 lines, this includes an implementation of the Schulze rank voting method.) But eventually I admitted to myself that this is something I've been planning to do for ten years now, and in that moment I became a PostgreSQL hacker. Would you believe it, my PL/SQL patch is over 1000 lines!1

Like I said, the Liquid Feedback 2.0 is already a quite complete and usable system. It's geeky and hard to install, but the actual process of delegated democracy is all there. The only feature that didn't exist yet was some form of cryptographically secure voting algorithm - the votes are simply stored in plaintext in a Postgres table (users are authenticated by password).

Due to my interest in this topic I had over the years actually read several academic papers on cyptographically secure voting algorithms, so I decided that this shall be my contribution to delegated democracy. For various reasons - not the least of which is that I don't see myself implementing hard core cryptography in PL/SQL - I have started this as a separate project that can hook into a Liquid Feedback system if the user wants to enable secure voting. This kind of modular approach is of course well known in open source and makes total sense. Maybe in the future we will see other platforms for direct/delegated democracy surfacing, then they can choose to use this module too, while creating an entirely different user interface and political process.

I will write more, much more, about the cryptography itself in future blog posts. For now I will just mention that the intent is to implement a "Homomorphic" e-voting algorithm published in 2005 by Alessandro Acquisti. (If you don't get a headache reading that paper, then please consider helping me, please...)

And with these words, I'd like to invite my friends and passers by to check out my new Github project: Solon Voting.

  • 1The joke here is that in MySQL circles, which I have worked in professionally for 5 years now, writing your core logic as database stored procedures is considered a terrible anti-pattern.

Thanks for encouragement!

For you or anyone else that might be interested in helping, I'm trying to maintain a TODO / backlog on the github project here: https://github.com/henrikingo/solon-voting/blob/master/TODO.md

In particular, you don't need to be a math wizard to help. Installation scripts, tests, user interface etc are tasks that anyone can help with. I will continue to post blog posts about the design (with diagrams) so that people can understand the idea better. Stay tuned!

About the bookAbout this siteAcademicAccordAmazonAppleBeginnersBooksBuildBotBusiness modelsbzrCassandraCloudcloud computingclsCommunitycommunityleadershipsummitConsistencycoodiaryCopyrightCreative CommonscssDatabasesdataminingDatastaxDevOpsDistributed ConsensusDrizzleDrupalEconomyelectronEthicsEurovisionFacebookFrosconFunnyGaleraGISgithubGnomeGovernanceHandlerSocketHigh AvailabilityimpressionistimpressjsInkscapeInternetJavaScriptjsonKDEKubuntuLicensingLinuxMaidanMaker cultureMariaDBmarkdownMEAN stackMepSQLMicrosoftMobileMongoDBMontyProgramMusicMySQLMySQL ClusterNerdsNodeNoSQLNyrkiöodbaOpen ContentOpen SourceOpenSQLCampOracleOSConPAMPParkinsonPatentsPerconaperformancePersonalPhilosophyPHPPiratesPlanetDrupalPoliticsPostgreSQLPresalespresentationsPress releasesProgrammingRed HatReplicationSeveralninesSillySkySQLSolonStartupsSunSybaseSymbiansysbenchtalksTechnicalTechnologyThe making ofTransactionsTungstenTwitterUbuntuvolcanoWeb2.0WikipediaWork from HomexmlYouTube