Mercurial > p > roundup > code
annotate doc/overview.txt @ 7354:692242b3effd
initial pass to change references to reference doc where needed.
There are some references that don't seem to exist anymore. They were
left pointing to their original values.
These are in the 0.6 upgrade directions and whatsnew-0.7. They
reference macros that don't exist or config.py that is no longer
valid.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 16 May 2023 01:19:16 -0400 |
| parents | e7b4ad2c57ac |
| children | a072331c843b |
| rev | line source |
|---|---|
|
6586
24e2eeb2ed9a
Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents:
6118
diff
changeset
|
1 .. meta:: |
|
6774
e7b4ad2c57ac
landmarks, skiplink, remove bad attrs, autocomplete search
John Rouillard <rouilj@ieee.org>
parents:
6586
diff
changeset
|
2 :description: |
|
6586
24e2eeb2ed9a
Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents:
6118
diff
changeset
|
3 Original proposal for the Roundup Issue Tracker. The problem |
|
24e2eeb2ed9a
Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents:
6118
diff
changeset
|
4 it solves, and guiding principles. Presents the |
|
24e2eeb2ed9a
Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents:
6118
diff
changeset
|
5 components of Roundup and how they interact. |
|
24e2eeb2ed9a
Add meta description to some doc pages.
John Rouillard <rouilj@ieee.org>
parents:
6118
diff
changeset
|
6 |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 ======================================================= |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 Roundup: an Issue-Tracking System for Knowledge Workers |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 ======================================================= |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
10 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
11 :Authors: Ka-Ping Yee (original_), Richard Jones (implementation) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
12 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
13 .. _original: original_overview.html |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
14 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 .. contents:: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
16 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
17 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 Introduction |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
19 ============ |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
20 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 Roundup is an issue-tracking system called which will manage a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 number of issues (with properties such as "description", "priority", |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 and so on) and provides the ability to: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 (a) submit new issues, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 (b) find and edit existing issues, and |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 (c) discuss issues with other participants. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 Roundup facilitates communication among the participants by managing |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
30 discussions and notifying interested parties when issues are edited. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 Background |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 ---------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 A typical software project requires the management of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 many tasks, usually distributed among several collaborators. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 In fact, any project team |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
39 could use a tool for sorting out and discussing all the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
40 relevant issues. A common approach is to set up some kind |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 of "to-do" list that people can share. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 However, to address the overall problem we need much more |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
44 than just a shared to-do list; we need to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
45 manage a growing body of knowledge and experience to help a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
46 team collaborate effectively on a project. The issue-tracking |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
47 tool becomes a nexus for communication: the Grand Central |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
48 Station of the group intelligence. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
49 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
50 The primary focus of this design is to help |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
51 developers work together well, not to provide a customer |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
52 service interface to the developers. This is not to say that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
53 the design is to be made unsuitable for customers to use. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
54 Rather, it is assumed that many of the same qualities |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
55 that are good for supporting development (see below) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
56 are also good for non-developers using the system. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
57 Additional niceties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
58 for providing a safe or simplified interface to clients are |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
59 intentionally deferred for later consideration. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
60 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
61 A good issue-tracking system should have at least the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
62 following properties: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
63 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
64 **Low barrier to participation** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
65 The usefulness of the tool depends entirely on the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
66 information people contribute to it. It must be made |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
67 as easy as possible to submit new issues and contribute |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
68 information about existing issues. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
69 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
70 **Straightforward navigation** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
71 It should be easy for users to extract information they need |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
72 from the system to direct their decisions and tasks. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
73 They should be able to get a decent overview of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
74 things as well as finding specific information when |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
75 they know what they're after. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
76 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
77 **Controlled information flow** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
78 The users must have control over how much information and |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
79 what information they get. A common flaw of some issue-tracking |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
80 systems is that they inundate users with so much useless |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
81 e-mail that people avoid the system altogether. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
82 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
83 With a nod to the time-honoured computer science tradition |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
84 of "filling in the fourth quadrant", we note that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
85 there are really four kinds of information flow |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
86 going on here. The three mentioned qualities |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
87 really address the first three quadrants of this 2-by-2 matrix, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
88 respectively: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
89 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
90 1. User push: a user submits information to the system. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
91 2. User pull: a user queries for information from the system. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
92 3. System push: the system sends information out to users. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
93 4. System pull: the system solicits information from users. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
94 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
95 An example of the fourth kind of flow is voting. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
96 Voting isn't described in this design, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
97 but it should be noted as a potential enhancement. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
98 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
99 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
100 Guiding Principles |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
101 ------------------ |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
102 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
103 **Simplicity** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
104 It is a strong requirement |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
105 that the tool be accessible and understandable. It should |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
106 be fairly obvious what different parts of the interface do, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
107 and the inner mechanisms should operate in ways that most |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
108 users can easily predict. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
109 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
110 **Efficiency** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
111 We aim to optimize for minimum effort to do the most common |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
112 operations, and best use of resources like screen real estate |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
113 to maximize the amount of information that we summarize and present. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
114 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
115 **Generality** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
116 We try to avoid making |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
117 unnecessary assumptions that would restrict the applicability |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
118 of the tool. For example, there is no reason why one might |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
119 not also want to use this tool to manage a design process, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
120 non-software projects, or organizational decisions. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
121 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
122 **Persistence** We |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
123 prefer hiding or reclassifying information to deleting it. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
124 This helps support the collection of statistics later. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
125 If records are never destroyed, there is little danger |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
126 in providing access to a larger community, and logging yields |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
127 accountability, which may encourage better behaviour. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
128 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
129 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
130 Data Model |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
131 ========== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
132 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
133 Roundup stores a number of *items*, each of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
134 which can have several properties and an associated discussion. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
135 The properties can be used to classify or search for items. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
136 The discussion is a sequence of e-mail messages. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
137 Each item is identified by a unique number, and has |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
138 an activity log which |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
139 records the time and content of edits made on its properties. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
140 The log stays fairly small since the design intentionally |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
141 provides only small data types as item properties, and |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
142 encourages anything large to be attached to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
143 e-mail where it becomes part of the discussion. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
144 The next section explains how items are organized. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
145 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
146 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
147 The Hyperdatabase |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
148 ----------------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
149 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
150 Often when classifying information we are |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
151 asked to select exactly one of a number of categories |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
152 or to fit it into a rigid hierarchy. Yet things |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
153 only sometimes fall into one category; often, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
154 a piece of information may be related to several concepts. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
155 |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
156 For example, forcing each item into a single keyword |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
157 category is not just suboptimal but counterproductive: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
158 seekers of that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
159 item may expect to find it in a different category |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
160 and conclude that the item is not present in the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
161 database -- which has them *worse* off |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
162 than if the items were not categorized at all. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
163 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
164 Some systems try to alleviate this problem by |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
165 allowing items to appear at multiple locations |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
166 in a tree, as with "aliases" or "symbolic links" in |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
167 a filesystem, for example. This does help somewhat, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
168 but we want to be even more flexible |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
169 by allowing the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
170 organization of items into sets that may freely |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
171 intersect. Rather than putting each item at exactly |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
172 one place in an overall "grand scheme", a item can |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
173 belong to as many sets as are appropriate. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
174 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
175 If we choose to represent the sets themselves as items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
176 and set membership as a link between items, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
177 we're now ready to present the definition of a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
178 hyperdatabase. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
179 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
180 A *hyperdatabase* is a collection of *items* |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
181 that may be hyperlinked to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
182 each other (hence the name "hyperdatabase"). |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
183 Each item carries a collection of key-value pairs, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
184 where some of the values may be links to other items. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
185 Any item may have an arbitrary number of outgoing and |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
186 incoming links. Hyperdatabases are able to efficiently |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
187 answer queries such as "what items link to this item?" |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
188 and "what items does this item link to?" |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
189 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
190 Rationale |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
191 --------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
192 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
193 There are several reasons for building our |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
194 own kind of database for Roundup rather than using an existing one. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
195 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
196 Requiring the installation of a full-blown third-party |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
197 SQL database system would probably deter many potential |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
198 users from attempting to set up Roundup; |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
199 yet a real relational database would be too |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
200 complicated to implement on our own. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
201 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
202 On the other hand, a hyperdatabase can be implemented fairly easily |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
203 using one of the Python DBM modules, so we can |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
204 take the "batteries-included" approach and provide it |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
205 as part of the system. It's easier to build and understand |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
206 than a true relational database (in accordance with our guiding |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
207 principle of *simplicity*), but provides |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
208 most of the query functionality we want. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
209 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
210 A hyperdatabase is well suited for finding the intersection |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
211 of a number of sets in which items belong. We expect that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
212 most of the queries people want to do will be of this |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
213 form, rather than complicated SQL queries. For example, a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
214 typical request might be |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
215 "show me all critical items related to security". |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
216 The ability to store arbitrary key-value pairs and links |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
217 on items gives it more flexibility than an RDBMS. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
218 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
219 Users are not going to be making thousands of queries |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
220 per second, so it makes sense to optimize for simplicity |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
221 and flexibility rather than performance. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
222 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
223 .. img: images/hyperdb.png |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
224 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
225 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
226 Roundup's Hyperdatabase |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
227 ----------------------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
228 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
229 For our application, we store each item as a item in a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
230 hyperdatabase. The item's properties are stored |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
231 as key-value pairs on its item. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
232 Several types of properties are allowed: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
233 *string*, *number*, *boolean*, *date*, *interval, *link*, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
234 and *multlink*. Another type, *password*, is a special type |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
235 of string and it's only used internally to Roundup. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
236 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
237 The *string* type is for short, free-form strings. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
238 String properties are not intended to contain large |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
239 amounts of text, and it is recommended that they be presented |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
240 as one-line fields to encourage brevity. A *number* is a special |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
241 type of string that represents a numeric value. A *boolean* is |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
242 further constrained to be a *true* or *false* value. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
243 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
244 The *date* type is for calendar dates and times. An *interval* |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
245 is the time between two dates. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
246 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
247 The *link* type denotes a single selection from a number of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
248 options. A *link* property entails a link from the item |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
249 possessing the property to the item representing the chosen option. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
250 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
251 The *multilink* type is for a list of links to any |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
252 number of other items in the in the database. A *multilink* |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
253 property, for example, can be used to refer to related items |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
254 or keyword categories relevant to an item. |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
255 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
256 For Roundup, all items have four properties that are not customizable: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
257 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
258 1. a *date* property named **creation** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
259 2. a *link* property named **creator** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
260 3. a *date* property named **activity** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
261 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
262 These properties represent the date of the creation of the item, who |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
263 created it, and when the last change was made. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
264 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
265 Further, all *issue* items have an additional four properties: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
266 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
267 1. a *string* property named **title** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
268 2. a *multilink* property named **nosy** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
269 3. a *multilink* property named **messages** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
270 4. a *multilink* property named **files** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
271 5. a *multilink* property named **superseder** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
272 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
273 The **title** property is a short one-line description of the item. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
274 The detailed description can go in the first e-mail message of the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
275 item's messages spool. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
276 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
277 The **nosy** property contains a list of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
278 the people who are interested in an item. This |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
279 mechanism is explained in the section on `Submission and Discussion`_. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
280 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
281 Each message added to the item goes in the **messages** spool - any |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
282 attached files go in the **files** spool. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
283 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
284 The **superseder** property is used to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
285 support the splitting, joining, or replacing of items. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
286 When several items need to be |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
287 joined into a single item, all the old items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
288 link to the new item in their **superseder** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
289 property. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
290 When an item needs to be split apart, the item |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
291 references all the new items in its **superseder** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
292 propety. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
293 We can easily list all active items just by checking |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
294 for an empty **superseder** property, and trace |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
295 the path of an item's origins by querying the hyperdatabase |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
296 for links. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
297 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
298 Users of the system are also represented by items in the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
299 hyperdatabase, containing properties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
300 like the user's e-mail address, login name, and password. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
301 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
302 The Default Schema |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
303 ------------------ |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
304 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
305 It is hoped that the hyperdatabase together with the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
306 specializations mentioned above for Roundup will be |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
307 applicable in a variety of situations |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
308 (in accordance with our guiding principle of *generality*). |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
309 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
310 To address the problem at hand, we need |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
311 a specific schema for items applied particularly to software development. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
312 Again, we are trying to keep the schema simple: too many |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
313 options make it tougher for someone to make a good choice:: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
314 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
315 # IssueClass automatically gets these properties: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
316 # title = String() |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
317 # messages = Multilink("msg") |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
318 # files = Multilink("file") |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
319 # nosy = Multilink("user") |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
320 # superseder = Multilink("issue") |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
321 # (it also gets the Class properties creation, activity and creator) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
322 issue = IssueClass(db, "issue", |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
323 assignedto=Link("user"), keyword=Multilink("keyword"), |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
324 priority=Link("priority"), status=Link("status")) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
325 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
326 The **assignedto** property assigns |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
327 responsibility for an item to a person or a list of people. |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
328 The **keyword** property places the |
|
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
329 item in an arbitrary number of relevant keyword sets (see |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
330 the section on `Browsing and Searching`_). |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
331 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
332 The **prority** and **status** values are initially: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
333 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
334 =========== ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
335 Priority Description |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
336 =========== ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
337 "critical" panic: work is stopped! |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
338 "urgent" important, but not deadly |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
339 "bug" lost work or incorrect results |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
340 "feature" want missing functionality |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
341 "wish" avoidable bugs, missing conveniences |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
342 =========== ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
343 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
344 ============= ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
345 Status Description |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
346 ============= ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
347 "unread" submitted but no action yet |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
348 "deferred" intentionally set aside |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
349 "chatting" under review or seeking clarification |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
350 "need-eg" need a reproducible example of a bug |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
351 "in-progress" understood; development in progress |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
352 "testing" we think it's done; others, please test |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
353 "done-cbb" okay for now, but could be better |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
354 "resolved" fix has been released |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
355 ============= ===================================== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
356 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
357 As previously mentioned, each item gets an activity log. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
358 Whenever a property on an item is changed, the log |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
359 records the time of the change, the user making the change, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
360 and the old and new values of the property. This permits |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
361 the later gathering of statistics (for example, the average time |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
362 from submission to resolution). |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
363 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
364 We do not specify or enforce a state transition graph, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
365 since making the system rigid in that fashion is probably more |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
366 trouble than it's worth. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
367 Experience has shown that there are probably |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
368 two convenient automatic state transitions: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
369 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
370 1. from **unread** to **chatting** when e-mail is written about an item |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
371 2. from **testing** to **resolved** when a new release of the software is made |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
372 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
373 Beyond these, in accordance with our principle of *generality*, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
374 we allow access to the hyperdatabase |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
375 API so that scripts can automate transitions themselves or |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
376 be triggered by changes in the database. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
377 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
378 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
379 User Interface |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
380 ============== |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
381 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
382 Roundup provides its services through two main interfaces: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
383 e-mail and the Web. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
384 This division is chosen to optimize the most common tasks. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
385 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
386 E-mail is best suited for |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
387 the submission of new items since most people are most comfortable |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
388 with composing long messages in their own favourite e-mail client. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
389 E-mail also permits them to mention URLs or attach files relevant |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
390 to their submission. Indeed, in many cases people are already |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
391 used to making requests by sending e-mail to a mailing list |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
392 of people; they can do exactly the same thing to use Roundup |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
393 without even thinking about it. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
394 Similarly, people are already |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
395 familiar with holding discussions in e-mail, and plenty of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
396 valuable usage conventions and software tools already exist for that medium. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
397 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
398 The Web, on the other hand, is best suited for summarizing |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
399 and seeking information, because it can present an interactive |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
400 overview of items. Since the Web has forms, it's also |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
401 the best place to edit items. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
402 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
403 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
404 Submission and Discussion |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
405 ------------------------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
406 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
407 The system needs an address for receiving mail |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
408 and an address that forwards mail to all participants. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
409 Each item has its own list |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
410 of interested parties, known as its *nosy list*. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
411 Here's how nosy lists work: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
412 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
413 1. New items are always submitted by sending an e-mail message |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
414 to Roundup. The "Subject:" field becomes the description |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
415 of the new item. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
416 The message is saved in the mail spool of the new item, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
417 and copied to the list of all participants |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
418 so everyone knows that a new item has been added. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
419 The new item's nosy list initially contains the submitter. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
420 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
421 2. All e-mail messages sent by Roundup have their "Reply-To:" |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
422 field set to Roundup's address, and have the item's |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
423 number in the "Subject:" field. Thus, any replies to the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
424 initial announcement and subsequent threads are all received |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
425 by Roundup. Roundup notes the item number in the "Subject:" |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
426 field of each incoming message and appends the message |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
427 to the appropriate spool. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
428 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
429 3. Any incoming e-mail tagged with an item number is copied |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
430 to all the people on the item's nosy list, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
431 and any users found in the "From:", "To:", or "Cc:" fields |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
432 are automatically added to the nosy list. Whenever a user |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
433 edits an item's properties in the Web interface, they are |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
434 also added to the nosy list. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
435 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
436 The effect is like each item having its own little mailing list, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
437 except that no one ever has to worry about subscribing to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
438 anything. Indicating interest in an issue is sufficient, and if you |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
439 want to bring someone new into the conversation, all you need to do |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
440 is "Cc:" a message to them. It turns out that no one ever has to worry |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
441 about unsubscribing, either: the nosy lists are so specific in scope |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
442 that the conversation tends to die down by itself when the issue is |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
443 resolved or people no longer find it sufficiently important. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
444 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
445 Each nosy list is like an asynchronous chat room, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
446 lasting only a short time (typically five or ten messages) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
447 and involving a small group of people. However, that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
448 group is the *right* group of people: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
449 only those who express interest in an item in some way |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
450 ever end up on the list, so no one gets spammed with mail they |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
451 don't care about, and no one who *wants* |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
452 to see mail about a particular item needs to be left |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
453 out, for they can easily join in, and just as easily |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
454 look at the mail spool on an item to catch up on any |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
455 messages they might have missed. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
456 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
457 We can take this a step further and |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
458 permit users to monitor particular keywords or classifications of items |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
459 by allowing other kinds of items to also have their own nosy lists. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
460 For example, a manager could be on the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
461 nosy list of the priority value item for "critical", or a |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
462 developer could be on the nosy list of the keyword value item for "security". |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
463 The recipients are then determined by the union of the nosy lists on the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
464 item and all the items it links to. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
465 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
466 Using many small, specific mailing lists results |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
467 in much more effective communication than one big list. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
468 Taking away the effort of subscribing and unsubscribing |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
469 gives these lists the "feel" of being cheap and |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
470 disposable. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
471 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
472 The transparent capture of the mail spool attached to each |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
473 issue also yields a nice knowledge repository over time. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
474 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
475 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
476 Editing |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
477 ------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
478 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
479 Since Roundup is intended to support arbitrary user-defined |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
480 schema for item properties, the editing interface must be |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
481 automatically generated from the schema. The configuration for |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
482 Roundup will include a template describing how to lay out the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
483 properties to present a UI for inspecting and editing items. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
484 For example:: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
485 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
486 <tr> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
487 <th class="required">Priority</th> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
488 <td tal:content="structure context/priority/menu">priority</td> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
489 <th>Status</th> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
490 <td tal:content="structure context/status/menu">status</td> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
491 </tr> |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
492 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
493 To display the editing form for an item, Roundup inserts |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
494 an HTML form widget where it encounters an expression like |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
495 ``tal:content="structure context/priority/menu"``. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
496 Each type has its own appropriate editing widget: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
497 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
498 - *string* and *number* properties appear as text fields |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
499 - *boolean* properties appear as a yes/no selection |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
500 - *date* and *interval* properties appear as text fields |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
501 - *link* properties appear as selection lists |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
502 - *multilink* properties appear as multiple-selection lists |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
503 or text fields with pop-up widgets for larger selections. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
504 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
505 We foresee the use of custom date fields for things like deadlines, |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
506 so input fields for *date* properties support a |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
507 simple way of specifying relative dates (such as "3w" for |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
508 "three weeks from now"). |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
509 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
510 The **superseder** property is a special case: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
511 although it is more efficient to store a **superseder** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
512 property in the superseded item, it makes more sense to provide |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
513 a "supersedes" edit field on the superseding item. We use |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
514 a special widget on items for this purpose (a text field containing |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
515 a comma-separated list of items). Links in the **superseder** property |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
516 appear on both the superseding and superseded items to |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
517 facilitate navigating an item's pedigree. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
518 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
519 After the editing widgets, the item inspection page shows |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
520 a "note" text box and then a display of the messages in the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
521 discussion spool. This field |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
522 lets you enter a note explaining your change when you edit the |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
523 item, and the note is included in the notification message that |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
524 goes out to tell the interested parties on the nosy list of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
525 your edits. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
526 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
527 Browsing and Searching |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
528 ---------------------- |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
529 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
530 The ideal we would like to achieve is to make searching as |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
531 much like browsing as possible: the user simply clicks about |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
532 on things that seem interesting, and the information narrows |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
533 down comfortably until the goal is in sight. This is preferable |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
534 to trying to digest a screen filled with widgets and buttons |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
535 or entering a search expression in some arcane algebraic syntax. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
536 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
537 While a one-shot search may be appropriate when you're |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
538 looking for a single item and you know exactly what you want, it's |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
539 not very helpful when you want an overview of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
540 things ("Gee, there are a lot more high-priority items than |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
541 there were last week!") or trying to do comparisons ("I have |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
542 some time today, so who is busiest and could most use some help?") |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
543 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
544 The browsing interface presents filtering |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
545 functionality for each of the properties in the schema. As with |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
546 editing, the interface is generated from a template |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
547 describing how to lay out the properties. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
548 Each type of property has its own appropriate filtering widget: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
549 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
550 - *string* properties appear as text fields supporting |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
551 case-insensitive substring match |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
552 - *date* properties appear as a text field which accepts a date |
| 6118 | 553 range with start, end or both. Multiple date ranges can be specified |
| 554 separated by a comma. An empty date can be searched for by specifying | |
| 555 '-' instead of a date range | |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
556 - *link* properties appear as a group of selectable options |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
557 (the filter selects the *union* of the sets of items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
558 associated with the active options) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
559 - *multilink* properties appear as a group of selectable options |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
560 (the filter selects the *intersection* of the sets of items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
561 associated with the active options) |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
562 |
|
3904
91008ec8f9a0
retire "topic" usage
Justus Pendleton <jpend@users.sourceforge.net>
parents:
1654
diff
changeset
|
563 For a *multilink* property like **keyword**, |
|
1654
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
564 one possibility is to show, as hyperlinks, the keywords whose |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
565 sets have non-empty intersections with the currently displayed set of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
566 items. Sorting the keywords by popularity seems |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
567 reasonable. Clicking on a keyword then narrows both the list of items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
568 and the list of keywords. This gives some of the feel of walking |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
569 around a directory tree -- but without the restriction of having |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
570 to select keywords in a particular hierarchical order, and without |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
571 the need to travel all the way to the leaves of the tree before |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
572 any items are visible. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
573 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
574 Below the filtering form is a listing of items, with their |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
575 properties displayed in a table. Rows in the table are |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
576 generated from a template, as with the editing interface. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
577 This listing is the central overview of the system, and it |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
578 should aim to maximize the density of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
579 useful information in accordance with our guiding principle of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
580 *efficiency*. Colour may be used to indicate |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
581 the status of each item to help the eye sift through the index quickly. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
582 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
583 Roundup sorts items |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
584 in groups by priority, and then within groups by the date |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
585 of last activity. This reveals at a glance where discussion is |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
586 most active, and provides an easy way for anyone to move an issue |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
587 up in the list. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
588 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
589 The page produced by a given set of browsing options constitutes |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
590 an *index*. The options should all be part of the query |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
591 parameters in the URL so that views may be bookmarked. An index |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
592 specifies: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
593 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
594 - search strings for string properties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
595 - date ranges for date properties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
596 - acceptable values for choice properties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
597 - required values for reference properties |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
598 - a sorting key |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
599 - a grouping key |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
600 - a list of properties for which to display filtering widgets |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
601 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
602 Our default index is: |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
603 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
604 - all **status** values except "resolved" |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
605 - show **priority** and **fixer** |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
606 - grouping by **priority** in sections |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
607 - sorting by decreasing **activity** date |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
608 |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
609 The starting URL for Roundup immediately presents the listing of |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
610 items generated by this default index, with no preceding query screen. |
|
284c26c1ef19
aargh, b2 was b0rken
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
611 |
