Reorganize CTA dev labels and issue boards
Labels
Priority
Every accepted issue should be given a priority.
This has already been put in place by using the following labels:
The guidelines for choosing between each priority can be found here:
These labels be tracked and modified using a dedicated board:
Workflow
The workflow scoped labels are used to track the progress of dev issues. They are a very important tool for developers and management to keep track of ongoing work.
However, some of these labels are redundant or unclear. We are also missing some stages of development.
Therefore, I propose the following changes:
- ~"workflow::Accepted" : Remove
- This is redundant. Any issue with a priority (low/medium/high/critical) has already been implicitly accepted.
-
workflowAssigned : Remove
- This is redundant. An issue is assigned if it contains an Assignee in the lateral bar.
- workflowIn Progress : OK
-
workflowBlocked :
Move out of scopeEDIT: We will keep it in the scopeworkflow
This label is orthogonal to all other workflow labels.It should be turned into an non-scoped label.- Note: Issues already have a Linked items option, where we can define blocking relationships to other issues. Unfortunately, we cannot search by this field.
-
workflowDone : Replace by new labels
- Done is ambiguous, despite the description " Development work has been completed, awaiting review and testing before the ticket can be closed". It gets confused with the Closed status of an issue.
- We can replace it by 1 or 2 new labels:
- ~"workflow::Testing"
- ~"workflow::In Review"
- New label for workflowBacklog:
- For any issues that should be handled in the current development cycle/sprint.
- Should be reviewed and updated at the start of each cycle.
- If used correctly, it aims to make the planning and organisation of CTA development much easier.
This means having the following workflow labels (open for discussion):
These labels be tracked and modified using a dedicated board:
This board will only select the issues that have been "accepted" (aka priority assigned). EDIT: I have come to realise that this it's better not to enforce this. In theory, all issues should have a priority
but developers may not want to assign one in specific cases.
At the beginning of each development cycle we can assign some of these issues to _workflowBacklog. They may already be assigned or not. Developers should be selecting their next development work from them.
Type
Our issues can be classified in different types. We should have clear and distinct labels for each one of them.
These have been added by @nbugel and cover several important use-cases. I'm putting them here for further discussion:
- typebug
- typefeature
- typedocumentation
- typerelease
- typemaintenance *
-
*~"type::refactor"
- ~"type::organisation/ignore/meta" for this like https://gitlab.cern.ch/cta/CTA/-/issues/271? EDIT: Add
type::ignore
The last 2 options (*) were object of discussion in the dev channel. They seem to overlap with others, so we should discuss them in more details.
Suggestion: Assign these labels to all open issues. If we are unclear about some of them, that may mean that we need to refine the different values.
Planning / organisation
Some labels are helpful for organising CTA development, but they should stay out of a scope:
-
workflowBlocked ->
Blocked
- Remove out of the scope
workflow::
. These concepts are orthogonal, meaning any workflow stage can be blocked for various reasons.
- Remove out of the scope
- Needs Discussion
-
Building and Packaging : Anything related to cmake,
cta.spec.in
, repackaging . - Continuous Integration : Anything that touches the CTA CI on gitlab.
-
Development Infrastructure : Anything related to the development environment. Examples:
- Minikube setup for running systems tests locally.
- Containers for building CTA RPMs from a local repository.
- Monitoring : Any code changes related to or motivated by monitoring.
- Decastorification : Moving from CASTOR to CTA.
- Code Quality : Overlaps with typerefactor, but more specific.
- sonarcloud : Overlaps with Code Quality and typerefactor, but important to have.
- Repack
Components
As suggested by @nbugel in #764 (closed), we could add a prefix to labels that are part of the same grouping. This is not the same as a scope, just syntax, but allows us to more easily identify and assign the labels.
For items related to CTA-EOS building blocks, it was suggested that we add the prefix component:
. I propose just cta:
, so that we keep it short.
CTA components:
-
File catalogue ->
cta: CTA Catalogue
(Changed fromFile
toCTA
) -
Front end (Admin interface) ->
cta: Front end (Admin interface)
-
Front end (EOS interface) ->
cta: Front end (EOS interface)
-
Front end (gRPC) ->
cta: Front end (gRPC)
-
Media changer ->
cta: Media Changer
-
Object Store ->
cta: Object Store
-
Scheduler ->
cta: Scheduler
-
->~"Scheduler Algorithms"
EDIT: Remove Scheduler Algorithms .cta: Scheduler Algorithms
- Whats the difference between Scheduler and Scheduler Algorithms ? We probably should only have 1.
~"Object Store"~~ -> ~~
cta: Object Store`-
Tape server ->
cta: Tape Server
-
->~Repack
cta: Repack Workflow
-
FST GC ->
cta: FST GC
- This is a component that interacts with EOS only, but it's inside the CTA repo.
EOS components: EDIT: We will not use this. Only external: EOS
Operator tool components:
-
Operator Tools
- It's only one, but if we want a subset of labels we could use
tools: <operator_tool_name>
- It's only one, but if we want a subset of labels we could use
External projects (issues that impact and/or are impacted by changes on these projects):
-
EOS ->
external: EOS
-
FTS ->
external: FTS
-
mhVTL ->
external: mhVTL
-
dCache integration ->
external: dCache
-
Enstore ->
external: Enstore
To discuss
Project related labels
Some labels are only used for specific projects. We should discuss if we should keep following this approach.
I propose one of the following options:
- It's ok to create labels at will for projects.
- It's ok to create labels for projects, but they should follow a syntax
<project_prefix>: <label_name>
. - It's not ok to create labels for projects.
1. Postgres SchedulerDB
Should we use PGSCHED: <label_name>
prefix?
- ~PGSCHED
- ~Archival
- Retrieve
- ~Reporting
- ~scheduler_db_garbage_collection (Modify the name to remove
_
)
2. Object Store
It's a separate project, same as PGSCHED
.
Unnecessary labels ?
Some labels are probably not necessary, just polluting the namespace. I suggest removing or modifying them:
-
Change storageClass:
- Was used for the cta-change-storage-class tool, by Lasse.
- We should not be adding 1 label every time someone works on something different. Instead, this should be handled using issues.
- Suggestion: use Child items to decompose a large issue into smaller parts.
- These issues could instead just all be assigned the Operator Tools label.
-
CASTOR to CTA migration :
- Only used once. Duplicate of Decastorification .
-
valgrind :
- Only ever used twice. Overlaps with Code Quality
-
XRootD :
- Only ever used twice, despite all our projects (and many of their bugs) being XRootD related. Seems redundant.
-
Labelling :
- Only ever used twice.
-
RAO :
- Only ever used once.
-
Public Release :
- Only used 3 times, and could always be replaced by Building and Packaging or Continuous Integration . All our typerelease are potentially public, so this is redundant.
Syntax rules
I propose that we follow this convention:
-
<scope>::<label>
: For scoped labels. -
<group>: <label>
: For non-scoped labels that are part of a category. -
<label>
: For non-scoped labels, out of a category.
With the following upper/lower case rules:
-
<scope>
and<group>
(before::
/:
) should belowercase
. -
<label>
should beCapitalised With Whitespaces
.