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
Release Engineering, MediaWiki Platform

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

How does your program affect annual plan priority?
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
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.

Outcome 1: Increase software stewardship levels of our deployed code

 * 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

 * 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

 * 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

 * Output 4.1
 * Define Code Health Metrics


 * Output 4.2
 * Code Health Dashboard with 50% of repositories covered.

Outcome 1: Increase software stewardship levels of our deployed code

 * 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

 * 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

 * 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

 * 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
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.