Fundraising tech

This document should explain or link to everything needed for fundraising tech development.

Rationale
Manage the incoming donation pipeline from Extension:CentralNotice through the CRM and reporting modules.

We do not write banners or run tests, we support the people and software that run them.

Roadmap
Click here for fr-tech's detailed Roadmap

Rhythm and code freeze
We have a special yearly window of not deploying major changes to some critical systems starting in the fall, in preparation for the Big English drive. Game on again in mid-January, assuming we haven't emitted a puff of smoke in early December.

This code freeze gives our development an annual cadence, with each season seeing similar types and intensities of work, year-over-year. Any long-running FR-tech project should take this into account.

Documents

 * Glossary: Fundraising tech/Glossary
 * Regular meetings and their agendas Fundraising tech/FR-tech Meetings
 * Definition of Done: Fundraising tech/Definition of Done
 * Onboarding new team members: Fundraising tech/onboarding
 * Team training matrix: Fundraising tech/Training
 * Roles/Responsibilities: Fundraising tech/Roles and Responsibilities
 * User requirements:
 * Specifications:
 * Software design document: Fundraising tech/Components
 * New integration manual: Fundraising tech/New integration manual
 * Test plan:
 * Documentation plan:
 * User interface design docs:
 * Schedule:
 * Task management: Phabricator "Fundraising Tech Backlog" tag. More information.
 * Release management plan: Fundraising tech/Deployment
 * Communications plan:
 * Quarterly review documentation: April 2015

Installing the software stack
Much of our toolchain is provided by MediaWiki-Vagrant, here's how to provision and enjoy a new installation. Be aware that this requires about 2GB of memory and lots of processor. Please follow setup instructions at the main MediaWiki-Vagrant page above, but enable the following role before provisioning for the first time:

vagrant enable-role fundraising

Assuming your box builds without error, visit http://payments.wiki.local.wmftest.net:8080/ and the wiki's main page will have links to help you get started. Please note that the wmftests.net subdomain is actually a wildcard DNS that resolves to 127.0.0.1, so if you are running vagrant on a different host than you're browsing from, or if you're offline, you'll need to add hosts entries yourself.

This role also installs CiviCRM, at http://crm.local.wmftest.net:8080/

If you wish to forsake Vagrant and try to do it all the hard way, see Fundraising Tech/Donation Pipeline Setup

Running PHPUnit tests under vagrant
The fundraising role checks out a separate branch of mediawiki core into /vagrant/mediawiki-fr. In order to run tests against this branch instead of the standard mediawiki instance in /vagrant/mediawiki, you can do the following from inside your vagrant VM:

sudo apt-get install phpunit

Add this bit to /vagrant/mediawiki-fr/LocalSettings.php, just before the last line including /vagrant/LocalSettings.php:

if ( defined( 'MW_PHPUNIT_TEST' ) ) { require_once '/var/www/w/MWMultiVersion.php'; MWMultiVersion::initializeForMaintenance; }

(TODO: fix this.)

then run the tests from /vagrant/mediawiki-fr/tests/phpunit with this command line:

MW_INSTALL_PATH=/vagrant/mediawiki-fr php phpunit.php --wiki paymentswiki --group DonationInterface

Communications
TODO