Overview
labels are meant to be a lightweight, dynamic, cross services and cross project way to group things together
- Lightweight: easy to set (one click), via comments or through API automation. No history, No ownership
- Dynamic: labels can be set for a couple of minutes / hours to indicate that some attentions are needed or to flag something that is not validated by CI. It can also be used to indicate what is part of a release.
- Cross services: artifacts, pull requests, documents, etc.
- Cross projects: a label can be used across projects
Labels by themselves are not that much useful, they are really meant to be dashboarded (either Project or Personal Dashboard).
Principles
Labels are a new element of information that comes in addition to existing metadata (descriptions, titles, fields, etc). For instance we don't intend to "merge" them with "Open list" fields of trackers. In the same way, there won't be a new changeset in artifact history when someone use a given label.
Cross project handeling
For cross project management, the proposal is to use the "Duck typing" approach. If 2 projects use "Emergency" label, and if we dashboard informations from those 2 projects, we assume it's the same thing.
Nevertheless, labels will be managed projects by project. If one of the 2 projects decide to rename "Emergency" into "Urgent", then the cross project dashboard will no longer work.
To avoid any information leakage between projects, when someone sets a label, the autocompletion of proposed label will only propose the label of the current project.
First steps
While the feature is meant to be global, the first step is to be able to dashboard pull requests easily
On each pull request, it's possible to set a label (Emergency, UI, Need DB expert, etc). Anyone who can edit the PR can set or remove labels. When adding a new label, the list is autocompleted with label already used. If someone in the project already used "Need DB expert", when I start typing "Need", I'll be proposed "Need DB expert". The autocompletion is based on current project labels.
On project dashboard, one can add a new widget to display what is labelled with certain labels. For instance, admin can decide to see:
- "Review requested"
- "Need DB export" AND "Emergency"
When several labels are selected, it's automatically a AND between the elements:
- If a PR has "Review requested", "Need DB expert", "Emergency" it will be displayed in both lists
- If a PR has "Review requests", "Need DB expert" it will be displayed only in the first one.
- If a PR has "Need DB expert" it won't be show.
As a project administrator, in project admin section. I have a view where I can:
- See all used labels
- Create labels in advance
- Remove some labels
- Rename labels
- On rename, if the new name already exists, the Tuleap propose to merge the 2 labels
- Eg. Given I have "Emergency" and "Emergencies", When I rename "Emergencies" in "Emergency", all items labeled "Emergencies" will now be labeled "Emergency"
On project duplication from template, existing labels are duplicated
On project XML import/export labels are exported/imported
Next
- On pull requests
- Replace "CI status" information by labels (CI: OK, CI: KO)
- Add label of "Mergeability" of a PR
- Manage new items
- Apply labels on artifacts, documents, file releases, milestones.
- Freeze a label
- Once freezed a label can no longer be added/removed on corresponding items (however items might be deleted)
- Cross project label dashboards
- Pretty much like Cross project widget, one can select several projects on which label will be queried
- The label can also be managed across project (to ensure all projects use the same labels and rename if needed)
- Label customization
- Ability to choose colors of labels
- Label navigation
- Click on a label gives the list of all items that also use this label