annotate doc/swallowtail.tex @ 47:bcd1d06838fd

more better stuff
author David A. Holland
date Wed, 13 Aug 2014 03:03:30 -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}