Enforced issue workflows with boards
Background and problem
- Customers have been asking for enforced workflows. See https://gitlab.com/gitlab-org/gitlab-ee/issues/2059.
Proposal
- Start with the smallest iteration that requires as little changes as possible.
- Take advantage of boards as an existing workflow tool.
- An "admin" who configures the workflow can set up a board with label lists representing the customized enforced workflows.
- This is a special board (or a special setting of the board), so that only a person with the right permissions is allowed to add/remove label lists and move those lists around in the board.
- In a given board, lower permissions users are allowed to move issues across label lists as normal, with one additional constraint, they are only allowed to drag issues one single stage at a time. This way, you are guaranteed that issues must go through each stage, and because GitLab already records system notes when you do this, everything is audited "for free".
- Another important constraint. The labels from label lists are automatically no longer available to be applied to issues outside of the board. That means, when you use the label dropdown in an issue, or try to use a quick action or try to use the API, those labels are no longer available. This forces the labels to truly represent stages, so that users cannot bypass the board lists mechanism.
- We also have to define if issues can move backwards in the board.
Future iterations
- When you move an issue across enforced board lists, there's already system notes that indicate that. But we have additional UI, such as an additional special system note that indicates you made this transfer. This way, the system note auditing is more explicit in capturing enforced list/stage transitions.
- As a user, when you drag an issue from one list to another list, there is a modal that pops up, or some other UI, that requires you do something. Maybe it requires you to enter a comment that represents a sign-off or some other gating mechanism.
Edited by Victor Wu