The “Jugement Majoritaire 2017” Experiment


The CNRS (“Centre National de la Recherche Scientifique”, the French national center for scientific research), the Dauphine and Polytechnique schools and have teamed up to deploy Cocorico, an online blockchain-powered voting platform I’ve been developping for #MAVOIX, to test a new voting mecanism: the “majority judgment” (or “jugement majoritaire” in French).

They’ve decided to allow people to vote for the actual candidates to the French presidential election of 2017 using this new majority judgment technique. You can participate to this experiment here:

After just one year in the works, Cocorico is being endorsed by prestigious organisms such as the CNRS, Dauphine and Polytechnique as a tool to power their latest research in voting. I’m very proud and I think it opens the way for a wider approval and a bigger community around Cocorico, which I believe to be one of the core projects to move toward a more direct and efficient democracy.

About the majority judgement

This new mecanism is called majority judgment (“jugement majoritaire” in French). Here is an overview:

In Majority Judgment, Michel Balinski and Rida Laraki argue that the traditional theory of social choice offers no acceptable solution to the problems of how to elect, to judge, or to rank. […] It is at once meaningful, resists strategic manipulation, elicits honesty, and is not subject to the classical paradoxes encountered in practice, notably Condorcet’s and Arrow’s. They offer theoretical, practical, and experimental evidence—from national elections to figure skating competitions—to support their arguments. […]

Majority Judgment on The MIT Press

What makes the majority judgment so special and so meaningful is that each voter scores each candidate.

How it works inside Cocorico

First, Cocorico was not meant to be used for this kind of votes. It was designed to feature simple yes/no/blank votes. We made the corresponding changes for second round.

There were three main changes :

  1. We had to be able to customize the question asked to the voters. In a majority judgment vote, voters are asked a specific question such as “considering all the facts, to the best of my knowledge, I judge the following candidate for the 2017 French presidential election to be…” followed by the voting form.
  2. We had to be able to customize a list of candidates. To keep it generic, Cocorico handle thoses as “proposals”.
  3. We had to be able to customize a set of mentions (“passable”, “good”, “very good”…) the voter could chose from for each candidate. To keep it generic, Cocorico handle thoses as “choices”.

In the end, each vote is defined by :

  • one question
  • n proposals (one candidate per proposal)
  • m choices (mentions)

Therefore, each ballot is a array of n integers, where:

  • the index in the array is the index of the candidate (first candidate is element 0, second candidate is element 1, …);
  • the integer value in the corresponding array cell is the index of the mention the voter chose for that candidate.

Let’s say we have 4 candidates (A, B, C and D) and 3 mentions (“passable”, “good” and “very good”). Then the following ballot:

  • A: good
  • B: very good
  • C: passable
  • D: good

will translate into the following array representation:

1 2 0 1

This array value is then sent on the blockchain (Ethereum in Cocorico’s case) as a smart-contract method call transaction:

The code is trivial: after a bounds check, for each cell of the array, we simply increment the corresponding mention by one if a persistent result array.

Voting as a Service

This experiment is the definitive validation of the “Voting as a Service” bet I took with Cocorico a year ago: the platform provides a documented – soon to be public – API for thirds party app developers – such as – to create and manage votes.

Developers can then embed a “Vote” button – pretty much like Facebook’s “Like” button – in any content. When the voter clicks on that “Vote” button, Cocorico’s blockchain voting widget opens and handles the whole voting process.

In the case of this experiment, the voting button is embedded in a new kind of content: a Facebook bot. I’m not sure why they chose to use a Facebook bot. But what I’m sure about is that I’m glad I didn’t have to care about any of this. The whole “voting as a service” API worked just the same! To make sure Facebook users did not have to re-authenticate on the voting platform, the Facebook bot passes already known/authenticated users by leveraging Cocorico’s external user database mecanism.

The experiment development team barely asked me anything: they knew the platform already, they had all the required documentation and it was easy enough to use.

It’s transparent for the voters and pain-free for the developers. And it works.