labels.rst 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. .. _labels-and-milestones:
  2. ============================
  3. GitHub Labels and Milestones
  4. ============================
  5. SaltStack uses several label categories, as well as milestones, to triage
  6. incoming issues and pull requests in the GitHub issue tracker. Labels are used
  7. to sort issues by type, priority, severity, status, functional area, functional
  8. group, and targeted release and pull requests by status, functional area,
  9. functional group, type of change, and test status. Milestones are used to
  10. indicate whether an issue is fully triaged or is scheduled to be fixed by
  11. SaltStack in an upcoming sprint.
  12. Milestones
  13. ==========
  14. All issues are assigned to a milestone, whereas pull requests are almost never
  15. assigned to a milestone as the mean lifetime of pull requests is short enough
  16. that there is no need to track them temporally.
  17. SaltStack uses milestones to indicate which issues are blocked on submitter or
  18. upstream actions, are approved, or are scheduled to be fixed or implemented in
  19. an upcoming sprint. If an issue is not attached to a sprint milestone, you are
  20. welcome to work on it at your own desire and convenience. If it is attached to
  21. a sprint milestone and you have already begun working on it or have a solution
  22. in mind or have other ideas related to the issue, you are encouraged to
  23. coordinate with the assignee via the GitHub issue tracker to create the best
  24. possible solution or implementation.
  25. - ``Approved`` - The issue has been validated and has all necessary information.
  26. - ``Blocked`` - The issue is waiting on actions by parties outside of
  27. SaltStack, such as receiving more information from the submitter or
  28. resolution of an upstream issue. This milestone is usually applied in
  29. conjunction with the labels ``Info Needed``, ``Question``,
  30. ``Expected Behavior``, ``Won't Fix For Now``, or ``Upstream Bug``.
  31. Labels
  32. ======
  33. Labels are used to sort and describe issues and pull requests. Some labels are
  34. usually reserved for one or the other, though most labels may be applied to
  35. both.
  36. New issues will receive at least one label and a milestone, and new pull
  37. requests will receive at least one label. Except for the :ref:`functional area
  38. <functional-area-labels>` and :ref:`functional group <functional-group-labels>`
  39. label categories, issues will generally receive only up to one label per
  40. category.
  41. Type
  42. ----
  43. Issues are categorized into one of several types. Type labels are almost never
  44. used for pull requests. GitHub treats pull requests like issues in many ways,
  45. so a pull request could be considered an issue with an implicit ``Pull
  46. Request`` type label applied.
  47. - ``Feature`` - The issue is a request for new functionality including changes,
  48. enhancements, refactors, etc.
  49. - ``Bug`` - The issue documents broken, incorrect, or confusing behavior. This
  50. label is always accompanied by a :ref:`severity label <bug-severity-labels>`.
  51. - ``Duplicate`` - The issue is a duplicate of another feature request or bug
  52. report.
  53. - ``Upstream Bug`` - The issue is a result of an upstream issue.
  54. - ``Question`` - The issue is more of a question than a request for new
  55. features or a report of broken features, but can sometimes lead to further
  56. discussion or changes of confusing or incongruous behavior or documentation.
  57. - ``Expected Behavior`` - The issue is a bug report of intended functionality.
  58. Priority
  59. --------
  60. An issue's priority is relative to its :ref:`functional area
  61. <functional-area-labels>`. If a bug report, for example, about ``gitfs``
  62. indicates that all users of ``gitfs`` will encounter this bug, then a ``P1``
  63. label will be applied, even though users who are not using ``gitfs`` will not
  64. encounter the bug. If a feature is requested by many users, it may be given a
  65. high priority.
  66. - ``P1`` - The issue will be seen by all users.
  67. - ``P2`` - The issue will be seen by most users.
  68. - ``P3`` - The issue will be seen by about half of users.
  69. - ``P4`` - The issue will not be seen by most users. Usually the issue is a
  70. very specific use case or corner case.
  71. .. _bug-severity-labels:
  72. Severity
  73. --------
  74. Severity labels are almost always only applied to issues labeled ``Bug``.
  75. - ``Blocker`` - The issue is blocking an impending release.
  76. - ``Critical`` - The issue causes data loss, crashes or hangs salt processes,
  77. makes the system unresponsive, etc.
  78. - ``High Severity`` - The issue reports incorrect functionality, bad
  79. functionality, a confusing user experience, etc.
  80. - ``Medium Severity`` - The issue reports cosmetic items, formatting, spelling,
  81. colors, etc.
  82. .. _functional-area-labels:
  83. Functional Area
  84. ---------------
  85. Many major components of Salt have corresponding GitHub labels. These labels
  86. are applied to all issues and pull requests as is reasonably appropriate. They
  87. are useful in organizing issues and pull requests according to the source code
  88. relevant to issues or the source code changed by pull requests.
  89. - ``Execution Module``
  90. - ``File Servers``
  91. - ``Grains``
  92. - ``Multi-Master``
  93. - ``Packaging`` Related to packaging of Salt, not Salt's support for package management.
  94. - ``Pillar``
  95. - ``RAET``
  96. - ``Returners``
  97. - ``Runners``
  98. - ``SPM``
  99. - ``Salt-API``
  100. - ``Salt-Cloud``
  101. - ``Salt-SSH``
  102. - ``Salt-Syndic``
  103. - ``State Module``
  104. - ``Tests``
  105. - ``Transport``
  106. - ``Windows``
  107. - ``ZMQ``
  108. .. _functional-group-labels:
  109. Functional Group
  110. ----------------
  111. These labels sort issues and pull requests according to the internal SaltStack
  112. engineering teams.
  113. - ``Core`` - The issue or pull request relates to code that is central or
  114. existential to Salt itself.
  115. - ``Platform`` - The issue or pull request relates to support and integration
  116. with various platforms like traditional operating systems as well as
  117. containers, platform-based utilities like filesystems, command schedulers,
  118. etc., and system-based applications like webservers, databases, etc.
  119. - ``RIoT`` - The issue or pull request relates to support and integration with
  120. various abstract systems like cloud providers, hypervisors, API-based
  121. services, etc.
  122. - ``Console`` - The issue or pull request relates to the SaltStack enterprise
  123. console.
  124. - ``Documentation`` - The issue or pull request relates to documentation.
  125. Status
  126. ------
  127. Status labels are used to define and track the state of issues and pull
  128. requests. Not all potential statuses correspond to a label, but some statuses
  129. are common enough that labels have been created for them. If an issue has not
  130. been moved beyond the ``Blocked`` milestone, it is very likely that it will
  131. only have a status label.
  132. - ``Bugfix - back-port`` The pull request needs to be back-ported to an older
  133. release branch. This is done by :ref:`recreating the pull request
  134. <backporting-pull-requests>` against that branch. Once the back-port is
  135. completed, this label is replaced with a ``Bugfix - [Done] back-ported``
  136. label. Normally, new features should go into the develop and bug fixes into
  137. the oldest supported release branch, see :ref:`here <which-salt-branch>`.
  138. - ``Bugfix - [Done] back-ported`` - The pull request has been back-ported to an
  139. older branch.
  140. - ``Cannot Reproduce`` - The issue is a bug and has been reviewed by a
  141. SaltStack engineer, but it cannot be replicated with the provided information
  142. and context. Those involved with the bug will need to work through
  143. additional ideas until the bug can be isolated and verified.
  144. - ``Confirmed`` - The issue is a bug and has been confirmed by a SaltStack
  145. engineer, who often documents a minimal working example that reproduces the
  146. bug.
  147. - ``Fixed Pending Verification`` - The issue is a bug and has been fixed by one
  148. or more pull requests, which should link to the issue. Closure of the issue
  149. is contingent upon confirmation of resolution from the submitter. If the
  150. submitter reports a negative confirmation, this label is removed. If no
  151. response is given after a few weeks, then the issue will be assumed fixed and
  152. closed.
  153. - ``Info Needed`` - The issue needs more information before it can be verified
  154. and resolved. For a feature request this may include a description of the
  155. use cases. Almost all bug reports need to include at least the versions of
  156. salt and its dependencies, the system type and version, commands used, debug
  157. logs, error messages, and relevant configs.
  158. - ``Pending Changes`` - The pull request needs additional changes before it can
  159. be merged.
  160. - ``Pending Discussion`` - The issue or pull request needs more discussion
  161. before it can be closed or merged. The status of the issue or pull request
  162. is not clear or apparent enough for definite action to be taken, or
  163. additional input from SaltStack, the submitter, or another party has been
  164. requested.
  165. If the issue is not a pull request, once the discussion has arrived at a
  166. cogent conclusion, this label will be removed and the issue will be accepted.
  167. If it is a pull request, the results of the discussion may require additional
  168. changes and thus, a ``Pending Changes`` label.
  169. - ``Won't Fix for Now`` - The issue is legitimate, but it is not something the
  170. SaltStack team is currently able or willing to fix or implement. Issues
  171. having this label may be revisited in the future.
  172. Type of Change
  173. ~~~~~~~~~~~~~~
  174. Every pull request should receive a change label. These labels measure the
  175. quantity of change as well as the significance of the change. The amount of
  176. change and the importance of the code area changed are considered, but often
  177. the depth of secondary code review required and the potential repercussions of
  178. the change may also advise the label choice.
  179. Core code areas include: state compiler, crypto engine, master and minion and
  180. syndic daemons, transport, pillar rendering, loader, transport layer, event
  181. system, salt.utils, client, cli, logging, netapi, runner engine, templating
  182. engine, top file compilation, file client, file server, mine, salt-ssh, test
  183. runner, etc.
  184. Non-core code usually constitutes the specific set of plugins for each of the
  185. several plugin layers of Salt: execution modules, states, runners, returners,
  186. clouds, etc.
  187. - ``Minor Change``
  188. * Less than 64 lines changed, or
  189. * Less than 8 core lines changed
  190. - ``Medium Change``
  191. * Less than 256 lines changed, or
  192. * Less than 64 core lines changed
  193. - ``Master Change``
  194. * More than 256 lines changed, or
  195. * More than 64 core lines changed
  196. - ``Expert Change``
  197. * Needs specialized, in-depth review
  198. Test Status
  199. -----------
  200. These labels relate to the status of the automated tests that run on pull
  201. requests. If the tests on a pull request fail and are not overridden by one of
  202. these labels, the pull request submitter needs to update the code and/or tests
  203. so that the tests pass and the pull request can be merged.
  204. - ``Lint`` - The pull request has passed all tests except for the code lint
  205. checker.
  206. - ``Tests Passed`` - The pull request has passed all tests even though some
  207. test results are negative. Sometimes the automated testing infrastructure
  208. will encounter internal errors unrelated to the code change in the pull
  209. request that cause test runs to fail. These errors can be caused by cloud
  210. host and network issues and also Jenkins issues like erroneously accumulating
  211. workspace artifacts, resource exhaustion, and bugs that arise from long
  212. running Jenkins processes.
  213. Other
  214. -----
  215. These labels indicate miscellaneous issue types or statuses that are common or
  216. important enough to be tracked and sorted with labels.
  217. - ``Awesome`` - The pull request implements an especially well crafted
  218. solution, or a very difficult but necessary change.
  219. - ``Help Wanted`` - The issue appears to have a simple solution. Issues having
  220. this label should be a good starting place for new contributors to Salt.
  221. - ``Needs Testcase`` - The issue or pull request relates to a feature that
  222. needs test coverage. The pull request containing the tests should reference
  223. the issue or pull request having this label, whereupon the label should be
  224. removed.
  225. - ``Regression`` - The issue is a bug that breaks functionality known to work
  226. in previous releases.
  227. - ``Story`` - The issue is used by a SaltStack engineer to track progress on
  228. multiple related issues in a single place.
  229. - ``Stretch`` - The issue is an optional goal for the current sprint but may
  230. not be delivered.
  231. - ``ZD`` - The issue is related to a Zendesk customer support ticket.
  232. - ``<Release>`` - The issue is scheduled to be implemented by ``<Release>``.
  233. See :ref:`here <version-numbers>` for a discussion of Salt's release
  234. codenames.