Maintenance Cost Estimates
Assumptions:
Code that’s not being actively developed but that we need to keep working.
This is just a minimum, there are other benefits of removing code.
The cost of maintenance goes down the closer it is to being DEPRed.
There is a cost of confusion as a thing becomes less and less standard that is not captured here.
Next Steps:
Validate by calculating minimum maintenance across all edX github repos.
Types of deprecations:
Small service( ~10 weeks/year)
ASSUMPTIONS
Size of service: 200 KB python code.
Django Upgrades ( 3 days/year)
Python Upgrades (2 days/year)
Monitoring for breakage. (2 days/year)
Renovate PRs ( 2 weeks/year)
“make upgrade” PRs ( 2 weeks/year)
Flaky test diagnosis ( 1 day/year)
Deployment pipeline maintenance and troubleshooting (1 week/year)
OSPR review ( 2 weeks/year )
Security issue responses ( 2 days/year)
Writing and updating documentation ( 1 day/year)
Accessibility fixes (1 day/year)
CI/Release Tooling Maintenance( 1 week/year)
Updating test matrices.
Release to Production
Moving to new test runners(travis -> gh actions)
Updating usage of public actions.
Python Library/package( ~7 weeks/year)
ASSUMPTIONS
Size of Library/Package: 200 KB (including config and repo overhead)
Django Upgrades (3 days/year)
Python Upgrades (2 days/year)
Monitoring for breakage. (1-3 days/year based on app cohesion)
“make upgrade” PRs (2 weeks/year)
Flaky test diagnosis (1 day/year)
OSPR review (2 weeks/year )
Security issue responses (2 days/year)
Writing and updating documentation (1 day/year)
CI/Release Tooling Maintenance( 1 week/year)
Updating test matrices.
Release to PyPI
Moving to new test runners(travis -> gh actions)
Updating usage of public actions.
JS Library/Package( ~4 weeks/year)
ASSUMPTIONS
Size of Library/Package: 50 kb
Not Paragon because it’s our design system and needs more regular maintenance.
Paragon/React/Node upgrades (1 week/year)
Renovate PRs (2 days/year)
OSPR review ( 1 days/year)
This will change as MFEs become default.
As we add a pattern for front-end extension points.
Security issue responses (1 week/year)
Writing and updating documentation (3 days/year)
Accessibility fixes (0 days/year - these mostly happen in Paragon and MFEs)
Bug fixes & regression tests (1 week/year)
MFE (~ 5 weeks/year)
ASSUMPTIONS
Size of MFE: 200 KB
Paragon/webpack/React/Node upgrades (1 week/year)
Renovate PRs (2 days/year)
OSPR review ( 2 days/year)
This will change as MFEs become default.
As we add a pattern for front-end extension points.
Security issue responses (3 days/year)
Writing and updating documentation (1 day/year)
Accessibility fixes (3 days/year)
Bug fixes & regression tests (1 week/year)
Monitoring for breakage. (2 days/year)
Deployment pipeline maintenance and troubleshooting (3 days/year)
CI/Release Tooling Maintenance( 2 days/year)
Updating test matrices.
Release to Production
Moving to new test runners (travis -> gh actions)
Updating usage of public actions.
Block of code in a larger service/package (~5-6 weeks/year)
ASSUMPTIONS
Size of code/package: 150 KB
Django Upgrades (3 days/year)
Python Upgrades (2 days/year)
Monitoring for breakage. (1-3 days/year based on app cohesion)
“make upgrade” PRs (2 weeks/year)
Flaky test diagnosis (1 day/year)
OSPR review (2 weeks/year)
Security issue responses ( 2 days/year)
Writing and updating documentation ( 1 day/year)
Accessibility fixes (1 day/year)