Repository Labels

To facilitate the community in finding ways to contribute that match their experiences and skillsets, we have developed a comprehensive system for labelling issues and PRs. This is an introduction to this standard labelling scheme.

Labels consist of three fields, viz. name, description and color. Label names should have a consistent format to aid both filtering within the github UI as well as scanning visually through the list. The following format is the most suited to this task (where denotes a single space):

<emoji>⎵<category>:⎵<name>

Even label names with more than two words in the text should be separated by a single space .

List of labels

An issue has many different attributes:

  • Priority
  • Status
  • Goal
  • Aspect
  • Skill
  • Talk
  • Friendliness

*Priority

Priority color chart
Unfavourable Negative Neutral Positive Favourable
#b60205 #ff9f1c #ffcc00 #cfda2c #008672

The priority of an issue is based on its impact, derived from a combination of urgency and importance. This determines the importance of the issue when sprint planning or deciding which issues to tackle next.

  • 🟥 priority: critical
    • Description: Must be fixed ASAP
  • 🟧 priority: high
    • Description: Stalls work on the project or its dependents
  • 🟨 priority: medium
    • Description: Not blocking but should be fixed soon
  • 🟩 priority: low
    • Description: Low priority and doesn't need to be rushed

*Status

Status color chart
Lighter Light Medium Dark Darker
#eeeeee #cccccc #999999 #666666 #333333

The status of the issue determines whether it is ready for work or not. Issues may not be ready to be worked on for a number of reasons and the maintainers must keep updating the labels as the situation evolves.

An issue, at the time of closing can have either the 🏁 status: ready for dev or the ⛔️ status: discarded label based on whether it was closed with or without resolution, respectively.

  • 🏁 status: ready for dev
    • Description: Ready for work
  • 🚧 status: blocked
    • Description: Blocked & therefore, not ready for work
  • 🧹 status: ticket work required
    • Description: Needs more details before it can be worked on
  • ⛔️ status: discarded
    • Description: Will not be worked on
  • 🚦 status: awaiting triage
    • Description: Has not been triaged & therefore, not ready for work

*Goal

The goal of an issue is the end-result achieved when the issue is resolved. This represents the impact of the issue on the scope of the software.

  • ⭐ goal: addition
    • Description: Addition of new feature
  • ✨ goal: improvement
    • Description: Improvement to an existing feature
  • 🛠 goal: fix
    • Description: Bug fix

*Aspect

The aspect of an issue is the side of the project that the issue deals with. A single codebase can have multiple aspects to it and knowing which ones will be touched helps contributors find relevant issues.

  • 📄 aspect: text
    • Description: Concerns the textual material in the repository
  • 💻 aspect: code
    • Description: Concerns the software code in the repository
  • 🕹 aspect: interface
    • Description: Concerns end-users' experience with the software
  • 🤖 aspect: dx
    • Description: Concerns developers' experience with the codebase

Skill

The technical skills a person is required to possess to work on the issue. Skills are a special type of label that vary by repository. Issues may not have a skill tag if no special skills are required.

  • 💪 skill: <skill name>
    • Description: Requires proficiency in '<skill name>'

Talk

Issues with interaction labels do not entail any work to be done on the repository. They are for Q&A, RFCs and any other form of discussions. While both of these may appear to be too similar, triage permissions are granted to collaborators who might not have the answers to questions but by labelling them as such, they might draw a faster response from an experienced contributor who does. In the future this category might be rendered redundant by GitHub Discussions and will be removed.

  • ❓ talk: question
    • Description: Can be resolved with an answer
  • 💬 talk: discussion
    • Description: Open for discussions and feedback

Friendliness

The level of friendliness a particular issue is the valency of the issue towards contributions from the community. Some issues provide a great introduction while others require a little more familiarity with the codebase. These issues do not have the category prefix as two of them are special labels recognized by GitHub. The special ones don't have emojis either.

  • good first issue
    • Description: New-contributor friendly
  • help wanted
    • Description: Open to participation from the community
  • 🔒 staff only
    • Description: Restricted to CC staff members

Miscellaneous

  • 🤯 ノಠ益ಠノ彡┻━┻
    • Description: Aaargh!

Usage rules

In the above categories, some are marked with an * sign. Those are mandatory categories and every issue is required to have at least one label from those categories.

Only issues labelled with 🚦 status: awaiting triage are allowed to not have all mandatory labels (seeing as they have not been triaged yet).

Categories not marked with an * are optional and it is upto the discretion of the maintainers to have apply labels from those categories to issues.