I've been reading the oohing and aahing about the Obama web operation (for example, here at the Linux Journal); all those individual pages and RSS feeds and iCals for every event. It strikes me that some of this can be generalised, and that we can probably improve on it. After all, as LJ points out, the difference between this and the Republican view of the Internet (Talk radio! With porn!), which also happens to be the Government view, is that it's amenable to individual activists and groups of activists doing things other than sending shitty chain e-mail to their relatives and shouting a lot.
But it still doesn't really allow for them to participate in the direction of the campaign; and it's a one-off tailormade job. If you want to change something with design and engineering, you've got to think mass production - or better, lean production, being able to quickly change the product and still rip them out as if they were standard stampings, and mass customisation, designing to let the users alter the product before and after they get it. Perhaps the crucial factor in this is modularity; you break it down into lumps subject to old-fashioned mass production and configure them as desired.
Further, it's quite common to have an Internet-enabled campaign that sends messages down from headquarters to the mob; not just the organisational model of the 20th century mass party, as originally invented by the Tories in the late 19th century, but even more so, as the party members always had a significant influence on policy and personnel, whether formally (like the Labour and Liberal parties) or informally (like the Tories pre-1965 and pre-1998). However, the "Labour Supporters' Network" (copyright - Zack Ecksley) and the world of nicely on-message duckspeakers around Iain Dale's blog have about as much influence on their party headquarters as a passing slug. Donal Blaney, for all he's the most contemptible arsewit (copy-pasting early 90s Clinton-murder smears? changing the world, Don!) on the Internet, has got the right end of the stick there. But he's still just a one-way blowhard.
What do you need to campaign? You need to know what is happening at the top level, in your rough region, and in your locality. You need to have a locality - to join a group or form one. You need to tell others when and where things will happen. And, I think, you need to be able to escalate things up the organisation. We already have functions like this for various rather crappy geek newssites, but what is important is that the members of the N19 group or the Fisheries special-interest group can break the point out into the London or the Economic or the Environment group, and they can break it out into the main broadcast to everyone - completing the loop.
If this reminds you of Stafford Beer, it's entirely deliberate. Information should percolate up as the members want it to, and "perk" ought to be a better word than "digg".
|LOCALITY 1|LOCALITY 2|LOCALITY 3|
REGION 1 |REGION 2 |REGION 3
:THEME 2 :THEME 1 :THEME 3
| = UNIQUE
: = NON-UNIQUE
We have pretty good standards for all the information exchange involved; RSS for the various local, regional, thematic, and main broadcast messages, iCal for calendar events, GeoRSS for messages with location content. SMS or MMS for mobile alerts. And the relationships involved are all ones that can go in a database schema. Members are subsets of the campaign (the campaign, better, is a superset of the membership); they are also part of groups. Messages and events are held in their originating table, until escalated into the next one up or across. By default, each member page has the local, regional and main broadcast feeds, and all the links you need to join or create other groups, start events, subscribe to them, set up alerts, and recommend anything for escalation. All groups, locations, etc create public and password-protected feeds. GeoRSS, with iCal enclosures, should be as MVC as it gets.
Whilst working on the Viktorfeed, I never quite grokked what the various Python Web frameworks (y'know - django, zope, cherrypy, webpy) were for. Now, however, I've actually bothered to read the Django documentation and it looks like the perfect solution. Essentially, it lets you build all your database tables in Python classes, set up all the views of the data you might want, and fit them in whatever HTML chrome you like, as well as creating RSS feeds of any view you can create of the shared data. (*I know I'm years behind the kool kidz here, but, well.)
I think it would be a cracking idea to have a deployable, pythonic, hackable platform for weird political action; with options for resource control, you might be able to use it to run almost anything.