🎨 Design - Migrating Issues to Namespaces
📣 Overview
Design investigation for #338819 (closed)
🚀 Proposal
tbc
🎯 Jobs
User stories
When I have an idea about a piece of work; I want to document it, collaborate on it, and track it; so that I can make an improvement to what I'm working on.
Tasks
- Create/edit an issue
- Collaborate on an issue
- Organize & track issues
- Manage issue workflows
🧩 Conceptual model
See conceptual model in Figma →
Current state | Future state (namespaces) | Future state (namespaces + work items) |
---|---|---|
🔎 Analysis
Summary
The main complexity for issues by merging projects and groups will come from inheritance, nesting and information sharing across issues. This is further compounded by the creation of generalised work items (e.g. merging epics and issues). Issues live across two types of hierarchy/network:
- Namespaces (e.g projects): This is compositional; i.e. if a project is deleted, then the issue is deleted.
- Nesting (e.g. Epics): This is an aggregation; i.e. if an epic is deleted, the issue still exists.
Merge conflicts
Outlined here: &6287 (closed)
- Issues only exist at the project level.
- Groups aggregate issues from their child projects rather than containing any issues themselves.
- User namespaces issue dashboards aggregate assigned issues
- There is no workspace view of all issues
Inheritance
- Visibility of work items in lists
- Inheriting or aggregating properties from parents and children
Also see: #343316
Feature | Work item network | Namespace hierarchy |
---|---|---|
Issue view | Issues can display related, blocked, blocking and MRs | Issues from a project are visible in a parent group's issue list |
Issue list | Nested functionality not yet available for issues | Issues from a project are visible in a parent group's issue list |
Epic | Epics can aggregate issues and sub-epics | Epics from a parent Namespace are visible in a child Namespace issue picker. Epics from a parent are not visible a child Namespace epic list. When an issue from a child is assigned to an epic in a parent, the epic is visible when "group by" is enabled. |
Issue board | ||
Epic board |
Metadata
Metadata | Work item network | Namespace hierarchy |
---|---|---|
Milestone | No sharing or relationship between epics & issues | Milestones can exist at project and group level. Issues from a project can be assigned to milestones from a parent group. |
Iteration | No sharing or relationship between epics & issues | Iterations are only available to groups. A group can only have one active iteration at a time. |
Time tracking | No sharing or relationship between epics & issues | n/a |
Start date | Can be inherited from parent to child epic but not to issues | n/a |
Due date | Can be inherited from parent to child epic but not to issues | n/a |
Weight | A weight aggregation is shown epic's "issues & epics" widget but epics can't be assigned a weight | n/a |
Health status | No aggregating relationship | Can be viewed in a project and parent group's issue lists |
Issue/epic history | When an issue is related or mentioned in another issue, it shows in its activity feed | cell |
Project/group activity | No details about work item relationships shown in namespace activity view | Issue events (e.g. opened or closed) are shown in project activity |
Blocking | Issues can block one another but this concept doesn't exist at epic-level | Issues from the same project, same group or different group can be linked |
Tier
Issues are generally available as GitLab Free. By merging projects & groups and creating generic work items:
- Creating nested child issues is replicating epic functionality which is GitLab Premium
- Creating nested child issue roadmap is replicating epic roadmap functionality which is GitLab Ultimate
Docs
💡 Solution ideas
These recommendations focus on consolidating information architecture. They lack first-hand user/market research. Therefore, feedback is very welcome!
Start small
Solution | Design | Prototype | Issue |
---|---|---|---|
Consolidate child work item widget with ancestor metadata view | #343411[Namespace_hover.png] | Proto→ | |
Shared work items across namespaces | #343411[Namespace_hover.png] | Proto→ | |
Incorporate nested roadmap widget (from epics) into issues | #343411[Namespace_hover.png] | Proto→ | |
Consolidate related MR and work item widget | #343411[Namespace_hover.png] | Proto→ | |
Parity of project & group-level issue list functionality | #343411[Screenshot_2021-11-03_at_11.22._2x.png] | ||
Incorporate nested roadmap widget (from epics) into issues | #343411[Work_item_roadmap.png] |
Think big
Solution | Design | Prototype | Issue |
---|---|---|---|
Create related work item(s) from within existing work item | #343411[Create_work_item_s__from_within_work_item.png] | - | - |
Navigation for distinct boards entities (and other objects) | #343411[Distinct_entity_navigation_expanded.png] | Proto→ | - |
Manipulate list view metadata | #343411[Manipulate_list_view_metadata_-_menu.png] | Proto→ | - |
Multiple types of work item in the same list | #343411[Multiple_work_item_types_list.png] | - | |
Work item network | #343411[Work_item_network.png] | - | |
Shared work items across namespaces | Proto→ | - | |
Shared work items across parents | Proto→ | - |
- Incorporate child work item activity into the activity feed
Related ideas
- Introduce tasks object?