SaltStack uses several labeling schemes, as well as applying milestones, to triage incoming issues and pull requests in the GitHub Issue Tracker. Most of the labels and milestones are used for internal tracking, but the following definitions might prove useful for the community to discover the best issues to help resolve.
Milestones are most often applied to issues, as a milestone is assigned to every issue that has been triaged. However, milestones can also be applied to pull requests. SaltStack uses milestones to track bugs or features that should be included in the next major feature release, or even the next bug-fix release, as well as what issues are ready to be worked on or what might be blocked. All incoming issues must have a milestone associated with them.
Blocker
label, but not always.Blocker
label, but not always.Labels are used to facilitate the resolution of new pull requests and open issues. Most labels are confined to being applied to either issues or pull requests, though some labels may be applied to both.
All incoming issues should be triaged with at least one label and a milestone. When a new issue comes in, it should be determined if the issue is a bug or a feature request, and either of those labels should be applied accordingly. Bugs and Feature Requests have differing labeling schemes, detailed below, where other labels are applied to them to further help contributors find issues to fix or implement.
There are some labels, such as Question
or some of the "Status" labels that may be applied as "stand alone" labels
in which more information may be needed or a decision must be reached on how to proceed. (See the "Bug Status Labels"
section below.)
The Feature
label should be applied when a user is requesting entirely new functionality. This can include new
functions, modules, states, modular systems, flags for existing functions, etc. Features do not receive severity
or priority labels, as those labels are only used for bugs. However, they may receive "Functional Area" labels or "ZD".
Feature request issues will be prioritized on an "as-needed" basis using milestones during SaltStack's feature release and sprint planning processes.
All bugs should have the Bug
label as well as a severity, priority, functional area, and a status, as applicable.
How severe is the bug? SaltStack uses four labels to determine the severity of a bug: Blocker
, Critical
,
High
, and Medium
. This scale is intended to make the bug-triage process as objective as possible.
In addition to using a bug severity to classify issues, a priority is also assigned to each bug to give further granularity in searching for bugs to fix. In this way, a bug's priority is defined as follows:
Note
A bug's priority is relative to its functional area. If a bug report, for example, about gitfs
includes details
indicating that everyone who gitfs
will run into this bug, then a P1
label will be applied, even though
Salt users who are not enabling gitfs
will see the bug.
All bugs should receive a "Functional Area" label to indicate what region of Salt the bug is mainly seen in. This will help internal developers as well as community members identify areas of expertise to find issues that can be fixed more easily. Functional Area labels can also be applied to Feature Requests.
Functional Area Labels, in alphabetical order, include:
Status lables are used to define and track the state a bug is in at any given time. Not all bugs will have a status
label, but if a SaltStack employee is able to apply a status label, he or she will. Status labels are somewhat unique
in the fact that they might be the only label on an issue, such as Pending Discussion
, Info Needed
, or
Expected Behavior
until further action can be taken.
Upstream Bug
then a bug report in the upstream
project must be filed (or found if a report already exists) and a link to the report must be provided to the issue
in Salt for tracking purposes. (This can be a stand-alone label.)There are a couple of other labels that are helpful in categorizing bugs that are not included in the categories above.
These labels can either stand on their own such as Question
or can be applied to bugs or feature requests as
applicable.
Blocked
milestone.SaltStack also applies various labels to incoming pull requests. These are mainly used to help SaltStack engineers easily identify the nature the changes presented in a pull request and whether or not that pull request is ready to be reviewed and merged into the Salt codebase.
A "* Change" label is applied to each incoming pull request. The type of change label that is applied to a pull request is based on a scale that encompasses the number of lines affected by the change in conjunction with the area of code the change touches (i.e. core code areas vs. execution or state modules).
The conditions given for these labels are recommendations, as the pull request reviewer will also consult their intuition and experience regarding the magnitude of the impact of the proposed changes in the pull request.
Core code areas include: state compiler, crypto engine, master and minion, transport, pillar rendering, loader, transport layer, event system, salt.utils, client, cli, logging, netapi, runner engine, templating engine, top file compilation, file client, file server, mine, salt-ssh, test runner, etc.
There are two labels that are used to keep track of what pull requests need to be back-ported to an older release branch and which pull requests have already been back-ported.
There are a couple of labels that the QA team uses to indicate the mergability of a pull request. If the pull request is legitimately passing or failing tests, then one or more of these labels may be applied.
Needs Testcase
label. At this point, the Needs Testcase
label must be removed to indicate that tests no longer need to be written.