annotate doc/swallowtail.tex @ 34:ceecdbbb1364

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