2011 Wikimedia fundraiser/status
Last update on: 2012-01-31
Arthur Richards upgraded our CiviCRM platform to version 3.4, and wrote a contribution auditing framework for fundraising. Ryan Kaldari worked on a development roadmap for the CentralNotice extension, used for the global messaging to potential donors.
Arthur Richards continued work to streamline our audit framework to surface missing donation transactions. This has helped us find actual transactions that were not present in our fundraising database. Arthur also helped run a code sprint that gave the WMF instance of CiviCRM a huge performance increase. At the same time, the fundraising team started to create the next user stories to guide future development.
Arthur Richards, Ryan Kaldari and Katie Horn are wrapping up their first development sprint, and preparing for the next one beginning on July 5. Their work focuses on new features for CentralNotice to better facilitate banner management, as well as back-end enhancements to the donation processing pipeline.
Ryan Kaldari added some significant enhancements to CentralNotice that allow for the logging of changes to banners and campaigns and has begun working on implementing features to provide filtering of those logs based on criteria such as date, campaign, banner settings, author, etc. Katie Horn fixed a nasty issue with the PayflowPro Pending Processor script (which handles determining whether or not credit card donations flagged as 'pending' have been approved or not) where the processing script was not properly removing items from the queue after processing. She's also been working hard to add unit tests to new and existing code (in particular to the queue2civicrm module for Drupal/CiviCRM and the PayflowPro Pending Processor). Peter Youngmeister successfully puppetized Grosley (which hosts the fundraising CiviCRM instance as well as miscellaneous fundraising scripts). He and Arthur Richards then successfully upgraded the server to Ubuntu 10.04.2 LTS. Arthur Richards also added the 'ganglia_reporter' module to the suite of fundraising-related Drupal/CiviCRM modules which makes it trivial for other modules to report data to Ganglia in real-time using gmetric. He also leveraged this new module to implement a feature in the queue2civicrm module to report numbers of successful donations to Ganglia.
Ryan Kaldari modified CentralNotice to allow the logging of changes to banners and campaigns, and has begun working on a log filter. Katie Horn fixed an issue with the PayflowPro Pending Processor script (which handles determining whether or not credit card donations flagged as 'pending' have been approved or not). She's also added unit tests to new and existing code. Our server was successfully puppetized and upgraded by Peter Youngmeister and Arthur Richards. Arthur also set up advanced monitoring through Ganglia.
Ryan Kaldari built views and filters to facilitate reviewing changes to CentralNotice campaigns and banners. Katie Horn added an API to the ContributionTracking extension as well as minor bug fixes to some of our Drupal/CiviCRM modules. Jeremy Postlethwaite joined the team and began getting familiar with the code base. Arthur Richards added a new log parser and made bug fixes to the contribution auditing framework. Jeff Green analyzed our server architecture and began taking strides to increase resiliency and security.
Ryan Kaldari added increased logging for CentralNotice changes, including interfaces and filters to search and review them. Katie Horn abstracted and refactored the DonationInterface extension in preparation for supporting a new potential payment processor, GlobalCollect. The team also fixed a number of bugs and added new features (see the retrospective of sprints 5 & 6). Jeff Green continued general work to improve the resiliency and reliability of the fundraising architecture.
October was a very busy month for fundraising engineering, as the annual fundraiser is about to start. The biggest achievement was the rewrite and deployment of the credit card processing software, the DonationInterface extension. It now supports GlobalCollect, a new payment processor, in addition to the existing ones. Work is underway to add support for non-credit card payments. Another major feature of the extension is the ability to easily create new forms simply by inserting template tags into HTML markup; it also leverages MediaWiki's message translation system using translatewiki.net. Changes were made to the LandingCheck extension to determine whether to send users to donate.wikimedia.org (used by the Wikimedia Foundation) or wikimediafoundation.org (used by some Wikimedia chapters). Donators can now opt out from e-mails directly from the thank-you message they receive after their donation. Last, from an operations perspective, we increased the monitoring capacity of the servers in the payment cluster, as well as the redundancy of systems; we're currently working to implement automatic failover between our data centers.
The annual fundraiser launched, with support for 76 new credit card currencies, including some which have been long-desired: Rupees, Russian Rubles, and Brazilian Reals. The fundraising engineering team added support to the DonationInterface extension for JCB credit card donations, BPay in Australia, 3 new real time banking options including iDeal, direct debit for 6 countries, manual bank transfers in more than 50 countries, and Webmoney, with more on the way. DonationInterface also benefited from enhancements to the RapidHtml form templating system. From an operations perspective, databases were migrated for increased capacity and stability; the data center failover capacity was also consolidated by adding aluminium.wikimedia.org as a mirror of grosley.wikimedia.org (different data centers, identical hosts), which provide a bulk of our miscellaneous fundraising services (including CiviCRM). We also added the ability to have translated 'thank you' emails to our ThankYou module for Drupal/CiviCRM. The ContributionReporting extension was enhanced to allow custom selection of fundraising years to display, but the feature was disabled after it caused a site outage due to cache stampeding. The FundraiserLandingPage extension was developed and deployed, making it easier to dynamically construct template calls for fundraiser landing pages depending on a potential donor's country. Last, the team fixed a number of new bugs and issues, surfaced by the increased usage of the donation pipeline.
The DonationInterface extension underwent enhancements to tighten up security. Support was also added for monthly recurring donations for credit cards through our new payment processor, GlobalCollect, and we are working on automating the processing of recurring payments to our instance of CiviCRM. We built custom mass-mailing scripts to e-mail about 1 million past donors to encourage them to donate again. The ContributionReporting extension was enhanced by storing aggregated data in their own tables and updating them periodically, to eliminate the cache stampede problem uncovered last month. We added support for automatic notification of non-credit card payments from GlobalCollect, which allows us to automatically record donor and donation information in our donor database.
After meeting the budget goals, the 2011 Fundraiser was wrapped up in early January, after which the team participated in a two-day retrospective. Work began on the Fundraiser 2011 cleanup, including the addition of recurring donation and auditing support for GlobalCollect. A two-day inception was held for preliminary planning of the 2012 Fundraiser.