Code stewardship
Code stewards are ultimately responsible for the development policies, support, and overall health of the code in question. Despite this responsibility, code stewards are not expected to do all the work themselves. Instead, they should engage with staff and volunteer technical contributors in the collaborative effort. As MediaWiki and its supporting services continue to grow and become further depended on by millions of users, it has become increasingly important that the holistic code-base remains healthy and enables the continued evolution of its capabilities.
As a free and open source code base, MediaWiki and all its extensions, skins, services, and apps have many potential contributors, both paid (e.g., staff members of the Wikimedia Foundation or Wikimedia Deutschland) and volunteer. Code stewardship provides the direction and guidance necessary to ensure all disparate projects have a similar level of code health.
Code stewardship is a layer on top of the Developer/Maintainers list which defines some of the expectations associated with being a code steward. The code stewardship model was reviewed and ratified by the Wikimedia Foundation's Chief Product Officer (CPO) and Chief Technology Officer (CTO) in early 2018.
Code stewardship
editCode stewardship covers several different areas, included are:
Technical community engagement
editAlthough much of what is included in code stewardship is focused on technical topics, a code steward is also in a great position to help foster a strong technical community for the code in question. A vibrant and engaged technical community is a key success factor for just about any component, extension, or service. To a large extent, areas such as code reviews and code health are directly related to building and supporting technical community engagement.
Code review
editReviews are a critical part of the development process, but can be one of the most challenging due to the dependence on others. It is not uncommon to find many patches waiting to be deployed that are being delayed due to a review bottleneck. This can be not only detrimental to the health of the code, but also frustrating for those trying to contribute.
Code stewards are responsible for adopting common review approaches (see Code review), augmenting them if necessary, as well as defining responsiveness SLOs (Service Level Objectives).
Bug resolution
editA lengthy backlog of bugs can seem insurmountable. Managing that backlog, ensuring timely resolutions, and applying lessons learned to future development are challenging at best without strong code stewardship.
Code stewards are responsible for promoting established bug management policies (see Phabricator/Project management) as well as defining bug responsiveness service level objectives.
Code health
editWhether creating development policies, removing technical debt, or simply ensuring that a code base is easy to work with, it can be challenging to maintain high code health without code stewardship. Code stewards play a critical role in ensuring that those that are contributing to the code are enabled to do so in ways that improve overall code health. Included here are coding standards, testing guidelines, and design patterns.
Code stewards
editIn order to be considered a code steward for a component, the person or group needs to commit to meet or exceed the Base Service Level Objectives and agree to be responsible for its overall code health.
Please refer to the Developers/Maintainers page for a listing of existing code stewards in addition to component level SLOs.
Base service level objectives (SLO)
editThe definition of SLO help establish targets to measure progress. Although these are not intended to establish "contracts", they are intended to help drive an improvement in areas that are deemed as important by users and contributors of the Wikimedia Foundation projects.
The following SLOs are a starting point and may not be adopted by each component/extension/service. In those circumstances where the following SLOs are not adopted, the code steward for that component/extension/service is responsible for defining a more fitting set of SLOs and the rational for the departure.
Production
editActivity | Unbreak Now | High | Medium | Low | Lowest |
---|---|---|---|---|---|
Code Review | 1 day | 3 days | 7 days | 14 days | 14 days |
Bug Fixed | 7 days | 14 days | 30 days | NONE | NONE |
Non-Production
editActivity | Unbreak Now | High | Medium | Low | Lowest |
---|---|---|---|---|---|
Code Review | 7 days | 14 days | 21 days | 30 days | 30 days |
Bug Fixed | 14 days | 30 days | 60 days | NONE | NONE |
Production vs Non-Production
editThose components, extensions, and services that are deployed into the Wikimedia Foundation's production environment fall into the "Production" category. Whereas those that are used primarily in third party deployments are considered to be "Non-Production".
Code stewardship coverage
edit% Assigned Breakdown (Current) | Coverage Trends |
---|---|
Related
edit- Code stewardship reviews
- Developers/Maintainers lists code stewards in addition to component level SLOs