This page describes the label system used in the "habitica" GitHub repository, which is used for collecting issues (bugs and approved feature requests) for the Habitica website and API. If you are a Blacksmith looking for an issue to work on, please read all sections below about the issue labels to help you select an issue that is suitable for you.
Introduction[]
Each pull request (PR) is given one "status" label.
Each issue is given:
- one "priority" label
- one or occasionally two "status" labels (the help wanted label is counted as a "status" label)
- one or more "section" labels
- (optional) one or more "type" labels if appropriate
Status of PR[]
Every pull request (PR) is given a "status" label to indicate what stage it is up to. The label will be changed by admins as the PR progresses through its stages.
Typically only one of the following status labels will be on a PR at any given time:
- status: pr: ready for review - the PR is waiting for Habitica's admins to review it.
- status: pr: with author: needs tests - the PR is waiting for the contributor to write tests.
- status: pr: with author: needs work - the PR is waiting for the contributor to perform work other than tests (or other work and also tests).
- status: pr: being tested on delta - the PR is at a stage where testing under near-live conditions is helpful and so its code has been merged into a private "delta" website that admins use.
- status: pr: merged in develop; deploy pending - used by admins to help them manage the release cycle
- status: pr: tested and approved; merge pending - used by admins to help them manage the release cycle
- status: pr: abandoned - the contributor who created the PR is no longer working on it. The associated issue will be changed from "in progress" to "help wanted" so that another contributor can fix the issue. Often, code from the PR will be suitable for use by the issue's new contributor - the contributor can ask about that if comments from admins in the issue or PR don't make it clear.
The follow label may be added in addition to one of the above labels:
- status: needs reply - this is applied to a PR or issue when it is waiting for an answer to a question. For example, if an admin asks a contributor how they are progressing on a PR, or if a contributor has a question for an admin, this label will be applied until the contributor/admin replies. This allows admins to easily review the PRs and issues that might need further follow-up.
Status of Issue[]
Every issue is given a "status" label to indicate what stage its resolution is up to. The label will change as the issue's resolution changes.
Usually only one of the following status labels will be on an issue at any given time but sometimes you'll see two (e.g., the "needs investigation" label might be applied as well as one of the others):
- help wanted - any contributor is welcome to start working on this but when you do, please first comment on the issue! We will then relabel the issue as "in progress" so that other contributors do not also try to work on it. (This label used to be "status: issue: help welcome now", but "help wanted" is GitHub's standard term for this kind of label.)
- status: issue: in progress - an issue that a contributor is currently working on.
- status: issue: needs investigation - problems that are not yet understood well enough for a fix to be created. If you have any insights into one of these issues, or know how to fix it and want to work on it, please comment on the issue!
- status: issue: suggestion-discussion - an issue that is being discussed to determine how it should be resolved. Please note that players should not create feature requests in GitHub but instead should use Habitica User Feedback and Suggestions available through Help > Request a Feature from the Habitica website's menu.
- status: issue: on hold - an issue that should not be worked on because it is waiting for something else to happen first (e.g., another issue to be fixed or a project to be completed).
- status: issue: on hold - needs design - an issue that should not be worked on because it is waiting for a visual design to be created by Habitica's staff.
In addition, one or more of the following labels may be added:
- status: needs reply - this is applied to a PR or issue when it is waiting for an answer to a question. For example, if an admin asks a player who reported a bug whether the bug is still happening, this label will be applied until the player replies. This allows admins to easily review the PRs and issues that might need further follow-up.
- status: issue: sprint - Reserved for a development sprint, for example if a hackathon team has asked to work on suitable issues.
Priority of Issue[]
Each issue is usually given one "priority" label to indicate how important it is in relation to all other issues and/or how many players it affects. Sometimes a priority might not be applied until an issue has been investigated or discussed by Habitica's staff.
Please note that an issue that affects a very small number of players (e.g., a problem with one player's account) will be labeled as "minor", but that does not mean that we will ignore the problem. We will attempt to fix every reported problem if we can or if there is not an easy workaround. Concerns can be expressed on the issue.
If you select an issue labelled priority: critical or priority: important, please try to finish your pull request in one or two days as these issues usually need rapid fixes. Solving a bug labeled priority: critical will allow you to earn the Critical Hammer of Bug-Crushing.
Section of Issue[]
Every issue is given one or more "section" labels to group the issues by broad sections on the website. For example, section: Guilds and section: Market
The section: other label is applied to any issues that don't fit into any of the sections.
Challenge Issue Sections[]
Any issue related to challenges is given the section: challenges: all label. Because there are many issues related to challenges, they are grouped further using these additional section labels:
- section: challenges: creating / editing - issues that affect the creation or modification of challenges.
- section: challenges: judging - issues that prevent a challenge creator from accurately assessing a challenge's winner or closing the challenge.
- section: challenges: other - issues affecting challenges that do not fit in to one of the above two categories (typically issues with players joining or leaving or using challenges).
Type of Issue or PR[]
"Type" labels are used only for special cases and new ones are rarely created.
- good first issue - issues that are suitable for new contributors because the fixes are known or believed to be simple. (This label used to be "type: entry level coding", but "good first issue" is GitHub's standard term for this kind of label.)
- type: medium level coding - issues that require more than a trivial fix but that are probably not very complicated. Occasionally you might find that an issue labelled with this is more complex than we thought. This label might not be applied to all medium level issues so you shouldn't necessarily assume that everything without this label is complex.
- Issues that don't have either good first issue or type: medium level coding are either harder than medium or haven't been assessed for how hard they are.
- type: memorable - special issues that reoccur frequently or common behaviors that are correct but that some players think are bugs (the latter issues are usually closed since no action is needed but have this label to allow them to be found easily).
- type: translations - issues related to website or mobile app translations (not wiki translations).
- type: notify helpers - applied to any issues or PRs that the Socialites or Wiki Wizards or other contributors should be told about when the fix goes live (e.g., notable bug fixes or changes to existing behavior; probably not new features since they will be mentioned in Bailey messages).
The following label exists but is currently not being applied to any new issues:
- type: bounty - this was added to every issue that had a bounty but bounties are not currently used, as described at BountySource.
Automatic Labels[]
The following labels are applied to pull requests that are created automatically by tools that monitor the libraries used by Habitica:
- dependencies
- greenkeeper - not currently used