To help implement this "code-repository" goal, please consider the open-source "Vote-Info-Split-Join" ("VISJ") framework I've created.

On 9/11/2011 9:15 PM, Greg Nisbet wrote:
> ... If the community could settle on a single
> language for reference implementations (speed being less important
> here than clarity and familiarity) of various voting methods and maybe
> a quick language such as C, C++, D, or Java when additional speed is
> required, and possibly an efficiently parallelizable language (e.g.
> Erlang, Haskell) to allow for distributed computation and greater
> scalability.
>
> The point being, a lot of people have spent time writing code and some
> have reinvented the wheel in a slightly different form or in another
> language. It'd be nice to have code all in one place and establish a
> set of conventions for how new algorithms are to be represented.

The Vote-Info-Split-Join framework splits vote information into two paths, with one path being all the text information (such as election names, candidate names, etc.) and the other path being numeric information. The numeric information is the ballot-based preference information indexed by incrementally assigned case numbers, election ("question") numbers, and choice numbers.

This framework allows programmers to focus on just handling the preference information as numeric input, calculating the results using any programming language that implements any election-method algorithm, and then outputting the results in a numeric format.

The VISJ software joins (merges) the calculated numeric data with the text information, and creates the final output, which can be in HTML, XML (the current default), JSON, EML, or any other text-based format.

Changing the output layout, the output language, or nearly anything else about the output, just requires editing portions of the VISJ code, which is written in the easy-to-learn Dashrep language. Specifically, only a few "Dashrep phrases" need to be given new "definitions".

Notice that the election-method-algorithm programming code does not need to handle any text information, either for input or for output.

In actual elections the separation of text and numeric information enforces anonymity during result calculations. In other words, the candidate names and parties and other identifying information are not available to the software that calculates the results.

This framework allows different election methods to be implemented using different programming languages (Python, Perl, Ruby, etc.).

For comparing different election methods, the same numeric data (from multiple elections) can be supplied to different programs that calculate results for different election methods, and then the VISJ code, slightly modified, can join the different results (and display the results in comparison tables, or nearly any other layout). (If the speed of parallel-processing is desired, these separate programs can run on separate processors.)

The current version of this software handles input in a specific XML format (slightly modified from the VoteFair.org internal format), but it should be relatively easy to modify the code -- which is written in the Dashrep language -- to accommodate information coded in Election Markup Language (EML). The code contains instructions for making such changes.

Besides handling isolated single-winner elections, the VISJ framework is designed to also handle interconnected elections, meaning that all the information from a single ballot is kept together in the same "case".

The open-source code for the Vote-Info-Split-Join framework is on my GitHub account, named "CPSolver". That account also contains the code for the Dashrep engine, which I wrote in Perl. In turn (for those who don't know), Perl runs on Windows, Linux/Unix, MacOS, and virtually any other operating system. (Unlike many other Perl programs, the Dashrep engine does not need the CPAN environment.)

Here is the URL:

www.github.com/cpsolver

I had intended to announce this software earlier, but I've been distracted by the work of helping to write, edit, and refine the "Declaration of Election Method Experts and Enthusiasts".

Richard Fobes


----
Election-Methods mailing list - see http://electorama.com/em for list info

Reply via email to