Project navigationRecent blog posts
Cameron at Spam v. FreedomCameron at GreenCommons.orgCameron at Not WindozeNavigationUser login |
Conecting local Campaign Volunteers with your Voter ListGreat news! Rob Thornton last week announced the release of the first publicly available version of CiviVoter and a new drupal module called Canvasser. Development was supported by the Green Party of Canada. Rob describes this as a "Developers' Release", not yet ready for prime time. But that too shall come. This story recounts the role which CampaignFoundations.com played in bringing this to the public. When I was on staff with the Georgia Green Party I worked with other Green IT developers on what I at that time called pclSupport. It was envisioned as a collection of scripts designed to make the Georgia voter database accessible to the Precinct Campaign Leaders who could actually put it to use canvassing their neighborhoods in support of Green candidates. We never got very far with it, or built much functionality. But James Jones started the project by scripting routines which would regularly handle the importation of the annual voter and voting history files provided by the Georgia Secretary of State's office; and to handle the monthly 'transactionals' they would send out of the updates to that list. He then took the SQL database queries I had developed for the 2001 municipal races to extract and normalize county and district and precinct lists, and wrapped them in some perl code which automated the process to generate ready to distribute files for each of Georgia's 159 counties. Every election cycle I would return to and extend that code to produce walking lists for our ballot access petition canvassers, or to match that data to phone lists to support phone banks for our candidates or to provide data on each precinct in Georgia to the folks managing our poll watching program. Still, pclSupport never progressed past a collection of perl scripts useful only to IT folks with comfort at a command line. The November 2006 U.S. General Election was winding down, and with the polls opening the next morning, I was looking forward to a little down time for recovery. I got a call on that morning of Monday, November 6th. It was Pierre Denis, IT Team Manager for the Green Party of Canada. I had worked a contract during the Winter 2006 Federal Election providing IT support for their slate of 308 candidates. I had shared with him something of the work I had done for the Georgia Party and of my eagerness to continue to develop those tools. Since the Winter 2006 election, Pierre has been kind enough to call for a number of small jobs for them handling administrative and development projects. That November morning Pierre called to say that a writ had just been dropped for a by-election in the London North Ontario Riding. Elizabeth May, the newly elected Leader of the Green Party of Canada was entering the race to become a Member of the Federal Parliament in Ottawa. Pierre had spent the weekend using Dreamweaver to mock-up a phone canvas application they wished to host on their website. His application interacted directly with the voter database they had loaded into the backend of an installation of CiviCRM. Dreamweaver gave him a pretty design for the end-user. But he was running up against the limits of letting a consumer-grade Integrated Development Environment write code for him. And with an election afoot he was quickly running out of time to make his mocked up application function in the real world. He asked if I was available. Except perhaps for the exhaustion issue, his timing could not have been better. At first he asked me to debug some issues he was having with his application's ability to maintain state across web requests. And he asked me to review the code and make recommendations. I spent that afternoon reviewing his code and starting the next evening shortly after the polls closed on the US election, outlined a letter on how I would proceed with development. It suggested a few enhancements that screamed for development given my experience earlier with pclSupport, most notably the need to household the data before presenting it to the phone canvassers. The next day I crafted a patch that squashed the bug he had identified as his chief concern. An election is a crazy time to engage in new code development. But it is also when the Canadian Party had the money to fund the work. Here we were in the heat of an election. Pierre and I conferred by phone nearly daily. Key in his mind was that the application I was working with, less than a week old when I first read it, was already in production, being used by actual campaign volunteers to call actual voters for an actual campaign. His prime directive for me was that I was to do no harm. I spent that entire election urging that we focus on householding the data. The Campaign manager in London North Ontario was more concerned with his volunteers' morale. Consequently I spent more time fixing errors in the statistical reporting of our progress through the list, explaining why a now accurate count of our progress calling the Riding should not be misread as a step backward, even though it showed fewer calls having been made than the volunteers had previously been led to expect; creating online user documentation of the application and fielding user's support requests and bug reports. This was my first time down in the guts of the CiviCRM database schema. I spent a couple of days learning how CiviCRM normalizes its data and how to properly relate its tables with one another. I spent time experimenting with new indexes to speed up the multi-table joins required to support the canvas application. That quirky, buggy piece of php code limped along with Pierre and I putting in 60 hour weeks trying to stay a step ahead of our users. Finally in the last few days before the polls opened in that London Ontario Riding, Pierre freed me up to focus on delivering the ability to household the data. Except for a crisis at home and an out-of-town conference that last weekend, I would have delivered the householding function in time for the GOTV calls. When the polls closed on November 27th, I was trully exhausted. But we had also made history. Elizabeth May had placed second, with 25.9 per cent of the vote, a narrow margin behind the prevailing Liberal Party candidate and placing ahead of both the NDP and the Conservative candidates. The Conservative was a former Mayor of London Ontario. Canadian Greens from across the continent had participated in this campaign. Nearly two hundred Green Party volunteers from every Province and a couple of the Territories had been given a password which they used to log in to our canvas application to make calls on behalf of Ms. May from the comfort of their own homes. And those calls translated directly into votes. Where the Green in the previous election had taken only 5.5% of the vote, now 8,000 phone calls translated directly into over 10,000 votes and an historic second place showing for the Green candidate. Pierre and I got some sleep. The next week, after the post-mortems and paperwork were complete, Pierre and I conferred by phone again. The canvas application we had held together with bailing wire and bubblegum was merely a prototype, he said. He wanted to start from scratch, build something that would integrate more closely with CiviCRM and take the time to do it right. He asked me to write a specification he could take to a CiviCRM developer for development. I wrote that spec and about a week later spoke with Rob Thorton by phone to review it point-by-point. Pierre had me research phone number matching options. I did a bit of testing on early versions of Rob's modules. But the project was essentially in Rob's hands. Pierre had other projects to occupy my time. But now Rob has taken his work public and I will over the coming month begin to test and experiment with his creation. Its my hope that CampaignFoundations.com will be prepared to offer this new functionality as the key component of a new Campaign Hosting Package, Premium in time for the Fall 2007 elections, if not for the Summer races. We've imagined being able to make such a tool affordably available to Green candidates since before we first launched our Basic package. Thanks to the investments made by the Green Party of Canada, that time appears to be drawing close. -- 30 --
Submitted by hesco on Wed, 2007-03-28 20:38. hesco's blog
|