annotate doc/swallowtail.tex @ 44:812c956dd0e9

Add another admin queue type for comments on nonexistent PRs. Also, correct stupid spelling mistake. Need to get the test harness running again.
author David A. Holland
date Mon, 16 Jun 2014 01:27:45 -0400
parents 45bb7b516edb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
1 %\documentclass[11pt,twocolumn]{article}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
2 \documentclass[11pt]{article}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
3 \usepackage{fullpage}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
4
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
5 \usepackage{graphicx}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
6 \usepackage{url}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
7 \usepackage{parskip}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
8
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
9 \usepackage{charter}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
10 \usepackage{courier}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
11 \frenchspacing
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
12
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
13 % without help, latex sets these characters in the wrong font inside \tt
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
14 % (I thought this was mostly fixed, but it's still happening in some cases)
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
15 \newcommand{\us}{{\tt\char`\_}}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
16 \newcommand{\bra}{{\tt\char`\{}}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
17 \newcommand{\ket}{{\tt\char`\}}}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
18 \newcommand{\bs}{{\tt\char`\\}}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
19 \newcommand{\caret}{{\tt\char`\^}}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
20
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
21 % The search strings ``XXX'' and ``future'' are intentionally
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
22 % supported in the text below.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
23
15
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
24 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
25
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
26 \title{The Swallowtail Bugtracking System}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
27 \author{David A. Holland}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
28 \date{September 3, 2012}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
29
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
30 \begin{document}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
31 \maketitle
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
32
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
33 \section{Introduction}
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
34
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
35 Swallowtail is a bugtracking system meant to serve as a migration path
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
36 for large GNATS installations.
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
37 It is intended to address various shortcomings of GNATS that appear
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
38 with a large database, and to provide a migration path for that
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
39 database that does not lose information.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
40
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
41 As in GNATS, individual bug reports are called PRs (``problem
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
42 reports'') and are given unique numbers from an increasing sequence.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
43
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
44 The database is kept in PostgreSQL.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
45
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
46 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
47 \section{Design Criteria}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
48
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
49 Swallowtail is intended for use by large projects that take their bug
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
50 tracking seriously.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
51 It assumes the existence of a project server that can host the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
52 database, and that project developers have shell access on this
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
53 machine.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
54 Unless special measures are taken, everyone with shell access to the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
55 host machine is assumed to be a developer and has developer-level
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
56 access to the database.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
57 Developers are assumed to be grownups, at least mentally, and to not
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
58 require either baby-sitting or padded cells.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
59 Developers are also assumed to be generally clueful and able to take
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
60 advantage of direct query access to the database.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
61
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
62 A web interface is also provided but it allows only end-user-level
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
63 access.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
64 It also does not attempt to offer the full range of query and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
65 annotation support.
35
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
66 (At least to begin with.)
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
67
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
68 It is assumed that most bug report traffic will be handled by email,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
69 and that all public traffic will be reflected onto one or more mailing
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
70 lists for general distribution.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
71 However, both new bug reports and followup traffic can be submitted
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
72 via the web interface.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
73 It is not necessary to sign up to file a bug report.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
74
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
75 Swallowtail assumes that the database is large (as bug databases go,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
76 not large in DBMS terms), both in terms of the total number of bugs on
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
77 file and the number of issues currently open.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
78 This means that hand-editing is not feasible.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
79 Manual generation of semantic indexes and tags is presumed possible
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
80 but expensive.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
81 It is assumed that multiple types of semantic indexing and tagging
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
82 will be required.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
83 Supporting this is the primary motivation for creating Swallowtail at
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
84 all.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
85
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
86 Swallowtail is also intended to replace GNATS, so it explicitly allows
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
87 importing an existing GNATS database without losing information.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
88 (One of the major problems with migrating away from GNATS, or
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
89 migrating any bug database, is that most bug databases have a
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
90 hardcoded schema with fixed semantics, and no two are equivalent.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
91
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
92 It also is written to allow incoming bug reports to be sent with the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
93 GNATS send-pr tool, as this tool is deployed in the field and can be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
94 updated in the field only gradually.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
95
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
96 We are explicitly assuming that everything that talks directly to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
97 GNATS can be updated, rewritten, or replaced for Swallowtail, and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
98 that there are relatively few such things.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
99
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
100 Swallowtail is being written specifically to manage NetBSD's bug
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
101 database, but it is intended to remain general enough to be useful to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
102 other groups who may be in a similar position.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
103
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
104 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
105 \section{Submitting PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
106
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
107 New PRs can be submitted either by email or via a web form.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
108 The email interface accepts only structured mail in the form sent by
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
109 the GNATS send-pr tool.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
110 Malformed emails are returned.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
111 (Sending handwritten mail to the PR submission address is not
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
112 supported.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
113
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
114 The web form requires a valid email address, as most transactions are
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
115 handled by email.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
116 In the future it might be desirable to set up a scheme that allows
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
117 entirely web-based access for end users.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
118
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
119 XXX: need to decide whether/how much to validate email addresses in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
120 the web form, and also what measures to take to prevent spam.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
121 Maybe an email address already in the system can be used to submit new
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
122 PRs without any kind of further validation step.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
123
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
124 XXX: Also I wonder if we ought to have a blacklist for emails that
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
125 aren't allowed to submit PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
126
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
127 Submitting a PR generates an email to the submitter that reports the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
128 PR number and includes brief instructions for further actions.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
129 If the PR is confidential, a notice to this effect is included in the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
130 response mail, as well as instructions and/or a link for making the PR
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
131 non-confidential.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
132 (This is because most confidential PR submissions are confidential by
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
133 mistake.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
134 The mail also includes a generated password for logging in to the web
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
135 interface as a submitter.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
136 (Currently this does nothing; in the future it will allow e.g.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
137 unsubscribing from the PR.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
138
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
139 The submitter of a PR is automatically subscribed to the PR as a
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
140 respondent.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
141
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
142 Note that currently Swallowtail does not provide its own send-pr
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
143 script, as this is not required for the initial deployment.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
144 There will probably be one in the future.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
145
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
146 NetBSD: The submission address for NetBSD will be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
147 swallowtail@NetBSD.org (unless we decide on something else) although
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
148 the old gnats-bugs address will be kept for the indefinite future to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
149 allow old send-pr scripts to continue to work.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
150
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
151 GNATS: For some reason GNATS accepts a wide range of malformed
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
152 incoming emails.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
153 This almost invariably makes a mess when it occurs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
154
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
155 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
156 \section{Retrieving PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
157
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
158 The web interface includes a scheme for retrieving any PR
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
159 (except PRs marked confidential) by a well-known address.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
160 The search page also allows retrieving a single PR by number.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
161
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
162 NetBSD: The address will probably be \url{http://bugs.netbsd.org/12345}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
163
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
164 In the web interface, text within the administrative or message logs
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
165 that can be identified as a PR number is rendered as a clickable link.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
166
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
167 Email addresses are not displayed in the web interface at all.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
168 (Or maybe, in the future when this is possible, only when logged in.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
169
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
170 The \texttt{query-pr} command line tool can retrieve any PR, including
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
171 confidential PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
172 This is done by passing it the PR number.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
173 As in GNATS the option \texttt{--full} prints the message and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
174 administrative logs as well as the base PR data.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
175 Use \texttt{--attach N} to retrieve an attachment.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
176
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
177 \texttt{query-pr} can also be used for searching.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
178 See below.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
179
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
180 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
181 \section{Commenting on PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
182
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
183 Comments on PRs can be submitted either by email or via the PR's web
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
184 page.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
185 In either case, files can be provided (as MIME attachments or via
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
186 upload) that are filed as attachments to the PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
187 Comments on PRs can also be submitted by running \texttt{comment-pr},
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
188 or from \texttt{browse-pr}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
189 All comments go to the PR's message log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
190
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
191 MIME multipart messages that include both text and HTML will be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
192 converted to plain text.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
193 MIME mail that is HTML-only will be rejected.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
194 The MIME content-type of mails is retained, so if non-ASCII mail
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
195 appears it can be displayed correctly, and so remailed text is marked
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
196 correctly.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
197
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
198 The comment address is the same as the submission address.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
199 Comments are identified by the Subject: line, which should begin with
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
200 \texttt{Re: category/12345} like in GNATS.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
201 (In the future we might switch to a tidier tagging scheme, such as
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
202 \texttt{[NetBSD 12345]} anywhere in the Subject: line, but the old
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
203 style will have to be supported indefinitely regardless.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
204 The category need not be the right category for the PR; if it is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
205 wrong, the right one will be substituted before the comment is filed
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
206 or remailed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
207 Also, if the Subject: line of a comment is empty except for the tag,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
208 the PR's synopsis will be inserted.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
209
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
210 Source control commit messages routed to the bug database are treated
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
211 as comments.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
212
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
213 Comments are remailed to all email addresses subscribed to the PR,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
214 and also (if not confidential) to the mailing list associated with the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
215 PR's category.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
216
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
217 Remailed comments have a References: header that allows them to thread
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
218 together.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
219 (The contents of it need to be site-configurable.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
220
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
221 Comments filed on a locked PR go to the administrator queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
222
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
223 GNATS: GNATS has no web-based way of filing comments, which
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
224 occasionally annoys people.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
225
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
226 GNATS: GNATS has no MIME support at all and corrupts mails with
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
227 attachments when filing them in the database (not fatally but
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
228 annoyingly), which aggravates everyone regularly.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
229
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
230 GNATS: GNATS cannot lock PRs, and old PRs often receive spam or
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
231 misdirected mail that has to be cleaned up by hand.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
232
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
233 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
234 \section{Updating/Editing PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
235
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
236 PRs are edited with \texttt{edit-pr}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
237 (This is not accessible to end users.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
238 An end user wanting to adjust the PR state should file a comment
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
239 requesting the change.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
240
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
241 Changes made with \texttt{edit-pr} are recorded in the PR's
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
242 administrative log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
243 (XXX: some of them should be mailed out and not others, but it isn't
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
244 clear which are which yet.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
245
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
246 Each PR has the following base properties:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
247 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
248
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
249 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
250 Its number.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
251 (This cannot be changed.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
252
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
253 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
254 The \emph{synopsis}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
255 This is a short (one-line) description of the PR provided by the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
256 submitter.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
257 It can (and should) be adjusted as necessary during the lifetime of
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
258 the PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
259
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
260 If in a new submission or conversion from GNATS the Subject: line of
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
261 the email is not the same as the synopsis field, the effect will be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
262 that the synopsis is first set to the provided Subject: and then to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
263 the provided synopsis, generating the corresponding change entry in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
264 the PR's administrative log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
265
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
266 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
267 The confidential flag.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
268 PRs marked confidential can be accessed only by developers, and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
269 traffic about them is not reflected to mailing lists.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
270
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
271 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
272 The \emph{state}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
273 This is the basic state the PR is in.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
274 (Open, closed, pending-pullups, etc.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
275 The list of states is configurable.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
276 States have a name (which should be an identifier), a description, and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
277 flags that identify if the state is a closed state, whether reminder
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
278 and/or feedback mail should be sent.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
279 There is also an obsolete flag that prevents new uses of the state.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
280
39
45bb7b516edb document previous better
David A. Holland
parents: 35
diff changeset
281 States can be tagged for timeout support; when a PR is put into a
45bb7b516edb document previous better
David A. Holland
parents: 35
diff changeset
282 state tagged for timeout (e.g. ``feedback'') you give a time and a
45bb7b516edb document previous better
David A. Holland
parents: 35
diff changeset
283 reversion state, and if nothing happens in the meantime the state is
45bb7b516edb document previous better
David A. Holland
parents: 35
diff changeset
284 automatically changed at the given time.
45bb7b516edb document previous better
David A. Holland
parents: 35
diff changeset
285
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
286 NetBSD: we will start out with the same set of states as we have in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
287 GNATS, plus ``stuck''.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
288 (A PR is stuck if a respondent is needed and there are none.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
289
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
290 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
291 The \emph{locked} flag.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
292 A locked PR cannot be edited or commented on until it is first
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
293 unlocked.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
294 Attempting to run \texttt{edit-pr} or \texttt{comment-pr} on a locked
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
295 PR will result in a message that the PR is locked and the option to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
296 unlock it or abort.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
297 (Filing a comment on a locked PR by email or via the web interface
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
298 results in the comment going to the administrator queue.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
299 PRs are automatically locked by the system a month after being
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
300 closed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
301
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
302 The database conversion from GNATS will mark all PRs locked that have
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
303 been closed for more than a month.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
304
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
305 GNATS: GNATS does not support locked PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
306
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
307 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
308 The database schema version that was current when the PR arrived.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
309 This is useful for knowing what conversions were applied to the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
310 data.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
311 The initial schema version is 1.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
312 Version 0 means ``converted from GNATS''.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
313
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
314 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
315 The date (and time) that the PR arrived.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
316
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
317 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
318 The date (and time) that the PR was closed, if appropriate.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
319
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
320 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
321 The original submitter, who remains the original submitter even if
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
322 later unsubscribed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
323
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
324 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
325 The \emph{release}, which is the Release field from GNATS.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
326
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
327 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
328 The \emph{environment}, which is the Environment field from GNATS.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
329
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
330 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
331 The administrative log, which is a list of messages generated when the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
332 PR is updated.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
333
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
334 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
335 The message log, which is a list of comments filed on the PR and their
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
336 attachments.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
337
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
338 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
339 The subscription lists.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
340 As described below, a user can be subscribed in any of three ways
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
341 (and more than once).
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
342 Each subscription also has a ``batch'' flag to send out update mails
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
343 in bundles.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
344 (XXX: it is not clear if this needs to be implemented up front or not.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
345
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
346 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
347 Classification entries.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
348 There are, in general, multiple classification schemes, which come in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
349 different flavors.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
350 Each PR has a value for each classification scheme (which might be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
351 missing or null in some cases) whose allowable values and meaning are
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
352 defined by the classification scheme.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
353 The GNATS Severity, Priority, Class, and Category fields are handled
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
354 as classification schemes.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
355 (The category scheme has some special-case handling as described
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
356 elsewhere.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
357
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
358 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
359
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
360 The mail from-address and message-ID, which are retained by GNATS, are
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
361 in Swallowtail just handled as entries in the administrative log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
362
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
363 The Description, How-To-Repeat, and Fix fields of a GNATS PR, along
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
364 with any ``unformatted'' text that confused GNATS, are in Swallowtail
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
365 handled as the initial entries in the PR's message log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
366
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
367 Idea for the future: provide up/down vote buttons (both in the web
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
368 page and in edit-pr) to help rank the importance of individual bugs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
369 If you are also seeing a particular problem, you vote it up; if you
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
370 are using the affected software but not seeing it, you vote it
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
371 down.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
372 Or something like that.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
373
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
374 The data associated with users is described in another section below.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
375 Decoupling user data from individual PRs makes it feasible to update
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
376 your email address in the database, which is tedious to the point of
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
377 impossible with GNATS.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
378
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
379 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
380 \section{Tracking PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
381
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
382 The simple way to track PRs is to subscribe to the mailing list(s)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
383 that Swallowtail traffic is reflected to.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
384 However, since those lists are likely to be high volume, and also do
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
385 not carry traffic about confidential PRs, it is also possible to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
386 subscribe directly to individual PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
387
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
388 In the web interface, there is a link for this.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
389 XXX: there should be a way to do this by email, but it isn't yet clear
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
390 what it should be.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
391
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
392 Everyone subscribed to a PR receives a copy of all comments made on
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
393 the PR, and notices of significant administrative changes.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
394 There are two additional modes:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
395
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
396 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
397
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
398 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
399 A \emph{respondent} is someone who is experiencing the problem and can
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
400 provide feedback if needed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
401 The original submitter is always subscribed as a respondent, but
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
402 especially for old PRs, they may disapper and others may appear.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
403
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
404 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
405 A \emph{responsible party} is someone who is fixing the problem, or at
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
406 least taking charge of seeing that it gets fixed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
407 This may be a specific developer, or it may be a role account that
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
408 looks after PRs nobody specific is handling.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
409 For new PRs a default responsible party can be subscribed based on the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
410 PR category.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
411 Ordinarily only one developer will be subscribed as responsible.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
412
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
413 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
414
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
415 If the last respondent with \texttt{mailto} permission unsubscribes
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
416 (or is unsubscribed) from a PR that is in feedback state, it is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
417 automatically switched to the stuck state.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
418 (XXX: but do we want to make ``stuck'' a known special case like this?)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
419
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
420 XXX: there should be a way to bring a PR to the attention of another
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
421 developer short of subscribing them to it.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
422
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
423 In the future there should be an RSS feed for each PR, but this is not
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
424 expected to be implemented in the first rollout.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
425 (There should also be individual RSS feeds for categories, and based
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
426 on classification schemes, and whatever else.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
427
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
428 GNATS: GNATS has no ability to allow anyone but the original submitter
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
429 to function as a respondent.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
430
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
431 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
432 \section{Reminder Mails}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
433
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
434 The system periodically sends out two kinds of mail: \emph{reminder
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
435 mail}, that goes to developers responsible for open PRs, and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
436 \emph{feedback mail}, that goes to the submitters (typically) of PRs
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
437 that have been placed in feedback state.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
438
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
439 One reminder mail is sent to each developer subscribed as
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
440 ``responsible'' to at least one PR, listing the PR by number and
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
441 synopsis.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
442 (XXX: sorted how?)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
443 Reminders are not sent for PRs that are in feedback.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
444
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
445 NetBSD: reminders are also not sent for PRs that are in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
446 pending-pullups state.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
447
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
448 Feedback mail is sent to each user subscribed as ``respondent'' to at
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
449 least one PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
450 If the user is being nagged about three or fewer PRs, one email is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
451 sent for each PR, with the headers adjusted so replies get filed in
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
452 that PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
453 This makes it easier for casual users to respond correctly.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
454 If the user is being nagged about more PRs than that, only one mail is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
455 sent, in the same form as reminder mail.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
456 In the future the feedback mails will repeat the message requesting
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
457 feedback; this is not expected to be implemented for the initial
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
458 deployment.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
459
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
460 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
461 \section{Statistical Reporting}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
462
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
463 Various scripts to gather statistics are provided, both as part of the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
464 web interface and to generate periodic report mail.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
465
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
466 These include:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
467 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
468
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
469 \item The summary statistics, originally written by Erik E. Fair for
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
470 the NetBSD GNATS;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
471
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
472 \item A daily report, based on the one GNATS sends to the netbsd-bugs
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
473 mailing list;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
474
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
475 \item A monthly report, based on the one I wrote to send to the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
476 developers list;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
477
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
478 \item Whatever other stuff may come up or looks interesting.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
479
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
480 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
481
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
482 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
483 \section{Searching for PRs}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
484
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
485 The web interface provides a simple search form, which can search on
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
486 various fields or on text in the log.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
487 In the future this may be made more powerful; for the time being it is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
488 expected to remain largely the same as the interface to GNATS.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
489
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
490 Command-line searching can be done with \texttt{query-pr}.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
491 Any value in any field can be matched; text search in the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
492 administrative and message logs (or anywhere in the PR) is also
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
493 supported.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
494 XXX: this should take advantage of postgres's full text search tools,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
495 and this section should be rewritten once it's clear what that
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
496 provides.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
497
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
498 There is a flag for also searching closed PRs, which are skipped by
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
499 default.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
500 There is also a flag to retrieve a randomly selected PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
501
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
502 Note that the weird GNATS query-pr query language is not supported.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
503 (Complex queries are best issued using the SQL interface.)
15
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
504
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
505
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
506 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
507 \section{Browsing the Database}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
508
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
509 The tool \texttt{browse-pr} is provided for examining the database.
35
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
510 Its user interface is reminiscent of a newsreader, e.g. slrn.
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
511 And, it will probably only be implemented in the future.
35
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
512 (It is something I would really like to have, but it's not critical
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
513 for the first deployment.)
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
514
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
515 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
516 \section{Direct SQL Interface}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
517
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
518 XXX: document this, including particularly the views that developers
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
519 are meant to use to look at things.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
520
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
521 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
522 \section{Database Users}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
523
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
524 Unlike GNATS, the Swallowtail database tracks users explicitly.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
525 Each one has a username and a real name, and one or more email
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
526 addresses.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
527 When more than one email address is on file, one of the addresses is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
528 selected for sending mail.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
529 The Organization field that GNATS stores and send-pr provides is filed
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
530 with the email address that sent it.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
531 The database also tracks the last time mail was received from each
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
532 address, as this is often useful when sorting out problems.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
533
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
534 Each address also has a ``web password'' attached to it.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
535 This is generated randomly when the address is first encountered
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
536 in a PR submission and sent back to the user in the response to the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
537 submission.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
538 In the future it is meant to allow logging into the web site as a
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
539 submitter; for now it does nothing.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
540
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
541 Each user also has the following permission bits:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
542 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
543
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
544 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
545 \texttt{mailto} -- if this is false, Swallowtail will not send any
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
546 email to this user.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
547 If the only users subscribed to a PR as respondents have mail
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
548 disabled (or there are no users subscribed as respondents) setting the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
549 PR to feedback state will fail.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
550 This flag can be used for users whose mail bounces, or who are
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
551 otherwise no longer available.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
552
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
553 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
554 \texttt{responsible} -- if this is true, the user is allowed to be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
555 responsible for open PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
556 This should normally be set for all developers, and only developers,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
557 and should be cleared when a developer quits.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
558 (Any open PRs they are responsible for should be reassigned.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
559 It should also be set for role accounts that are responsible by
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
560 default when nobody else is.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
561
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
562 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
563 \texttt{oldresponsible} -- if this is true, the user is allowed to be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
564 responsible only for closed PRs.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
565 This should be set if \texttt{responsible} is set, and should also be
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
566 left set when a developer quits.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
567
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
568 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
569 \texttt{editpr} -- if this is true, the user is allowed to run
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
570 \texttt{edit-pr} and make changes to the database.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
571 This should be set for all developers, and only developers, and should
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
572 be cleared when a developer quits.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
573
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
574 \item
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
575 \texttt{admin} -- if this is true, the user is allowed to perform
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
576 administrative tasks.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
577
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
578 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
579
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
580 Note that while all developers are assumed to have a username, end
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
581 users will in general not have one.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
582
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
583 XXX: what's the mechanism for updating user information?
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
584
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
585 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
586 \section{Administrator Queue}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
587
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
588 The database contains an explicit queue, or in fact several explicit
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
589 queues, of issues requiring administrator attention.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
590 The following subsections describe the components of the administrator
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
591 queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
592 The administrator queue is accessible only to users with the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
593 \texttt{admin} permission bit set.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
594
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
595 \subsection{Comments filed on locked PRs.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
596
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
597 When a comment is made on a PR that is locked, instead of being
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
598 applied to the PR it is placed in the administrator queue for manual
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
599 attention.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
600 The possible actions are:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
601 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
602 \item defer: put it off for tomorrow;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
603 \item accept: add it to the PR, for valid/intended comments;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
604 \item new: create a new PR instead;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
605 \item reroute: send to another PR instead, for mistyped PR numbers;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
606 \item bounce: return to sender, for non-spam with no clear other choice;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
607 \item discard: erase it, as comments on locked PRs are often spam.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
608 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
609
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
610 Accepting a comment on a locked PR automatically unlocks it, and by
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
611 default also reopens it.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
612
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
613 \subsection{Feedback mail bounces.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
614
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
615 When bounced mail arrives, Swallowtail examines it to try to determine
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
616 which PR and which user it applies to.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
617 If it appears to be a bounce generated from feedback mail (or from
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
618 reminder mail) it goes into this queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
619 The full mail is retained for inspection.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
620
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
621 The possible actions are:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
622 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
623 \item defer: put it off for tomorrow;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
624 \item count: just add one to the number of bounces recorded;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
625 \item changeaddr: change to a different address for the same user;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
626 \item nomail: inhibit sending further mail to the user;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
627 \item discard: delete the mail from the queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
628 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
629 % XXX the count used by ``count'' needs to be described in the user
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
630 % data section.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
631
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
632 \subsection{Other mail bounces.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
633
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
634 Bounced mail that can be associated with a PR and/or user but is not
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
635 feedback goes into this queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
636 The actions are the same as for feedback bounces.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
637
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
638 \subsection{Junk mail.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
639
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
640 All other unrecognized mail goes into this queue.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
641 The possible actions are:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
642 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
643 \item defer: put it off for tomorrow;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
644 \item forward: forward it somewhere (normally to yourself);
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
645 \item discard: erase it.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
646 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
647
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
648 (XXX: maybe this stuff should just be forwarded on or dumped out into
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
649 a mailbox somewhere.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
650
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
651 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
652 \section{Classification Schemes}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
653
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
654 Here is a quick discussion of the classification schemes that we
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
655 expect to use, or might use.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
656
19
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
657 There are four kinds of classifications: enumerated (the value must be
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
658 one from a fixed set of constants), tags (the value is zero or more
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
659 constants from a fixed pool), text (the value can be any string), and
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
660 hierarchical (like enumerated, but with structure).
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
661
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
662 In the long run some of the things that are currently PR states may
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
663 want to be tags instead.
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
664
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
665 \subsection{Enumerated classifications}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
666
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
667 \paragraph{Category.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
668 The part of the system affected, in broad terms.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
669 The same as the GNATS ``Category'' field.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
670 This classification is special-cased in some places, at least for now;
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
671 in the future it might make sense to allow those places to do matching
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
672 on arbitrary classifications.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
673
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
674 \paragraph{Class.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
675 The GNATS ``Class'' field: \texttt{sw-bug}, \texttt{doc-bug},
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
676 \texttt{change-request}, etc.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
677
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
678 \paragraph{Severity.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
679 The GNATS ``Severity'' field.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
680
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
681 \paragraph{Priority.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
682
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
683 The GNATS ``Priority'' field.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
684
19
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
685 \subsection{Tag sets.}
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
686
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
687 \paragraph{Release-goals.}
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
688 Tags like \texttt{6-CRITICAL}, to be applied and managed by releng
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
689 when planning for a release.
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
690
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
691 \paragraph{Branch-notes.}
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
692 Tags like \texttt{5-ONLY}, to mark bugs that do not affect HEAD and
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
693 that can therefore be retired along with branches.
0365c1ab6fd8 Improve description of classification schemes.
David A. Holland
parents: 18
diff changeset
694
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
695 \subsection{Text classifications}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
696
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
697 \paragraph{Manpage.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
698 The name of the nearest man page to where the problem appears to be.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
699 FreeBSD has been using this as a tagging scheme for some time.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
700
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
701 \paragraph{Package.}
21
ecae2581f825 minor edit from wiz's comments
David A. Holland
parents: 20
diff changeset
702 The identity (category/directory form) of the package affected.
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
703 (For pkgsrc bugs only.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
704
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
705 \subsection{Hierarchical taxonomies}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
706
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
707 \paragraph{Subsystem.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
708 The hierarchical taxonomy I've been using for the buglists web page.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
709
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
710 \paragraph{Consequences.}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
711 A hierarchical taxonomy of the results of the problem (annoyance,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
712 system crash, remote root exploit, etc.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
713
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
714 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
715 \section{Other Future Features}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
716
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
717 Some other things that aren't likely to be deployed immediately but
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
718 are worth considering later:
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
719
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
720 \begin{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
721
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
722 \item Have a way to note dependencies among PRs, as in 12345 is
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
723 stalled until 24680 is fixed.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
724 (This does not occur often enough in practice to be a priority.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
725
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
726 \item Have a way to massedit a group of PRs; for example, put all PRs
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
727 against a particular driver or filesystem or whatever into feedback
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
728 after major fixes.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
729
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
730 \item There should be administrator buttons for moving comments to
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
731 different PRs, for e.g. misfiled comment notices.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
732
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
733 \item It should be possible for users to set personal tags/priorities
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
734 for annotating and/or sorting nag mail.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
735 (E.g. sort by priority, or age, or time since last change, etc.)
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
736
20
675b7dd62bba I just thought of another thing for the future list.
David A. Holland
parents: 19
diff changeset
737 \item It would be good for each nag mail (at least reminder mail,
675b7dd62bba I just thought of another thing for the future list.
David A. Holland
parents: 19
diff changeset
738 maybe not feedback mail) to report the changes in the list since the
675b7dd62bba I just thought of another thing for the future list.
David A. Holland
parents: 19
diff changeset
739 last one that went out.
675b7dd62bba I just thought of another thing for the future list.
David A. Holland
parents: 19
diff changeset
740
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
741 \item It should be possible to blacklist Cc: of certain addresses
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
742 (particularly internal lists) in bug traffic.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
743
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
744 \item Any new send-pr script should be configurable by the user with
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
745 return addresses and default values for organization and so forth.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
746
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
747 \item It would be nice to be able to track PR status separately (or
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
748 semi-separately) for release branches.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
749 However, it isn't clear how to do this without making a cumbersome
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
750 mess.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
751
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
752 \item It might be useful to be able to explicitly merge duplicate PRs,
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
753 without either losing information or creating a confused mess of
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
754 interleaved comments.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
755
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
756 \item It might be worth adding threading for comments.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
757
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
758 \item We should figure out how to make Google see and index the pages
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
759 for each PR.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
760 Or maybe just the open ones.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
761
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
762 \item It would be nice if the web page for each PR had browse features
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
763 like links for ``show all PRs of this priority'' or ``show all PRs
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
764 from this submitter'' and whatnot.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
765
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
766 \item Lists of PRs in the web interface should have a sidebar to let
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
767 you narrow the list, and a list of the filters currently applied (like
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
768 e.g. NewEgg's product searches).
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
769 Also, the sort order should be defined (unlike GNATS) and selectable.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
770
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
771 \item It might be worthwhile to allow PR subscriptions in a brief mode
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
772 where all you get is ``Joe commented on PR 12345''.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
773
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
774 \item We will eventually want a way to turn MIME blobs already in the
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
775 database into attachments.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
776
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
777 \item Should have per-user tags that are more or less private.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
778
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
779 \item Should have per-user tags that are public.
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
780
35
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
781 \item In the long run it should be possible to log into the web
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
782 interface as a developer and do all developer things there instead of
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
783 from the command line.
d18135398d0f Some clarifications.
David A. Holland
parents: 21
diff changeset
784
18
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
785
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
786 \end{itemize}
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
787
2f6e36e87efd first draft.
David A. Holland
parents: 15
diff changeset
788 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15
c4ee36b629c0 Build bits for docs, and a starting placeholder doc.
David A. Holland
parents:
diff changeset
789 \end{document}