USA : a bill to use approval voting

Interesting article on Slashdot about a bill in the USA that, if adopted, would change the voting system in New Hampshire to Approval Voting, using a variant that is included in PyVotons (classical version for now).

In the discussion, after mostly positive comments, a comment advocates the Schulze Method which is an interesting pick, has a lot of advantages and a big drawback : it is hard for voters to understand how the result in computed.

It should anyhow be included in PyVotons! supported voting systems.

Posted in Politics & society | 2 Comments

Client-Server communication protocol

First try for a client-server communication protocol.

Requests

The client sends requests to the server (including a request ID) and receives an answer (with the same ID). Each request is a JSON object, in fact a python dictionary  : {‘type’:’RequestType’, ‘data’:myParameters}

Request Types

List of possible client-server request types (first version) :

  1. ‘Auth’:user authentication
  2. ‘CreateUser’: create a new user
  3. ‘CreateScrutin’: creation a new poll,
  4. ‘GetScrutin’: get the data about a poll (date, questions…),
  5. ‘UpdateScrutin’: update the data of an existing poll,
  6. ‘GetVoteTemplate’: get poll data and the questions with possible answers to display a “vote” page,
  7. ‘CheckAndRegisterVote’: check if a vote is valid and register it,
  8. ‘GetResults’: get the results of a poll,
  9. ‘ListScrutins’: list all available polls for the current user (current, closed…),
  10. ‘UserGroupManagement’: Management of users and group rights

Parameters for each request type

– Auth :

data = {‘login’:login,  ‘pass’:password}

WARNING : a salt must be used during a new user registration; login, salt, and the SHA/MD5 hash of the combination (password + salt) must be saved in the database. Continue reading

Posted in Development | Leave a comment

PyVotons! : A polling software prototype

  1. Introduction

    PyVotons! is a free software to organize polls (online voting system).

    It is part of a larger project (Propositions) which aims to bring the tools to work together, elaborate propositions, debate and for collective decision-making.

    Developing a software for voting was needed to experiment alternative voting methods.

    As I had neither qualification nor interest in web interface development using AJAX technologies, I wrote a simple prototype for a polling software to elect candidates to an election. This classical version of PyVotons! must be used in a polling station (installed on a local voting computer), it is incomplete but usable.

The next version of PyVotons! will be a web version. All voters will be able to vote on a website where PyVotons! will be installed.

The technology used will be python/pyjamas for the user interface (code is written in python, and compiled to javascript/html/css), a SQL database on the server, and a server software in python (or another language depending on the server).

  1. PyVotons! main goals

    • demonstrate that a web voting system system is a realistic way of implementing direct democracy for use in an association or political party.
    • experiment voting systems that represent the opinion of voters better than those in use in our democracies.
  2. Downloads

    The web version is not functional yet. UI elements, a database structure were developed. A GIT repository is used to keep track of the development. It is not available online at the moment. Any volunteer is welcomed to contact us to help.

    Some pages show the graphical elements here.

  3. Older versions

    Only the source code is available (no package, no binary).

    The software should run on Linux, Windows and MacOS, but was tested only on Linux.

    To use it, a working version of Qt 4, PyQt 4 and Python is necessary.

    Download the last local version of PyVotons!, extract it in a directory.

    You can run CreerScrutin.py, Vote.py, and CalculResultatsDialog.py to start a poll, register votes and compute the results. For more details, please refer to the documentation (french).

  4. Documentation

    User Documentation

    Developer Documentation

  5. Tools, license and copyright

    This software uses these outstanding free software tools :

    • Python language;
    • Qt toolkit by Trolltech (now Nokia) for the UI of the local version
    • PyQt to use Qt with Python, by Riverbank computing
    • Pyjamas for the web version.

    PyVotons! is a free software written in 2009, 2010 and 2011 by Manik Bhattacharjee (manik-listes at altern.org), distributed under GNU GPL license version 3 (for local version) and Affero GPL version 3 (web version)

    GPL v3

  6. Todo list

    • Server-side software to store votes, communication protocol with voting server.
    • Add other voting methods
    • Try to use english in the code to ease international use and development.
    • Multi-language support.

Software of interest :

Glasnost, debian voting system, STV

Posted in Documentation | Leave a comment

PyVotons : a new website

Welcome to the new PyVotons! website.

The content of the previous site will be integrated shortly into this new website.

Posted in news | Leave a comment