Understanding what is issue tracking (including how issue tracking tools help in the software development lifecycle and what myriad capabilities are offered by popular issue tracking systems) are important topics to be considered by teams focusing on software development with increased sustainability and productivity in mind.
Issue tracking is the process of managing a collection of issues (bugs, feature requests, missing documentation, etc.) that are currently being handled, or should be handled, by a software development team. An issue tracker is a software system that is used by the software developers to keep track of the issues (who is responsible for each issue, when the issue was reported, etc). Most modern issue trackers used in the open source community are web-based and provide rich functionality for adding new issues, assigning issues to developers, recording notes on the issue, linking repository commits associated with the issue, etc. Issue trackers can also be used to plan new development activities.
An "issue" represents anything that, if resolved, results in an improvement to a software system. When used for bug tracking, an issue is often called a (trouble) ticket. This document takes the expansive view, as is common in open source development, that a single issue tracker can be used to manage both bug tracking as well as development plans. As such, an issue tracker must have the following capabilities.
- Be accessible anywhere, from any system, i.e. web based.
- Be available for both users to report bugs, (and requests for new features) and track progress on the requests, while also allowing developers to manage permissions for updating issues with progress reports etc.
- Provide email updates on the status of the issue to relevent users and developers.
- Allow setting priorities on issues.
- Allow assigning developers to particular issues.
- Allowing searching and sorting issues.
- Allow labeling issues with keywords to facilitate searching issues.
- Allow establishing and tracking milestones needed for resolution of an issue.
- Allow both users and developers to add (and update) notes on particular issues.
- Provide links from the issue tracker to the commits in the software that represent progress on the issue, and vice versa.
- Be intuitive to new and casual users, yet retain powerful features needed by experienced developers.