Skip to content

Improve MR type classification

Background

We have the following top level MR types with visibility into MR types of all Product group teams https://app.periscopedata.com/app/gitlab/976817/Merge-Request-Types

  • Bugs
  • Feature
  • Maintenance

As defined as top level types in https://about.gitlab.com/handbook/engineering/metrics/#work-type-classification

Problem

We have observed a bias to over use Maintenance, after a deeper analysis we discovered that a number these are in support of feature development and bug fixes.

Screen_Shot_2022-02-16_at_3.47.30_PM

In addition, to provide clear top level types and in alignment with external reporting in the industry we will only keep 3 top level types, as such the top level ~"type::tooling" will be consolidated with maintenance categories.

Getting down to bug/feature/maintenance is key to our reporting to industry analysts, there is a clear business need & justification for this consolidation. This is important for GitLab to communicate effort spent into a format that is easily understandable widely in the industry.

Fix

Video overview: https://www.youtube.com/watch?v=TvUwsFIb9gA

To improve MR type accuracy we will be implementing more specific sub types and create categorization space to capture all types of work under the 3 top level types.

New

  • We do not have any sub-types for Bugs, we need more fidelity on the types of defects. We are going to provide the following.
  • All feature development work should be under Features, we will provide the following in addition to Additions & Enhancements
    • ~"feature::consolidation": Merging a feature into an existing feature for simplification.
    • ~"feature::removal": Deprecation and removal of a functionality when it's no longer needed.
  • In Maintenance we will provide the following for better fidelity
    • ~"maintenance::refactor": Simplifying or restructuring existing code or documentation
    • ~"maintenance::dependency": Dependency updates and their version upgrades
    • ~"maintenance::usability": General improvements to product usability that are unrelated to feature prioritization
    • ~"maintenance::test-gap": Test coverage improvements that were not included in feature prioritization.
    • ~"maintenance::pipelines": Internal Pipelines configuration.
    • ~"maintenance::workflow": Improvements of the engineering workflow and release tooling like Danger, RuboCop, linters, etc.
  • We will be consolidating Tooling into Maintenance, our chart is already accounting it in this manner so this makes the label more truthful.

Existing

We are also providing better clarification of the below existing categories

  1. ~"type::bug": Defects in shipped code and fixes for those defects. Read more about features vs bugs.
  2. ~"type::feature": Effort to deliver new and improve existing GitLab features. Read more about features vs bugs.
  3. ~"type::maintenance": Upkeeping efforts & catch-up corrective improvements that are not Features nor Bugs. This includes technical debt and industry-standard updates such as Rails/Ruby upgrades. For example: Updating software versions in our tech stack, Recalculating UUIDs for vulnerabilities using UUIDv5

Review & Feedback meetings

  • R&D Leadership
  • Product team meeting
  • Eng Staff
  • Eng Analytics
  • Eng Analytics x Data team

Communication

Label changes

  • Label creation
  • Label automation

Roll out dashboard with 2 product groups

cc @kwiebers

Edited by Kyle Wiebers