Roundup (issue tracker)
Encyclopedia
Roundup is an open-source
issue
or bug tracking system
featuring a command-line, web and e-mail
interface. It is written in Python
and designed to be highly customizable. Roundup was designed by Ka-Ping Yee for the Software Carpentry
project and has been developed since 2001 under the direction of Richard Jones. It is currently the issue tracker for the Python programming language itself. It was once described as "like Bugzilla
without the six years of training, or RT
without that tedious MySQL
rubbish."
Roundup runs as a daemon
process, CGI
script or alternatively using WSGI (mod python
is supported but that project is no longer in development).
file in the tracker instance's root directory; it is
re-read whenever the server is started anew. When changes are found (e.g. new attributes), the tables of the underlying RDBS are altered accordingly.
(TAL) known from Zope
to create HTML
or XHTML
output. Some templates are used for several classes, e.g. _generic.index.html, which allows (authorized) users to change the objects of all classes which lack an own index template.
When an "issue123" is requested, this designator is split in the issue class
and the id "123". By default an "item" template is chosen: First, an issue.item.html template file is looked for; if it can't be found, _generic.item.html is used as a fallback option. If this is missing equally, an error occurs.
s which have access to the object to change (if already created) and the requested attribute changes.
Detectors are distinguished between auditors and reactors. Auditors are used primarily for several automatic changes (in the standard configuration, the assignedto user is automagically added to the nosy list of the issue), and to refuse un-allowed changes; reactors are executed thereafter and used e.g. for the e-mail notification feature, sending notification mails to all users interested in a certain issue when a comment is added to it.
Detectors are triggered whenever one of the actions
is requested. They can be used to create an elaborated custom workflow.
; even totally new actions are possible.
Python modules which are used by both detectors and extensions can be put in the "lib" subdirectory
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
issue
Issue tracking system
An issue tracking system is a computer software package that manages and maintains lists of issues, as needed by an organization...
or bug tracking system
Bug tracking system
A bug tracking system is a software application that is designed to help quality assurance and programmers keep track of reported software bugs in their work. It may be regarded as a type of issue tracking system....
featuring a command-line, web and e-mail
E-mail
Electronic mail, commonly known as email or e-mail, is a method of exchanging digital messages from an author to one or more recipients. Modern email operates across the Internet or other computer networks. Some early email systems required that the author and the recipient both be online at the...
interface. It is written in Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
and designed to be highly customizable. Roundup was designed by Ka-Ping Yee for the Software Carpentry
Software Carpentry
Software Carpentry was originally a project funded in 2000-2001 by Los Alamos National Laboratory to create easy-to-use open source replacements for basic software engineering tools aimed at programmers working in computational science. The project was started by Gregory V...
project and has been developed since 2001 under the direction of Richard Jones. It is currently the issue tracker for the Python programming language itself. It was once described as "like Bugzilla
Bugzilla
Bugzilla is a Web-based general-purpose bugtracker and testing tool originally developed and used by the Mozilla project, and licensed under the Mozilla Public License....
without the six years of training, or RT
Request Tracker
Request Tracker, commonly abbreviated to RT, is a ticket-tracking system written in Perl used to coordinate tasks and manage requests among a community of users. RT's first release in 1996 was written by Jesse Vincent, who later formed Best Practical Solutions LLC to distribute, develop, and...
without that tedious MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
rubbish."
Features
The standard configuration of Roundup features:- a web interface for viewing, editing and searching issues
- a MailE-mailElectronic mail, commonly known as email or e-mail, is a method of exchanging digital messages from an author to one or more recipients. Modern email operates across the Internet or other computer networks. Some early email systems required that the author and the recipient both be online at the...
gateway allowing creation and changing of issues - a database abstraction layerDatabase abstraction layerA database abstraction layer is an application programming interface which unifies the communication between a computer application and databases such as SQL Server, DB2, MySQL, PostgreSQL, Oracle or SQLite...
, currently supporting (among others) PythonPython (programming language)Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
's built-in "anydbm" module, PostgreSQLPostgreSQLPostgreSQL, often simply Postgres, is an object-relational database management system available for many platforms including Linux, FreeBSD, Solaris, MS Windows and Mac OS X. It is released under the PostgreSQL License, which is an MIT-style license, and is thus free and open source software...
, MySQLMySQLMySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...
and SQLiteSQLiteSQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard... - issue-specific "nosy lists", used for e-mail notifications and conversation (each issue effectively becoming a mini mailing list)
- an authorization system, based on roles (of users), classes and objects
- an interactive shell for backup and restore tasks and for manipulation of objects
Roundup runs as a daemon
Daemon (computer software)
In Unix and other multitasking computer operating systems, a daemon is a computer program that runs as a background process, rather than being under the direct control of an interactive user...
process, CGI
Common Gateway Interface
The Common Gateway Interface is a standard method for web servers software to delegate the generation of web pages to executable files...
script or alternatively using WSGI (mod python
Mod python
mod_python is an Apache HTTP Server module that integrates the Python programming language into the Apache server. It is intended to replace Common Gateway Interface as a method of executing Python scripts on a web server. The promised benefits are faster execution speed and maintaining data over...
is supported but that project is no longer in development).
Database schema
The database schema is defined in a PythonPython (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
file in the tracker instance's root directory; it is
re-read whenever the server is started anew. When changes are found (e.g. new attributes), the tables of the underlying RDBS are altered accordingly.
Page templates
Roundup uses the Template Attribute LanguageTemplate Attribute Language
The Template Attribute Language is a templating language used to generate dynamic HTML and XML pages. Its main goal is to simplify the collaboration between programmers and designers...
(TAL) known from Zope
Zope
Zope is a free and open-source, object-oriented Web application server written in the Python programming language. Zope stands for "Z Object Publishing Environment", and was the first system using the now common object publishing methodology for the Web...
to create HTML
HTML
HyperText Markup Language is the predominant markup language for web pages. HTML elements are the basic building-blocks of webpages....
or XHTML
XHTML
XHTML is a family of XML markup languages that mirror or extend versions of the widely-used Hypertext Markup Language , the language in which web pages are written....
output. Some templates are used for several classes, e.g. _generic.index.html, which allows (authorized) users to change the objects of all classes which lack an own index template.
When an "issue123" is requested, this designator is split in the issue class
Class (computer science)
In object-oriented programming, a class is a construct that is used as a blueprint to create instances of itself – referred to as class instances, class objects, instance objects or simply objects. A class defines constituent members which enable these class instances to have state and behavior...
and the id "123". By default an "item" template is chosen: First, an issue.item.html template file is looked for; if it can't be found, _generic.item.html is used as a fallback option. If this is missing equally, an error occurs.
Detectors
Many Roundup functions, including some of the standard functionality, are implemented using so-called detectors, which are located in the "detectors" sub-directory of the tracker instance. They are Python subroutineSubroutine
In computer science, a subroutine is a portion of code within a larger program that performs a specific task and is relatively independent of the remaining code....
s which have access to the object to change (if already created) and the requested attribute changes.
Detectors are distinguished between auditors and reactors. Auditors are used primarily for several automatic changes (in the standard configuration, the assignedto user is automagically added to the nosy list of the issue), and to refuse un-allowed changes; reactors are executed thereafter and used e.g. for the e-mail notification feature, sending notification mails to all users interested in a certain issue when a comment is added to it.
Detectors are triggered whenever one of the actions
- create
- set (change of attributes)
- retire
- restore
is requested. They can be used to create an elaborated custom workflow.
Extensions
The instance subdirectory "extensions" can hold additional files which are needed for extended functionalities which can't (conveniently) be done with TALTemplate Attribute Language
The Template Attribute Language is a templating language used to generate dynamic HTML and XML pages. Its main goal is to simplify the collaboration between programmers and designers...
; even totally new actions are possible.
Python modules which are used by both detectors and extensions can be put in the "lib" subdirectory
External links
- Project site at sourceforge
- Ka-Ping Yee's Design proposal
- Ka-Ping Yee's Implementation guide
- Roundup Issue Tracker - PyCon 2005 Presentation