Fat Codes

Software engineering related ramblings by fat

TIPS: Best practices for git issue labels and tags

When you are somehow responsible of all the LOCs written at your company, your Gitlab top bar might look like this

If you are like me a software engineer, you probably have a lot of issues. Ahem, with issues i obiously mean project related issues, tracking tasks, bugs and whatsoever.

In order to oganize a big number of issues across multiple projects (with multiple components) at apio we developed a little system of labels: TIPS

TIPS is the acronym for Type, Impact, Priority, and Status, meaning that each issue should have a label describing the Type of the issue, one for the Impact and so on..

But what do those words mean? Let’s see

Type: What kind of issue is this? Possible values:

  • Deployment
  • Bug
  • Documentation
  • Enhancement
  • Security
  • Performance
  • Refactoring

Impact: Who is affected by this issue? Customers? Development team? The marketing team and the customer?

  • Internal: the issue is only visible from inside the company
  • External: the issue is impacting other people outside the company

Priority: This is an easy one, which issue must be handled first?

  • Critical: Drop anything you are doing and handle this
  • High: You should hadle this as soon as possible
  • Medium: Do this on schedule
  • Low: Do this when you have nothing better to do

Status: Another easy one, this label should tell us what’s the current status of the issue

  • Backlog: It’s an issue we have, but we are not handling it now
  • Blocked: This is blocked by something else
  • In progress: we’re working on it
  • Completed: it’s done
  • Investigating: Doing required research before handling the issue
  • Testing: making sure changes are effective

Labels are built with the following pattern

<CATEGORY-NAME>:<CATEGORY-VALUE>

Some examples taken from our gitlab:

Additions

Some kind of projects require more label due to their nature, for example, our DevOps related issues also have the environment label to indicate which environment is affected by an issue.

  • Environment:
    • Production
    • Testing
    • Staging
    • ..Wathever

Monorepos (which have been popularized by recent whitepapers and articles by huge companies like Google and Facebook) have multiple sub projects in them, wo when creating an issue, we add specialized labels to indicate to which sub-component the issue is relsated:

  • HugeProject/UserMicroservice
  • HugeProject/ItemsMicroservice
  • HugeProject/WorkerA
  • HugeProject/WorkerB

Let me know if you developed your own system and how it works for you!

comments powered by Disqus