Preference Router
Thomas von der Elbe
ThomasvonderElbe at gmx.de
Wed Mar 24 12:54:33 EDT 2010
Hello folks,
We require a preference router to enable free-range voting. This job
is open and if anyone wants to tackle it, that would be great!
A preference router is a server that provides HTTP redirection
services for registered voters. It may be coded as a service of
Votorola (Java), a service of another project, or as a stand-alone
project of its own (any language). Here is Mike's preliminary design
sketch. Comments and critique are welcome.
STRUCTURE
---------
The preference router (R) is associated 1:1 with a pollwiki (PW).^[1]
(PW)
/|\
/ | \
/ | \
/ | \ PW pollwiki (common issues)
/ | \ PS pollserver (Votorola and others)
(PS)--(R)---(PS) R preference router
\ | / TS trustserver (common registrants)
\ | /
\ | /
\ | /
\|/
(TS)
The router is associated with multiple pollservers (PS) and
trustservers (TS, but only 1 in the initial impl). It has any number
of Web clients (PW, and many others not shown). The router accepts
requests from these clients in this format:
R-URL ? PS-PARAMS [& R-PARAMS]
where:
R-URL = URL of the router
PS-PARAMS = parameters for the pollserver
R-PARAMS = parameters for the routing service
FUNCTION
--------
The router ultimately replies to each request with a 303 redirect to:
PS-URL ? PS-PARAMS
PS-URL is the URL of the user's preferred pollserver. It is
determined as follows. First the router discovers the identity of the
requesting user by one of these methods:
a) A cookie. The user ID is cached as a cookie in cases (b) and (c)
below.
b) Querying the associated pollwiki for a logged-in user, via
either:
* http://www.mediawiki.org/wiki/API:Query_-_Meta#userinfo_.2F_ui
* Special:Mypage
c) Asking the user for his/her ID (the ID need not be
authenticated).
* Other methods (future), such as browser extensions that expose a
user ID for preference purposes.
The user's preferred type of pollserver ("Votorola", "Adhocracy",
etc.) is then fetched from the registration list (ultimately from the
TS/streetwiki). It is translated to a local PS-URL via a routing
table. The routing table is stored in the pollwiki, under editorial
supervision of the router administrator and others.
EXAMPLE
-------
Here is the routing table, pointing to our local pollservers
(suppose):
Adhocracy = http://e.adhocracy.cc/
Votorola = http://u.zelea.com:8080/v/w/e/
A request URL is posted (say) to a discussion forum:
http://router.erehwon.org/?a=v&u=Abd-LomaxdesignCom&p=m
I see the URL and I click on it. The router discovers my username
from the pollwiki (because I'm permanently logged in there). It then
discovers my preference for Votorola servers, which I've encoded on my
user page (because our pollwiki is also going to be a streetwiki). My
request is therefore redirected to:
http://u.zelea.com:8080/v/w/e/?a=v&u=Abd-LomaxdesignCom&p=m
I can then click on the Vote button, or browse around for other
candidates.
We need preference routing for step 3c of the plans.^[1] But if we
code it sooner, then the open architecture (shared voter register,
issues, electoral districts, and so forth) might be more attractive to
other projects, and more likely to succeed.
[1] http://u.zelea.com/wiki/User:Mike-ZeleaCom/p/vop
Best,
Thomas
More information about the Votorola
mailing list