Garage:PoliticalMemory

Political Memory is a free(as speech) software toolbox designed to help you reach members of European Parliament (MEPs), and track their voting records. An ongoing rewriting from a hackish perl+noDB+wiki_pages architecture to a brand new Django webapp needs YOU  To take part in the project you can subscribe to the dedicated mailing list

Description

 * Pages on this wiki related to Political Memory are based upon a Berkeley DB XML database (BDB XML). Some Perl scripts are run to create this database, to extract informations from this database in order to create wiki pages, or to update this database from updates made on the wiki pages. Hence these wiki pages can be viewed as a frontend to this database. However there is no real time synchronizations between the database and the wiki pages. Updates of the wiki from the database, and conversely, are frequently made in a semi-automatic way. For more information, see http://www.laquadrature.net/wiki/Political_Memory_Software

From Stefan P., initiator of the "djangoification":
"Technically, I have chosen Couchdb to store the data. Nevermind the nosql fad, document databases aren't new and imho fit this project very well. The alternative, it seems to me, would involve spending time on database modeling, which tend to be relatively static and/or complex anyway, or to store unstructured data in SQL, which tends to be useless :p

Couchdb has versioning and replication, with some framework for merges and conflict resolutions, which will come in handy to handle updates that can come both from users and from updates in source sites.

We wanted a platform easy to work with for as many people as possible, and so we picked the well-known python based Django framework.

''As of right now, I have a simple working system that takes the MEPs part of the memopol 1 wiki-based tool, stores it as JSON in couchdb with minimal structure changes, and lets people see lists of MEPs (by name, country, ...), individual profiles of MEPs, and lets them add moderated comments on those profiles."''

Resources
You can find the repository at the following address : http://github.com/stefanp/memopol2

Milestone 1
Milestone 1 would be to complete that initial work up to the point of being able to replace memopol 1 - basically:


 * including all the current data and views with one screen per Member, with all the links to country, group, commissions, etc...
 * To have a simple form "add a public position of this Member" (with text field + source URL field). moderated a posteriori for logged users, a priori for non-logged users.

Milestone 2
After that,
 * an important part is code to import data from official sites, and keeping it up-to-date on our side.
 * A complex search engine
 * visualisation modules

Further
Thinking ahead a bit, in the long run, I think it should be possible to build a web GUI that would let volunteers add new sources by entering URLs, mapping the structure of those pages to the small number of core fields we need to know how to find (think dom inspector or firebug, where hovering on parts of a page  adds a colored border). Once the source properly configured, site admins could choose to approve it and make the new data publically visible on the site. Anyway, we'll see - I think this is simpler/easier than it sounds.

Here is a suggestion on how to do this: use an xml parser that takes an html/xhtml node and loads it. Allow user to map column headers to data fields. Import data = done! To make it sexy and work well, do a javascript injection that allows table elements to be draggable and let the user drag the table they want to import. We could have the html grab portion search for table elements and let the user select which one they want to use from instead.