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
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
 * Payment processor documentation
 * Adyen
 * Amazon
 * AstroPay
 * Ingenico - see filesrv (
 * Developer manual: WebCollect_technical_guide_2013_Q4.pdf
 * Workflows (needs updating): smb://filesrv1/fundraising/Tech/Ingenico/Old/Tech%20specs%20and%20guides%20from%20PaymentProcessing
 * PayPal

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. Some slight of hand is required to run the tests from that directory and not the primary wiki. From the vagrant directory, do:

FIXME: not working.

vagrant ssh cd /vagrant/mediawiki-fr/tests/phpunit export MW_INSTALL_PATH=/vagrant/mediawiki-fr php phpunit.php --wiki paymentswiki --group DonationInterface

Testing queue operations under vagrant
Please see Fundraising tech/Queue testing.

Communications
TODO