Wei Lu: GitHub Workflow to Maintain openIMIS
1. Title Slide
Title: GitHub Workflow to Maintain openIMIS
Subtitle: Sustaining Quality and Collaboration at Scale with Protected Branches, Structured Reviews, and Automation
2. Branch Protection Rules
Enforce branch protection to disable force pushes (admins included)
✅ Already enabled
🔧 Need to enable “apply to administrators” toggle
Require at least one approving review before merging (no admin bypass)
✅ Already enabled
🔧 Need to enable “apply to administrators” toggle
Require CI status checks before merging
Start with unit tests
Add integration / E2E tests (in draft)
Review linters, bring to health, then enable
Review coverage config, then enable
To-Dos:
After Patrick is done with the empty DB change for solution building: https://openimis.atlassian.net/browse/OP-2801. Starts with only enforcing module CI for selected backend modules (core, individuals, social_protection)
3. More Descriptive PRs
PR must explain rationale: what was broken, why needed
For user-facing changes or bug fixes: include a short screen recording
Enforce norms with a GitHub PR template
To-Dos:
see - PR template dsicussion on 2025-11-25 Developers Deep Dive Call
4. Maintainer Pool & Review Triage Workflow
Organize maintainers into GitHub Teams (Cash Transfer, Interoperability, Solution Building, Maintenance, etc.)
Triage adds relevant teams → Code Review Assignment auto-assigns 2 reviewers per team (round-robin)
Reviewer assignment examples:
Module | Teams Assigned | Reviewers |
Social Protection | Cash Transfer + Maintenance | 4 |
Core Modules | Cash Transfer + Solution + Interoperability + Maintenance | 8 |
ETL | Cash Transfer + Interoperability + Maintenance | 6 |
Claim | Solution Building + Maintenance | 4 |
If no review in 48h → triage assigns backup reviewers
Maintainers can mark status as Busy to avoid assignment when on leave
5. Metrics for Maintainer Pool Health
Quarterly review of reviewer responsiveness (% PRs reviewed within 48h)
Remove consistently inactive contributors from active pool
Highlight top reviewers and recognize consistent responsiveness
For organizations under GIZ contracts, maintain minimum number of active contributors proportional to engagement scale
6. Automations for Productivity
Auto-merge: PR merges when all required checks (reviews + CI) pass
Stale Bot: keep repo clean
Nudge inactive PRs after 48h
Auto-close if no activity after 7 days (can be reopened manually)
To-do:
auto-merge needs to be tested
stale-bot: try out with (nudge: 4 days) and (no-activity: 14 days)
7. PR Lifecycle (Visual)
Flow:
Developer opens PR → Triage assigns teams → Reviewers auto-assigned → CI checks → Reviewer approval → Auto-merge if green → Metrics tracked
(Add arrows + icons for a visual workflow here)
8. Summary & Next Steps
Recap:
Protected branches (no force push, CI checks, mandatory reviews)
PR governance (templates, descriptive rationale, recordings)
Structured review workflow (maintainer pool, auto-assignment)
Automations (auto-merge, reminders, stale PR closure)
Metrics (review responsiveness, recognition, contributor pool health)
Call to Action:
Finalize branch protection settings
Roll out PR template
Build and publish maintainer directory + triage process
Implement automation (auto-merge + bots)
Launch quarterly review cycle for pool health