Redesign issue workflow process
Problem to solve
- Workflow labels are not being used (out of 440k issues, only 58k have them: ~13% or for just open issues, out of 85k, 13k have them: ~15%).
- Across the organization, there is no easy way to to find all issues which need validation, all issues which need planning/design, all issues which are ready/in development and all issues which are complete.
- The current workflow labels were created over time and are somewhat unrelated to one another (they're unstructured). It would be good to look at them as a whole and determine how/if they're meeting our needs.
- It's difficult to query and report on issues, because each team does it differently. For example, the current workflow labels are used by only a handful of teams, and used in different ways for each of them:
- https://about.gitlab.com/handbook/engineering/workflow/#updating-workflow-labels-throughout-development
- https://about.gitlab.com/handbook/engineering/infrastructure/team/scalability/#workflow-labels
- https://about.gitlab.com/handbook/product-development-flow/
- https://about.gitlab.com/handbook/engineering/development/enablement/systems/gitaly/#agile-workflow-in-gitaly
- https://about.gitlab.com/handbook/engineering/development/sec/govern/sp-ti-planning.html
- https://about.gitlab.com/handbook/engineering/development/dev/create/ide/#-remote-development-planning-process
I ran a quick poll in slack #whats-happening-at-gitlab and of 74 responses, 40 (54%) were aware of and/or believe they follow the https://about.gitlab.com/handbook/product-development-flow/
Proposal
It's going to be hard to change what we currently have "in place". However, as an MVC, we can start adding some labels automatically, while we determine a set of labels that will meet most teams' workflows.
These changes are not going to be disruptive to current workflows. They are additional labels to help us with high-level queries. You will have time to change your processes if it makes sense for your team.
The CoS team has discussed this plan and agreed with implementing some automation to help move us in this direction.
Implementation
✅
Step 1 We are going to an experiment... mapping the existing workflows to 4 simple "top level" labels:
- ~"issue::validation"
- ~"issue::planning"
- ~"issue::development"
- ~"issue::complete"
This step is already complete, and triage-ops has been configured to automatically add these new labels when issues are created/updated. A merge request has been raised to migrate all of the other open issues, but we're going to hold a little before we pull the trigger.
At this point, nobody is expected to manually assign these labels (we will communicate the planned change, but not expect any additional effort from team or community members), but we should now be in a unique position to easily group/filter issues to see what needs validating, what needs designing, what needs development and what is complete.
Step 2
- Agree and create the new lower level "workflow labels":
~"validation::xxx"
,~"planning::xxx"
etc. - Create a mapping for existing workflow labels to these lower level buckets (not all existing labels will be "mappable" and code them into triage-ops to automatically assign).
- At this point, we will still not expect anyone to manually assign labels.
- We will probably now want to take some time to review the labels and see if we feel there are any gaps.
New detail level labels
- ~"issue::validation"
- ~"issue::planning"
- ~"issue::development"
- ~"issue::complete"
Mappings
The new "gray" labels will be automatically added based on the existing/old "blue" workflow labels.
Team members can continue to apply the "blue" workflow labels and all processes will remain unchanged.
- ~"issue::validation"
- ~"issue::planning"
- ~"issue::development"
- ~"issue::complete"
Step 3
- Figure out how to deprecate the old issue workflow labels.
- Get everyone using the new ones.
- Continue adding the new issue workflow labels automatically? (remove the old ones at the same time).
We could do this team by team?
NOTE: We will not be deleting any labels used in merge request workflow and will not be changing the merge request workflow process.
Other
Current workflow label usage:
See counts/totals
label | status | count |
---|---|---|
workflow::In review | open | 0 |
workflow::In review | closed | 33 |
workflow::awaiting security release | open | 13 |
workflow::awaiting security release | closed | 241 |
workflow::blocked | open | 986 |
workflow::blocked | closed | 953 |
workflow::canary | open | 0 |
workflow::canary | closed | 133 |
workflow::complete | open | 13 |
workflow::complete | closed | 6824 |
workflow::design | open | 440 |
workflow::design | closed | 1129 |
workflow::failed current version | open | 0 |
workflow::failed current version | closed | 0 |
workflow::feature-flagged | open | 7 |
workflow::feature-flagged | closed | 33 |
workflow::in dev | open | 559 |
workflow::in dev | closed | 5362 |
workflow::in review | open | 307 |
workflow::in review | closed | 10634 |
workflow::in-review | open | 1 |
workflow::in-review | closed | 3 |
workflow::issue reviewed | open | 0 |
workflow::issue reviewed | closed | 3 |
workflow::needs issue review | open | 11 |
workflow::needs issue review | closed | 17 |
workflow::open for discussion | open | 0 |
workflow::open for discussion | closed | 0 |
workflow::planning breakdown | open | 1776 |
workflow::planning breakdown | closed | 1717 |
workflow::post-deploy-db-production | open | 2 |
workflow::post-deploy-db-production | closed | |
workflow::post-deploy-db-staging | open | 0 |
workflow::post-deploy-db-staging | closed | 2 |
workflow::problem validation | open | 1131 |
workflow::problem validation | closed | 1206 |
workflow::production | open | 22 |
workflow::production | closed | |
workflow::ready for design | open | 612 |
workflow::ready for design | closed | 272 |
workflow::ready for development | open | 2959 |
workflow::ready for development | closed | 4041 |
workflow::ready for review | open | 20 |
workflow::ready for review | closed | 227 |
workflow::ready-for-review | open | 0 |
workflow::ready-for-review | closed | 0 |
workflow::refinement | open | 1435 |
workflow::refinement | closed | 1378 |
workflow::scheduling | open | 724 |
workflow::scheduling | closed | 733 |
workflow::solution validation | open | 691 |
workflow::solution validation | closed | 922 |
workflow::staging | open | 3 |
workflow::staging | closed | 279 |
workflow::staging-canary | open | 0 |
workflow::staging-canary | closed | 6 |
workflow::staging-ref | open | 0 |
workflow::staging-ref | closed | 1 |
workflow::start | open | 486 |
workflow::start | closed | 362 |
workflow::tw-test-status | open | 0 |
workflow::tw-test-status | closed | 0 |
workflow::validation backlog | open | 731 |
workflow::validation backlog | closed | 448 |
workflow::verification | open | 530 |
workflow::verification | closed | 7908 |
workflow::version promoted | open | 0 |
workflow::version promoted | closed | 0 |