Fundraising tech/notes/Draft:Documentation overhaul

Brainstorming: topics to include

 * FR-Tech source repositories and codebases, what they're used for, where they're deployed, how they're used, links to related documentation pages, links to upstream repos (if applicable)
 * List of public and non-public sites involved in FR systems, and which codebases are installed on each of them, and which servers host them.


 * Composer: How we run it locally, on production and in CI, and why, and troubleshooting tips
 * Process-control
 * Fundraising tech/Process-control June 2017
 * A list of the jobs, short description, and how often they run but on one page would be nice
 * Deployment: Steps for all service in the FR stack and config changes
 * Fundraising tech/Deployment August 2021
 * CI: how we use it, where the config files are
 * Outline of end-to-end donation flows, including code paths
 * Also new, more formal diagram(s) with overview of flows
 * Logs
 * Versions and config options used for PHP, Python, other basic tools used on production


 * Civicrm: Procedures for updating repos from upstream (civicrm and buildkit)
 * Civicrm: Triggers: What they're for, how to update, how they work for adding fields, how to test, how they're deployed on production and locally
 * Acoustic/silverpop export: how it works, how to add fields and backfill, which database export runs (staging?) on and why.
 * Fundraising_tech/tools has some documentation that needs updating to reflect the new incremental process
 * Fundraising tech/CiviCRM some documentation for the reverse dataflow (jobs that pull data from Acoustic to Civi) is here (written December 2019)
 * Recurring: general flow, how retries are handled
 * Fundraising tech/Recurring_donations January 2020
 * Civi extensions/Drupal modules used, maintained, vs. added just as dependencies, and their relationship to upstream


 * Integrations: Adyen Checkout: Explanation of flow for different payment options (cc, cc with 3DS, rtbt), including pointers to codebases and methods responsible for each step, and UML interaction diagrams
 * It would be nice to have at least just an up to date basic overview of all the integrations with the same topics
 * Or the opposite and have our flow pieces and then describe each of the payment processors
 * DonationInterface: Overview of main classes and methods and their functions in the system
 * Extension:DonationInterface November 2017
 * LandingCheck extension: where it's installed, how FR systems use it, link to documentation from other FR-Tech documentation.
 * Same idea as above with the other ones we have but don't touch often eg cldr, FundraisingEmailUnsubscribe
 * DonationInterface: Config: Short summary of global config variables and per-processor config mechanism on wiki, with link to README for details; complete doc of all config variables in README, explanation of config in yml files in config folders in source code, explanation of which types of config should go in which locations.
 * Pipeline for selection of country, payment processor, method, recurring, and other variants, from banners or links in e-mails to Payments site.
 * Permissions, use, content layout of wikis: Foundation wiki, Thank you wiki.
 * Meaning and usage of different types of ids and codes throughout the pipeline and across payment processors.


 * IPN listeners: what uses them and how they work
 * Fundraising tech/IPN_listener January 2020
 * Redis and queue setup


 * Phabricator and task creation, triage process
 * Sprint, agile, scrum and other development methodology (how Phabricator boards are used for that)


 * Fundraising campaigns cycle, code freeze, yearly cadence
 * Tools used outside FR-Tech: Asana, Zendesk

wikitech.wikimedia.org
See:
 * Fundraising prefix on Wikitech
 * Category:Fundraising on Wikitech
 * Category:Fundraising - Needs Updated on Wikitech
 * Category:Fundraising Analytics on Wikitech
 * Category:Fundraising Archive on Wikitech

Note: This table omits pages in Fundraising categories or subcategories that are already in the Obsolote namespace.

mediawiki.org
See:


 * Fundraising tech prefix on Mediawiki (included below)
 * Category:Fundraising on Mediawiki (included below, except for Extension:CentralNotice subpages)
 * Extension:CentralNotice prefix on Mediawiki (TODO)

Draft possible outline
Note: subtopics below could be included in the same page as the general topic, or could have separate pages, depending on their length and complexity.
 * Introductory overviews and links [X]
 * Introduction: General explanation of WMF donation systems [X1]
 * Donor-facing endpoints: Donor-facting endpoitns: Payments, Donate  Wiki,  Thank-you Wiki, E-mail preference center, Wikis on main cluster (sidebar links/CentralNotice), Privatebin  [A] (same as below)
 * Internal-user-facing endpoints: Civicrm, Superset [B] (same as below)
 * Internal services:  Redis,  process-control,  DBs,  log  management, deployment systems, IPN listeners, Failmail alerts, icinga, stats pipelines [C] (same as below)
 * Externally managed services: Acoustic, PSPs, Minfraud, Maxmind geolocation, Google Docs spreadsheets [D] (same as below)
 * Codebases (DI, Civi extensions, SmashPig), frameworks cheked into version control, (Civi, Mediawiki, Drupal, others), upstream relationships (details in DonationInterface and Civicrm sections), git repositories [E] (same as below)
 * Clusters, datacenters, servers, deploy processes, dependency management on production [F] (same as below)
 * Data flows throughout the stack, identifiers numbers, details of PSP interactions, UML sequence and interaction diagrams [G] (same as below)
 * Team processes, roles, contact links, code freeze, code review, campaign cadences, bug triage, dev tools, onboarding [H] (same as below)
 * Donor-facing endpoints [A]
 * Donation Interface [A1]
 * How it works on Payments
 * Soon-to-be-removed bits used as a library
 * Doc or link to doc of globals/config variables
 * Dependency management
 * Config setup
 * Donate wiki [A2]
 * Foundation wiki [A3]
 * E-mail preference center [A4]
 * Main cluster wikis [A5]
 * Privatebin [A6]
 * Internal-user-facing endpoints [B]
 * Civicrm [B1]
 * Extensions, upstream interactions
 * Databases
 * Silverpop export
 * Recurring
 * Dependency management
 * Config
 * Superset [B2]
 * Internal services [C]
 * Redis
 * Process-control
 * How to find existing jobs
 * Where logs go
 * Databases,
 * Log management
 * IPN listeners
 * Failmail alerts
 * Icinga
 * Stats pipelines
 * Externally managed services: Acoustic, PSPs, Minfraud, Maxmind geolocation, Google Docs spreadsheets [D]
 * Codebases (DI, Civi extensions, SmashPig), frameworks cheked into version control, (Civi, Mediawiki, Drupal, others), upstream relationships (details in DonationInterface and Civicrm sections), git repositories [E]
 * Clusters, datacenters, servers, deploy processes, dependency management on production [F]
 * Data flows throughout the stack, identifiers numbers, details of PSP interactions, UML sequence and interaction diagrams [G]
 * PSP Integrations
 * Currently active integrations
 * Details of how they work
 * Links to payment consoles
 * List of deprecated/removed integrations (mainly for the sake of knowing which code is not important/archiving old doc)
 * Queues
 * Existing queues
 * Types of messages
 * Code that produces and consumes
 * Sequence generator
 * Processes, process  management, dev tools [H]
 * Team processes, roles, Phabricator, bug triage, code review, sprints, agile, task estimation, definitions of done, code freeze cycles, contact links, onboarding
 * Advancement: Campaigns cycle, Asana, Zendesk
 * Developer tools:  fundraising-dev,  Gerrit, Github, Translate Wiki, ssh cluster access, CI, grafana
 * Deployment
 * Tools
 * Processes