# Issue Tracking

[Issues][list] are tracked at bugs.chromium.org.

[list]: https://bugs.chromium.org/p/gerrit/issues/list?can=2

[TOC]

## Status

Issues that do not have a contributor actively working on them may be
in one of three states:
- *New*: issue has not had initial review yet.
- *AwaitingInformation*: issue needs more detail attached.
- *Accepted*: problem reproduced or feature request acknowledged.

Issues being worked on should change the status to let others know it
may be resolved in the near future:
- *Started*: a contributor has begun work on this issue.
- *ChangeUnderReview*: a change for this issue been uploaded for
  code review.

Closed states resolve an issue:
- *Submitted*: a fix has been submitted to a stable branch or the
  master branch and will be included in a future release.
- *Released*: a release has been announced including this fix.

## Priority

| Priority          | Response     | Resolution     |
|-------------------|--------------|----------------|
| [Priority-0][p0]  |              | "soon"         |
| [Priority-1][p1]  |              |                |
| [Priority-2][p2]  | 3 months     | best effort    |
| [Priority-3][p3]  | 6 months     | best effort    |
| [Priority-4][p4]  | 12 months    | best effort    |

### Priority-0
- Critical issue causing failures in production.
- Major functionality broken that renders a feature unusable.

### Priority-1
- Urgent; the issue is blocking a user from getting their job done.
- Breakage blocking next release (e.g. Guice injectors).
- Defect causing functional regression in production.
- Production issue impacting customers.

### Priority-2
- Work tied to roadmap, or near term upcoming release.
- Inconvenient bug that should be addressed in one of the next few
  releases.

### Priority-3
- We feel your pain: the team would like to fix this, but lacks the
  resources to do this soon.  Gerrit is an open source project;
  contributions are appreciated.
- Desirable feature or enhancement *not* on the roadmap.

### Priority-4
- Ponies and icebox.
- Unfortunate: it's a legitimate issue, but the team never plans to
  fix this.

## Type
- *Type-Bug* is broken functionality.
- *Type-Feature* is a request for new feature or enhancement.

## Component

### PolyGerrit
The new web interface built in Polymer.  Issues in this component are
actively managed by PolyGerrit maintainers involved in the daily
development efforts.

### NoteDb
Related to the change metadata in Git project, which is migrating
Gerrit off the SQL "ReviewDb" database.

### googlesource
Issue is unique to the `googlesource.com` family of servers, including
gerrit-review.googlesource.com.  This covers both administration
support required (e.g.  correct a broken user account) and issues
unique to the server's plugins (e.g.  authentication/web sessions or
secondary index).

### plugins
Issues for a plugin project hosted under [plugins/][plugins].
Actively developed plugins may have their own subcomponent.

[plugins]: https://gerrit.googlesource.com/plugins/

[p0]: https://bugs.chromium.org/p/gerrit/issues/list?can=2&q=Priority%3D0
[p1]: https://bugs.chromium.org/p/gerrit/issues/list?can=2&q=Priority%3D1
[p2]: https://bugs.chromium.org/p/gerrit/issues/list?can=2&q=Priority%3D2
[p3]: https://bugs.chromium.org/p/gerrit/issues/list?can=2&q=Priority%3D3
[p4]: https://bugs.chromium.org/p/gerrit/issues/list?can=2&q=Priority%3D4
