Multiple labels per board list
- Multiple labels per board list.
- As shown in the mockups, each list would support multiple labels.
- When adding a list, the UI changes. In the existing implementation, you check and uncheck labels in the dropdown to add lists.
- In the new UI, you click the
Add listbutton. Then you select multiple labels. And then you complete the action by clicking the
Addbutton in the dropdown.
- Note the updated text copy for EES and CE.
- For EES, you can select multiple labels. So the selection is like a checkbox-like selection (can select multiple at a time.)
- For CE, you can only select one label. So the selection is like a radio-like selection (only one at a time).
- This should be implemented for both project boards and group boards.
Use case and problem
- Team wants to plan for an iteration with GitLab issues. (Assume they use GitLab milestones).
- Team wants to track progress of issues in that issue, in an Agile/Scrum-style methodology. Move an issue through different stages, such as "In Dev", to "In QA", to "In Prod", etc.
- Team can use an issue board with lists that reflect those stages.
- Team can use an issue board and use the saved milestone feature to always see one common issue board that is scoped to that milestone.
- But there are many other issues that are not relevant to that's team's work. For example, if the team only cares about ~Discussion issues with that label, they don't care about ~Platform issues. Right now, there's no way to use a board to keep track of that.
How to solve?
If we use the save filter design (#1154 (closed)), we can filter on ~Discussion issues, and associate that filter with the board itself. So whoever loads the board, will see the right milestone and issues filtered accordingly.
- The downside of this is that it mixes metaphors of "filtering". Filtering should mean temporary, and personal. So this design could be confusing. Already, it is confusing to users that we can associate a milestone with a board, but that persistent milestone stays in the filter bar.
Introduce boolean operations on lists. A first iteration is allowing lists to have multiple labels. So an issue only appears in a list if it contains all the labels that defines that list. In particular, to solve the problem above, the first list would be "In Dev + Discussion", second list would be "In QA + Discussion", etc.
- The negative of this design is that it can get complicated very quickly, UI-wise. There is a lot to configure. It is do-able, but the UI would have to be really good and hide complexity.
- Another consideration is how you would re-define issues moving between lists? Right now, if you move an issue from one list to another, then that issue loses the previous label and gains the new label. What would happen in this case? Would it lose all the labels and gain all the new labels? This is not really a negative. But something to be considered and designed for explicitly.