The project for which I created my Haskell libraries has officially started:
We are fundraising at rockethub.com
Imagine that you have to decide, with other people, about many small or big issues in your company, your town or your country; and you can, through a web application, choose whether to vote directly or to delegate your vote on a friend of yours who shares your point of view about this particular problem, or who is more knowledgeable about the issue at hand. Imagine that you can delegate on different persons depending on the topic, the group or the particular decision to be made. This persons can delegate their votes as well. Imagine that even yourself can receive delegated votes. But, in any case, anyone can later vote for themselves and override the vote of their delegates at any time during the voting process. This is called cascade delegation and revocable delegation.
Imagine that you can see the provisional results in real time, and you can change your vote during the voting period depending on these. This is called continuous-round voting.
Imagine that you can propose, or amend what others have proposed, and the people can vote the original proposal and the one you amended. This is called an open system of proposals and amends.
Imagine that you can create your own decision flow. Imagine that, for any collective decision to be made, you can configure, using menus, the form in which the decision should be written, which group of people should vote it, which percent of approval is required, which group of people will receive the proposal if it is approved or rejected and what they will do with it, and so on. This is an easy creation of decision flows.
Imagine that these decision flows can also be voted and amended, as a normal proposal would. Imagine that you have an application where you can define, again using simple menus, from the Constitution of a Country to the decision process of a particular working group in a company, or a small process for your friends to decide where to travel this summer. This is an open system for decision workflows.
Imagine that this process can run not on a central server, but on the computers of each and every person who wishes to connect to the cloud. For example, your own. Imagine that even after the voting process is finished, you can count again all the votes with your own software, so that there is no possible deceit. This is called direct verifiability.
Imagine that you can know how much each proposal costs you, and you can know in real time how the budget is spent. This is called direct budget and execution control.
Imagine that you can choose either to make your vote public to everyone, to a particular person or group of people (the people who delegated his vote to you, for example) or to make it anonymous. This is called customized confidentiality.
Imagine that you have access to a tool that, besides all that, can also automate any kind of decision process that is established now (He who can do more, can do less). You can limit the delegates, you can establish who will be able to propose, amend or vote. You can define weighted votes, quality votes, etc.
That would be the full implementation of the promises of the Internet for politics and decision making. That would mean to give back the power and the responsibility to the people. That would be to harness collective intelligence.
The Haskell programming language was chosen for the project from the very beginning, because it is high level, pure and functional. . . and fast. And, most of all, it is beautiful. That means that it is highly productive and one of the most verifiable languages. The latter is necessary when you have to trust in what the program does in a critical application such as electronic democracy.
The requirements of FFD are very demanding. If these requirements were to be met with current developments, a lot of coding, sometimes at a low level, would be needed; so we decided to start from the beginning.
From as early as 2005 we have been making mock-ups to test many concepts of FFD, like the system of proposals/amends, cascaded delegation, workflow traceability, versioning, revocable delegation and server synchronization.
In order to create such a demanding application, we needed a stack of libraries to carry out functionalities at a deeper level, so that various higher-level functionalities can be covered by a single deep-level functionality. For this purpose we have been developing several general purpose libraries, which are the base infrastructure of Friction-Free Democracy, and released them as open source.
For example, the Workflow library is in charge of definition, execution and workflow configuration. RefSerialize takes care of data compression and traceability of modifications. TCache carries out transactions and data persistence. MFlow executes web applications which use all these functionalities.