Wikimedia Technology/Annual Plans/FY2019/TEC13: Code Health

The Code Health Program works towards improving the maintainability, readability, stability, and simplicity of code. This program works in cooperation with the Code Health Group, that acts as the steering committee for the program. The Code Health Program is an evolutionary step of the Technical Debt Program, and as such will assume the responsibilities and charter of the Technical Debt Program.

As systems have become more complex and the size of teams developing them larger, the importance of having code that is easily understood and maintainable by others has become paramount. The emphasis now is writing code that others (including the original author 6 months later) can easily work on.

Teams contributing to the program

edit

Release Engineering, MediaWiki Platform

Annual Plan priorities

edit

Primary Goal: 3. Knowledge as a Service - evolve our systems and structures

How does your program affect annual plan priority?

edit

This program looks to improve the overall health of our code base. This directly supports our developer community (staff and volunteers) in their quest to maintain and enhance the platform that Knowledge as a service depends on.

Program Goal

edit

The program shares its goals/vision with the Code Health Group, which is: work on efforts that universally improve the lives of engineers and their ability to write products with shorter iteration time, decreased development effort, greater stability, and improved performance.

Working closely with the Code Health Group, the Code Health Program will focus on the software engineering processes and practices that enable both experienced and junior technical contributors to deliver high value/quality features to the various Wikimedia projects in the most productive way possible.

Outcomes

edit

Outcome 1: Increase software stewardship levels of our deployed code

edit
Output 1.1
Assess deployed code and prioritize stewardship gaps.
Output 1.2
Outreach and education at events (eg Dev Summit, Tech All Hands, Hackathon).
Output 1.3
Using stewardship review process, create plan of action for top priority items each quarter.

Outcome 2: We reduce the number of testable regressions from hitting our users

edit
Output 2.1
Integrate regression testability evaluation into our on-going post-mortem process.
Output 2.2
Jointly create smoke tests addressing high priority needs for 15 projects over the year.
Output 2.3
Pro-actively add unit tests to MediaWiki core and deployed extensions.

Outcome 3: Reduce Technical Debt

edit
Output 3.1
Hack-a-thon session: Addressing Technical Debt.
Output 3.2
Tech Debt Management process rolled out.
Output 3.3
Tech All Hands session: Current state of tech debt
Output 3.4
Reduce technical debt in the MediaWiki core, by refactoring and improving internal interfaces and policies.

Outcome 4: Increase visibility into Code Health

edit
Output 4.1
Define Code Health Metrics
Output 4.2
Code Health Dashboard with 50% of repositories covered.

Resources

edit
People FY2017–18 FY2018–19
RelEng
  • 0.5 ✕ Engineering Manager
  • 0.75 ✕ Quality Program Manager (contractor)
  • 0.5 ✕ QA Engineer (contractor, reallocated)
  • 0.5 ✕ Engineering Manager (no change)
  • Quality Program Manager (conversion from contractor)
MediaWiki
  • Software Engineer (vacant)
  • 0.33 ✕ Software Architect (reallocation)
  • 0.5 ✕ Software Engineer (contractor) (reallocation)
  • Software Engineer (no change)
CapEx
  • None
  • None
Travel & Other
  • None
  • None

Targets

edit

Outcome 1: Increase software stewardship levels of our deployed code

edit
Target 1
A 10% reduction in components without an owner or steward on mw:Developers/Maintainers
Measurement method
  1. This is measured by the number of entries on the mw:Developers/Maintainers page without a Steward defined.

Outcome 2: We reduce the number of testable regressions from hitting our users

edit
Target 2
15 deployed projects have a smoke test that can run to verify deployment.
Measurement method
  1. This is measured by counting the number of projects with functional smoke tests.

Outcome 3: Reduce Technical Debt

edit
Target 3
A 15% reduction in Technical Debt.
Measurement method
  1. As measured by the number of open Phabricator tasks tagged "Technical-Debt".

Outcome 4: Increase Visibility into Code Health

edit
Target 4
Coverage for 50% of our repositories on the Code Health Dashboard.
Measurement method
  1. As measured by the number of repositories that are available in the Code Health Dashboard.

Dependencies

edit

This work is strongly dependent on the efforts of the various development teams. The Code Health Program looks to work closely with those teams to help identify existing technical debt and provide approaches to reducing them. This will be done in conjunction with approaches to reduce the future accumulation of technical debt.