Issue Types

Sometimes when a new resource type is added it's not clear if it should be only an "extension" of Issue (Issue Type) or if it should be a new first-class resource type (similar to Issue, Epic, Merge Request, Snippet).

The idea of Issue Types was first proposed in this issue and its usage was discussed few times since then, for example in incident management.

What is an Issue Type

Issue Type is a resource type which extends the existing Issue type and can be used anywhere where Issue is used - for example when listing or searching issues or when linking objects of the type from Epics. It should use the same issues table, additional fields can be stored in a separate table.

When an Issue Type should be used

When a first-class resource type should be used

If an Issue type can not be used you can still define a first-class type and then include concerns such as Issuable or Noteable to reuse functionality which is common for all our issue-related resources. But you still need to define the interface for working with the new resource and update some other components to make them work with the new type.

Usage of the Issue type limits what fields, functionality, or both is available for the type. However, this functionality is provided by default.