Problem: Establish an evolutionary replacement for the zope collector
We need to quickly develop a replacement for the Zope collector, and would like to develop one that can serve as foundation to evolve into a full-featured, versatile issue tracker.
Background
We have been aiming for a while to replace the Zope Collector with a more comprehensive (like the the Zope Tracker, http://www.zope.org/Members/klm/TrackerWiki/FrontPage ) and also more easily extensible facility. The recent unexpected loss of the existing collector ( http://lists.zope.org/pipermail/zope-dev/2001-September/013090.html ) has forced our hand, requiring quick production of some replacement.
Rather than doing the most expedient thing, however, we would like to approach this in a way that will reduce the effort to migrate to a more comprehensive solution, at some later date. It looks like we can get ease of immediate implementation plus ease of eventual migration by going with a CMF-based solution, with some eye towards evolution to a more substantial implementation at a later date.
Overarching Goals
- Have the replacement in production relatively very soon.
- Have it provide at least the functionality that the collector did
- Maximize ease of migration path to a later, more comprehensive solution
(We will also need to provide for migration of old collector issues to the new collector, in so far as the old issues can be recovered.)
Solution
This combination of goals paints a poster-child portrait of a candidate CMF application.
- Bug/issue tracking seems like a model content management issue.
- The CMF provides for rapid development of such applications while facilitating easy customization and easy extension of cosmetic aspects like look and feel and UI layout, as well as deeper dimensions like workflow. Applications implemented as CMF content inherently gain ease of use as well as easy interoperation with other CMF content types.
- Further, a CMF-based approach is ultimately our preferred candidate for the long-term solution, and it's likely that a CMF-based short term version will ease the migration to a CMF-based long term version.
- The impending migration of zope.org to a CMF foundation clinches aiming for the CMF as the new collector's platform practically a no brainer.
Specific Goals and Objectives
Here's the desired functionality, grounded by what the collector does:
- Goal: Enable anyone to submit issues
- Anyone can submit requests (for bug fixes, new features, and
documentation enhancements/additions).
- Objective: Enable the requester to specify issue
characteristics, and capture automatically self-evident ones
(like the identity of the supporter, if they're logged in).
Metadata covers requester identification, issue classification and characterization, and so forth. See the Issue Scheme section, below, modelled after the collector schema.
- Objective: Enable requesters to include file uploads with
issues.
(This is for patches and related artifacts. It may make sense to allow anyone to add artifacts to an existing issue - it's less likely to be exploited for abuse than other things, since supporters are notified any time something an issue is changed, and so would be more likely to be alerted than other targets of opportunity.)
- Objective: Enable the requester to specify issue
characteristics, and capture automatically self-evident ones
(like the identity of the supporter, if they're logged in).
- Goal: Enable anyone to examine existing issues
- Enable visitors to browse the collection and find specific issues
according to specific criteria.
- Objective: Provide a search interface, by which visitors can search on the salient characteristics, including issue classification, content, workflow status, and so forth.
- Objective: Provide for search sortings the ease supporters common modes of working through issues. (We need to determine what those modes are.)
- Objective: Provide bookmarkable searches (form
getmethod)
- Goal: Enable supporters to register their handling of an issue
- Use issue instances to contain the details of the responses to the
issue, as well as the details of the request. Thus, at any moment
they represent the current disposition of the issue, a record of
the actions taken, who took them, and so forth.
- Objective: A supporter adds a response to an issue.
The response may just be a note about something in the issue, or
a change in the status of an issue (see the Issue Schema
current_status field.) Any change in the status sends
notifications to the supporters and the issue requester (if they
registered their email address in submitting the issue).
![I am thinking about both simplifying the requirements and extending the scope by enabling anyone, not just designated supporters, to add a response to an issue. This would make the new collector more susceptible to mischief, but i don't have the impression that was a problem in the past, and it would make it easier for community members to chime in, and even resolve miscellaneous issues.]
The transcript of an issue is simply document with successive comments, each appended when a new action is taken.
- Objective: Enable supporters only to edit the transcript
document.
This is a safety for handling mischief, to be used only in extraordinary circumstances. The ordinary mode should be to take an action, and append comments.
- Objective: Enable supporters to make an issue invisible,
and/or delete artifacts from an issue.
Another safety, for mischief. Deletion of artifacts could be an action offered only to supporters from a skinned-folder interface.
- Objective: A supporter adds a response to an issue.
The response may just be a note about something in the issue, or
a change in the status of an issue (see the Issue Schema
current_status field.) Any change in the status sends
notifications to the supporters and the issue requester (if they
registered their email address in submitting the issue).
- Goal: Actively alert concerned parties to issue additions and changes
- Use email to notify supporters and requester about issue activity.
- Objective: Send out email notification whenever a change is made to an issue. If the requester included their email address, include them in the email.
Issue Schema
Here's the issue schema i propose, based on that of the old collector but with some adjustments:
issue_id
requester, email
date_submitted, date_modified
title
description
product: Zope, Collector, Database, Catalog ZServer,
classification: bug feature doc
security_related
importance 1,2,3,4 (change to high, medium, low)
assigned_to
current_status: Pending, Accepted, Completed, Rejected, Postponed
status_description
reported_version
other_version_info
Changes from old collector schema:
- Ommitted many choices from current_status - expecting they
will be explained in status_description, when necessary:
Rejected: Cannot be Reproduced, Duplicate, Forgotten, Retracted, Superceded, Unsupported, We don't know how to do it Accepted: Ongoing Pending: Pending (security), Pending (working), Under Consideration, Wish) - Added status_description, for qualifications to status, eg particularly reason for rejection.
- Removed urgency (i don't think the distinction from importance is clear enough, or that supporters pay it attention - but i could be convinced otherwise)
- Added other_version_info - we can suggest including the following pieces of info when relevent: browser version, webserver version, os, python version, database type and version, etc.
- Brian (Sep 14, 2001 12:50 pm; Comment #1)
- This generally looks good to me. One thing missing is some
sort of "security-related" flag like the old collector had.
That allows us to screen potentially security issues from search results until they have been assessed, and also serves as a sort of "top priority" flag that we use internally (and soon community committers will use) to make sure those issues get immediate attention.
- klm, 09/18/2001 - Good point. The CVS dump i had didn't include that field, so i didn't even know about its existence. I've included it in the schema, and will incorporate the contingency in the use cases...
- ZifNab? (Oct 6, 2001 10:06 am; Comment #1)
- Concerning the assigned to field: Would it be possible to make it so that an issue can be assigned to another person etc... but that an history of these people is kept? If I look at our department I see that for instance a problem is assigned to Person A, but this person says that it is better for Person B so moves the problem to B. When B worked on it, he saw that at a certain moment he tried everything and the only solution was to move it to C. C solved the problem. So we've had a chain of responsible people, but they all worked on certain times on the problem. It would be nice to see that in a tracker as well.