[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Any support organization realizes that a large amount of data flows back and forth between the maintainers and the users of their products. This data often takes the form of problem reports and communication via electronic mail. GNATS addresses the problem of organizing this communication by defining a database made up of archived and indexed electronic mail messages.
GNATS was designed as a tool for software maintainers. It consists of several utilities which, when used in concert, formulate and administer a database of Problem Reports grouped by site-defined problem categories. It allows a support organization to keep track of problems (hence the term Problem Report) in an organized fashion. Essentially, GNATS acts as an active archive for field-separated textual data submitted through electronic mail.
1.1 The database paradigm 1.2 Flowchart of GNATS activities 1.3 States of Problem Reports 1.4 Problem Report format
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
It is in your best interest as the maintainer of a body of work to organize the feedback you receive on that work, and to make it easy for users of your work to report problems and suggestions.
GNATS makes this easy by automatically filing incoming problem reports into appropriate places, by notifying responsible parties of the existence of the problem and (optionally) sending an acknowledgment to the submitter that the report was received, and by making these Problem Reports accessible to queries and easily editable. GNATS is a database specialized for a specific task.
GNATS was designed for use at a Support Site that handles a high level of problem-related traffic though electronic mail. It maintains Problem Reports in the form of text files with defined fields (see section GNATS data fields). The location of the database, as well as the categories it accepts as valid, the maintainers for whom it provides service, and the submitters from whom it accepts Problem Reports, are all definable by the Support Site. See section GNATS administration.
Each PR is a separate file within a main repository
(see section Where GNATS lives). Editing access to the
database is regulated to maintain consistency, but anyone with
electronic mail access may submit Problem Reports. To make queries on
the database faster, an index is kept automatically (see section The index
file).
We provide several software tools so that users may submit new Problem Reports, edit existing Problem Reports, and query the database.
send-pr
is used by both product maintainers and the end users
of the products they support to submit PRs to the database.
edit-pr
is used by maintainers when editing problem
reports in the database.
query-pr
to
make inquiries about individual PRs or groups of PRs.
send-pr
can also be packaged by itself and distributed to anyone
you wish to receive Problem Reports from; see Configuring send-pr
for the outside world.
At the Support Site, a GNATS administrator is charged with the
duty of maintaining GNATS. These duties are discussed in detail in
GNATS Administration, and generally include
configuring GNATS for the Support Site, editing PRs that GNATS
cannot process, pruning log files, setting up new problem categories,
backing up the database, and distributing send-pr
so that others
may submit Problem Reports.
Responsibility for a given Problem Report depends on the category of the problem. Optionally, an automated reminder can be sent to the responsible person if a problem report is neglected for a requisite time period. See section Changing your local configuration.
GNATS does not have the ability to decipher random text. If there is no default category set, any problem reports which arrive in a format GNATS does not recognize are placed in a separate directory pending investigation by the GNATS administrator (see section GNATS Administration).
Once a problem is recorded in the database, work can begin toward a solution. A problem's initial state is open (see section States of Problem Reports). An acknowledgment is sent to the originator of the bug report (if that feature of GNATS is activated). GNATS forwards copies of the report to the party responsible for that problem category and to the person responsible for problems arriving from that Submitter Site.
When a problem has been identified, the maintainer can change its state to analyzed, and then to feedback when a solution is found. Each time the state of a PR changes, the submitter of the problem report is notified of the reason for the change. If the party responsible for the PR changes, the previous responsible party and the new responsible party receive notice of the change. The change and reason are also recorded in the `>Audit-Trail:' field of the Problem Report. (See section Editing existing Problem Reports. For information on the `>Audit-Trail:' field, see Problem Report format.)
When the originator of the Problem Report confirms that the solution works, the maintainer can change the state to closed. If the PR cannot be closed, the maintainer can change its state to suspended as a last resort. (For a more detailed description of these states, see States of Problem Reports.)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This informal flowchart shows the relationships of the GNATS tools to each other and to the files with which they interoperate.
+===========+ +===========+ +===========+ # USER SITE # # USER SITE # # USER SITE # # # # # # # # *send-pr* # # *send-pr* # # *send-pr* # +=====|=====+ +=====|=====+ +=====|=====+ | V | `---------> Email.... <-------' ,---> | +===============|=========|===================+ # SUPPORT SITE | `---> /etc/aliases # # *send-pr* | # # +-----------------------------V--------+# # | GNATS GNATS_ROOT/gnats-queue/|# # | | |# # | _________ V |# # | |*file-pr*|<--- *queue-pr -r* |# # | | | |# # _ | | valid | |# # |M| | |Category?|N--. |# # |A| | |_________| | GNATS |# # |I| | Y| | ADMINISTRATOR |# # |N| | | | |# # |T|<----------------| | |# # |A| | | | .-> *edit-pr* |# # |I|--->*edit-pr*-. | V | | |# # |N| | | |GNATS_ROOT/pending | |# # |E|<--*query-pr* | | | |# # |R| | | | | | |# # |S| | | V V V |# # |_| |+------------------------------------+|# # || GNATS Database ||# # || GNATS_ROOT/CATEGORY/GNATS-ID ||# # |+------------------------------------+|# # +--------------------------------------+# +=============================================+ |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Each PR goes through a defined series of states between origination and closure. The originator of a PR receives notification automatically of any state changes.
Unless your site has customized states (see see section 3.2.6 The states
file), GNATS uses these states:
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The format of a PR is designed to reflect the nature of GNATS as a database. Information is arranged into fields, and kept in individual records (Problem Reports).
A Problem Report contains two different types of fields: Mail Header fields, which are used by the mail handler for delivery, and Problem Report fields, which contain information relevant to the Problem Report and its submitter. A Problem Report is essentially a specially formatted electronic mail message.
Problem Report fields are denoted by a keyword which begins with `>' and ends with `:', as in `>Confidential:'. Fields belong to one of three data types:
The following fields are ENUMERATED format; see the descriptions of fields below for explanations of each field in detail:
>Confidential: >Severity: >Priority: >Class: >State: >Number: |
>Submitter-Id: >Originator: >Synopsis: >Category: >Release: >Responsible: >Arrival-Date: |
The following fields are MULTITEXT format:
>Organization: >Environment: >Description: >How-To-Repeat: >Fix: >Audit-Trail: >Unformatted: |
The following is an example Problem Report. Mail headers are at the top, followed by GNATS fields, which begin with `>' and end with `:'. The `Subject:' line in the mail header and the `>Synopsis:' field are usually duplicates of each other.
Message-Id: message-id Date: date From: address Reply-To: address To: bug-address Subject: subject >Number: gnats-id >Category: category >Synopsis: synopsis >Confidential: yes or no >Severity: critical, serious, or non-critical >Priority: high, medium or low >Responsible: responsible >State: open, analyzed, suspended, feedback, or closed >Class: sw-bug, doc-bug, change-request, support, duplicate, or mistaken >Submitter-Id: submitter-id >Arrival-Date: date >Originator: name >Organization: organization >Release: release >Environment: environment >Description: description >How-To-Repeat: how-to-repeat >Fix: fix >Audit-Trail: appended-messages... State-Changed-From-To: from-to State-Changed-When: date State-Changed-Why: reason Responsible-Changed-From-To: from-to Responsible-Changed-When: date Responsible-Changed-Why: reason >Unformatted: miscellaneous |
1.4.1 Mail header fields 1.4.2 Problem Report fields
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
A Problem Report may contain any mail header field described in the
Internet standard RFC-822. However, only the fields which identify the
sender and the subject are required by send-pr
:
To:
send-pr
.
Subject:
From:
Reply-To:
From:
field.
One of the configurable options for GNATS is whether or not to retain `Received-By:' headers, which often consume a lot of space and are not often used. See section Changing your local configuration.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The following fields are present whenever a PR is submitted via the
program send-pr
. GNATS adds additional fields when the PR
arrives at the Support Site; explanations of them follow this list.
>Submitter-Id:
send-pr
with the `--request-id' option to apply for one from
the support organization. Problem Reports from those not affiliated
with the support organization should use the default value of `net'
for this field.)
>Originator:
NAME
.
>Organization:
DEFAULT_ORGANIZATION
in the
`config' file (see section The config
file).
>Confidential:
If the originator's relationship to the support organization provides for confidentiality, then if the value of this field is `yes' the support organization treats the PR as confidential; any code samples provided are not made publicly available (e.g., in regression test suites). The default value is `yes'.
>Synopsis:
send-pr
copies
this information to the `Subject:' line when you submit a Problem
Report.
>Severity:
critical
serious
non-critical
>Priority:
high
medium
low
>Category:
categories
file, for details.
>Class:
sw-bug
doc-bug
change-request
support
duplicate (pr-number)
mistaken
The default is `sw-bug'.
>Release:
>Environment:
>Description:
>How-To-Repeat:
>Fix:
GNATS adds the following fields when the PR arrives at the Support Site:
>Number:
The `>Number:' field is often paired with the `>Category:' field as
category/number |
in subsequent email messages. This is for historical reasons, as well as because Problem Reports are stored in subdirectories which are named by category.
>State:
open
analyzed
feedback
closed
suspended
The initial state of a PR is `open'. See section States of Problem Reports.
>Responsible:
categories
file).
>Arrival-Date:
>Audit-Trail:
State-Changed-<From>-<To>: oldstate>-<newstate
Responsible-Changed-<From>-<To>: oldresp>-<newresp
State-Changed-By: name
Responsible-Changed-By: name
State-Changed-When: timestamp
Responsible-Changed-When: timestamp
State-Changed-Why: reason...
Responsible-Changed-Why: reason...
The `>Audit-Trail:' field also contains any mail messages received by GNATS related to this PR, in the order received.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |