Author: | Richard Jones |
---|---|
Date: | 2005/03/16 |
Roundup is a generic issue tracker -- it is a bug tracker, help-desk trouble ticket system, conference paper publication system.
It's designed for "knowledge workers" - people who deal with information that needs to be tracked in some way. This includes system administrators, software developers, sales teams, and so on.
Roundup was designed by Ka-Ping Yee and submitted to the Software Carpentry competition back in 2000. He won the "track" class.
Software Carpentry then kinda fizzled out. Other people like me have taken up the challenge though - see SCCons (make-like tool).
Roundup's core still looks a lot like Ping's design. There's a lot added though: multiple backends, new HTML templating, some new database types, stored queries, and so on.
In March, 2005, we're up to stable release 0.8.2. That's 8 major feature releases.
Over the lifespan of the project there's been around 75 contributors - people with CVS access or just writing patches.
We can track all manner of things. We can assign any properties we wish to them - status, title, priorities, etc. Each tracker may be customised to cater to suit site requirements.
Roundup has many layers, starting from the user interface, going down through the tracker logic, the hyperdatabase and resting on the storage layer.
Roundup has a number of user interfaces - all geared towards different styles of interaction with issues in the tracker.
First screen shows issues, sorted by activity, grouped by priority.
Reinforces one of Ping's primary goals - that the first page you see in the tracker should immediately provide useful information (by default, you see issues grouped by priority, ordered by last activity date).
Issue page shows details form at top, notes field, file attachments, messages spool and finally the journal at the bottom.
Fully editable interfaces either as HTML or XHTML with CSS making things pretty. We even have one user who converted it to frames. Another to XML.
You can extend the web interface with new pages, new actions, new templating functions. Possible (already implemented) alterations include wizards, parent/meta bug displays, wikis as mentioned before, ...
Flexible User Access
- Cookie Sessions
- Users have cookie-based sessions, if your particular interface needs them.
- Controlled Access
- May be set up to require login, and may also only allow admin users to register people.
- Register new users
- With optional verification via email.
- Or Apache basic auth
- If Apache does authentication of the user request and sets the REMOTE_USER environment variable, we can use it. Or we can do basic auth if we get an HTTP_AUTHORIZATION header.
Email comes into Roundup. How do we handle it? We start with...
We use the subject line to identify outgoing and incoming messages.
A Roundup tracker is represented on-disk by...
The components of a tracker follow.
Trackers are created by using a template. A tracker itself may be used as a template for another tracker. A tracker template consists of the databse schema, some default configuration file, detectors, extensions, HTML templates and support files.
Yes this means you could distribute your tracker template for others to use. In reality, this isn't done because you'll find that your tracker is quite specifically tailored to your business needs. In our case, our work tracker has regular issues (with some changes), conference papers and sales leads, all in the one place. Not likely to be useful anywhere else.
The hyperdatabase is flexible data store holding configurable data in records which we call items.
The hyperdatabase is implemented on top of a storage layer - anydbm, sqlite, metakit, mysql or postgresql. Anydbm comes with python, so we work out of the box.
Text files are stored on-disk and are therefore accessible for shell commands.
Defined in a tracker's schema.py file, tells us the shape of the tracker's hyperdb. You can make any change you want to your tracker's schema - except removing the users class. You can have multiple types of issues tracker in the one tracker (eg. development, conference papers and sales leads)
Properties may be of a number of types.
Full history of changes to issues with configurable verbosity. "create", "edit", "link" and "unlink" events. Also allows us to have auto-properties. When messages are added to an issue, their journal has a "link" entry added.
We also have a number of properties managed by the hyperdb.
Creation -- First journal record: when?
Creator -- First journal record: who?
Activity -- Last journal record: when?
Actor -- Last journal record: who?
Tracker detectors are automatic actions that fire when data in the hyperdb is changed.
Auditors fire before a change is made, for example:
- Block unwanted attachments in email,
- Prevent closure of issue with dependents, or
- Perform GPG verification.
Reactors fire after a change is made, for example:
- Close parent / meta issues,
- Email someone every issue create, or
- Send email to a selected users (eg. nosy list).
Permissions
- Permissions, Roles, Users
- Access is controlled through an extensible set of Permissions. Roles group together Permissions into logical groupings (ie. the Admin Role can do everything, the User Role can do some things, a "Guest User" Role could do less, etc). Users are assigned one or more Roles.
- View, Edit, Create
- Permission checks are performed manually by appropriate code (the web and email interfaces do this for you) during View, Create and Edit operations, but also for things like just looking at the Web interface.
- Classes, Properties, Code
- Permissions normally apply to classes of items. They may also apply to specific properties (eg. user email address View permissions might be restricted). Permissions may have code attached (eg. users can edit only their own user record)
A guiding principle, based on my experience with other tracker software, is to make Roundup as trivial as possible to get going.
Since 0.8 was just released, development now mostly goes into maintenance mode, until I've recharged enough to launch into the next features. Some things I've got planned for the next release: