[UX] Workflow for managing custom statuses

Goal: Enable teams to represent their workflow through statuses.

Current proposal

📼 Video walkthrough: https://youtu.be/o80RECkU72Q (12m)

IA

  • Introduce "Plan" page within Settings for both groups and projects
    • Visible to all users, editable with Reporter role or higher
    • Cross-link from Issues list
  • Initial tabs are "Status" and "Templates", with the latter only holding default template for now (moved from Settings > General)

Status configuration

  • Status fields are Name, Description (optional), and Color.
  • Statuses belong to one category.
    • Categories are Triage, To do, In progress, Done, and Cancelled; categories are not customizable.
    • Categories can have zero statuses.
    • Statuses can be reordered within a category, defining the order they appear in lists.
    • Category defines the icon used, and the default color.
  • One status is the Open default (Triage, To do, or In progress category status), one status is the Closed default (Done, Cancelled category)
    • Defaults for each must always exist. Users must select an alternate in order to remove a status; if no alternates are available the status cannot be removed.
  • All statuses within a group/project belong to the same lifecycle; in later iterations >1 lifecycle can be used to separate workflows for different work item types (e.g. Issues and Tasks can use lifecycle "Development", Epics and Objectives can use lifecycle "Strategy", etc)
    • Lifecycles are not represented to the user in this iteration. This is noted only for potential development impact.

Group > Project inheritance

  • In the first iteration, statuses are "owned" by the root group. All groups/projects within a root group have the same status configuration.
  • In the next iteration, lifecycles will be exposed. Lifecycles will be inherited from groups down to subgroups/projects, but lower levels can create their own lifecycles. This will allow a project to have different statuses from a parent group.
    • Statuses will remain shared across the group hierarchy. A status created in project A can be used in a lifecycle in project B if both A and B are within the same hierarchy.

Validation (WIP)

https://gitlab.com/gitlab-org/ux-research/-/issues/2166+s

Edited by Nick Leonard