Rapid prototyping of an open voting architecture

Michael Allan mike at zelea.com
Sun Dec 20 23:31:31 EST 2009


This post is transcribed from the wiki text:
http://t.zelea.com/wiki/User:Mike-ZeleaCom/Opening_an_architecture#Rapid_prototyping

In recent discussions off list, it was suggested that rapid
prototyping might be used to implement an open voting architecture,
as a temporary measure, prior to a full-scale design effort.  This is
a description of the implementation method.  In summary:
(1) registration data are posted to the Web in a flat file;
(2) voting engines read the data to compile their voter lists;
(3) votes of each engine are likewise posted in flat files; and
(4) other engines read the vote data and image the votes.
These hacks should suffice to implement the use case of free-range
voting in as little as 3 weeks.

Method
------

 1. Create a register of the voters who are eligible to vote on
    architectural design documents. ^[1][2]

    a) In a wiki, create a list of e-democracy projects.

       Define the criteria for inclusion in the list.  For example, a
       project must have running code (alpha or later), and must be a
       participant in the prototyping effort. ^[2]

    b) Under each project, enter the names of up to 4 individuals who
       are eligible to vote.  These individuals will typically be
       contributors to the project.  The limit of 4 is intended to
       equalize the representation across all projects (large and
       small).

       The length of the resulting *registration list* is 4P or less,
       where P is the number of projects.  This is short enough that
       sock puppets are easy to detect.  The list may therefore claim
       to be *tight*.

    c) Under each name, enter that individual's *personal identifiers*
       (OpenID, email address and engine-specific usernames).  Cover
       whatever identifier formats are used by the participating
       voting engines.

 2. Code the *voter list* compilation for each engine.  This is a
    temporary hack for the list compiler. ^[1]

    a) Copy the registration list from the register (1).

    b) Translate the registration list to the engine's native
       voter-eligiblity format.  The result is effectively a voter
       list for that engine.  Its content will be equivalent to that
       of the other engines' lists.

    c) Recompile the list periodically, as needed.

 3. Code the export of *original votes* from each *source engine*.
    This is a temporary hack for the *vote monitoring* interface.  For
    each architectural document at issue: ^[3]

    a) Create a new poll (aka. "issue").

    b) Export all of the poll's original votes to a text file (vote
       list).  For each original vote in the list, record the
       particulars that define it.  The exact format will depend on
       the engine's voting method, but just as an example:

          i. Subject identifier (voter)
         ii. Object identifier (delegate or proposal)
        iii. Timestamp ^[4]

    c) Post the vote list to the Web at BASE_URL/ISSUE, where BASE_URL
       is the URL for all of the engine's vote lists; and ISSUE is a
       pre-agreed universal identifier for the prospective issue
       (i.e. for the architectural document).

    d) Re-export the vote list periodically, as needed.

 4. Code the *pull mirroring* on each *destination engine*.  This is a
    temporary hack for an autocaster.  For each source engine (3):
    ^[3]

    a) Copy the vote list from the source engine.

    b) Translate each original vote to an *image vote* in the
       destination engine's native format.

    c) Re-pull the vote list periodically, as needed.

 The shared voter registrations (1,2) will enable the developers (as
 users) to wander from engine to engine, without restriction.  The
 vote mirroring (3,4) will effectively pool their votes across all
 engines.  Thus free-range voting may be implemented in alpha
 prototype.  Developers may use the prototype to vote up the design
 documents, even while they develop the code to the specifications of
 the design.  Later, when residential registers are brought online,
 voting may be extended to the general public.

Notes
-----

 [1] http://t.zelea.com/wiki/User:Mike-ZeleaCom/Registration_framework

 [2] The general category of voted issues and the eligibility criteria
     for the voters do not really matter.  But voting on the
     architectural documents (as the issue) has the advantage of
     enabling the developers to eat their own dogfood.

 [3] http://t.zelea.com/wiki/User:ThomasvonderElbe_GmxDe/Vote_mirroring

 [4] Timestamping of exported votes allows for older originals to be
     replaced by newer images.


Comments and critique are welcome,
-- 
Michael Allan

Toronto, +1 647-436-4521
http://zelea.com/



More information about the Votorola mailing list