Roundup (issue tracker)

Last updated
Roundup
Original author(s) Ka-Ping Yee
Developer(s) Richard Jones, Roundup Initiative
Initial release18 August 2001;22 years ago (2001-08-18)
Stable release
2.4.0 [1]   OOjs UI icon edit-ltr-progressive.svg / 13 July 2024;10 days ago (2024-07-13)
Repository
Written in Python
Operating system Cross-platform
Type Issue tracking system
License MIT License [2]   OOjs UI icon edit-ltr-progressive.svg
Website www.roundup-tracker.org   OOjs UI icon edit-ltr-progressive.svg

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. [3]

Contents

History

Roundup was designed by Ka-Ping Yee for the Software Carpentry project and was developed from 2001 to 2016 under the direction of Richard Jones. Since then, it has been developed by the Roundup community. It was the issue tracker for the Python programming language for 17 years before migrating to GitHub. [4] It was once described as "like Bugzilla without the six years of training, or RT without that tedious MySQL rubbish." [5]

Features

The standard configuration of Roundup features:

Roundup supports several web backends. [10] It can be run standalone, as a background daemon process, as a CGI script [11] or as WSGI application.

Concepts

Roundup is customized by changing the contents of the tracker instance directory:

Database schema

The database schema is defined in a Python 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 Language (TAL) to create HTML or XHTML output. Version 1.5.0 adds experimental support for alternative template engines, such as Jinja2. [12]

Templates are named after the classes in database. Roundup automatically chooses template based on class name requested from URL. 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". [13] 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, [14] which are located in the "detectors" sub-directory of the tracker instance. They are Python subroutines 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 automatically 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.

Extensions

The instance subdirectory "extensions" can hold additional files which are needed for extended functionalities which can't (conveniently) be done with TAL; even totally new actions are possible.

Python modules which are used by both detectors and extensions can be put in the "lib" subdirectory

See also

Related Research Articles

<span class="mw-page-title-main">WebObjects</span> Java web application server and framework originally developed by NeXT Software

WebObjects is a discontinued Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.

<span class="mw-page-title-main">Dependency injection</span> Software programming technique

In software engineering, dependency injection is a programming technique in which an object or function receives other objects or functions that it requires, as opposed to creating them internally. Dependency injection aims to separate the concerns of constructing objects and using them, leading to loosely coupled programs. The pattern ensures that an object or function that wants to use a given service should not have to know how to construct those services. Instead, the receiving 'client' is provided with its dependencies by external code, which it is not aware of. Dependency injection makes implicit dependencies explicit and helps solve the following problems:

The following tables compare general and technical information for many wiki software packages.

In software engineering, inversion of control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from external source. The term "inversion" is historical: a software architecture with this design "inverts" control as compared to procedural programming. In procedural programming, a program's custom code calls reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls the custom code. In essence, this means delegating the execution of tasks to generic code over specific code allowing for more versatility.

<span class="mw-page-title-main">Mantis Bug Tracker</span> Bug tracking system

Mantis Bug Tracker is a free and open source, web-based bug tracking system. The most common use of MantisBT is to track software defects. However, MantisBT is often configured by users to serve as a more generic issue tracking system and project management tool.

Push technology, also known as server Push, refers to a communication method, where the communication is initiated by a server rather than a client. This approach is different from the "pull" method where the communication is initiated by a client.

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 7231.

<span class="mw-page-title-main">Django (web framework)</span> Python web framework

Django is a free and open-source, Python-based web framework that runs on a web server. It follows the model–template–views (MTV) architectural pattern. It is maintained by the Django Software Foundation (DSF), an independent organization established in the US as a 501(c)(3) non-profit.

Core Data is an object graph and persistence framework provided by Apple in the macOS and iOS operating systems. It was introduced in Mac OS X 10.4 Tiger and iOS with iPhone SDK 3.0. It allows data organized by the relational entity–attribute model to be serialized into XML, binary, or SQLite stores. The data can be manipulated using higher level objects representing entities and their relationships. Core Data manages the serialized version, providing object lifecycle and object graph management, including persistence. Core Data interfaces directly with SQLite, insulating the developer from the underlying SQL.

<span class="mw-page-title-main">TurboGears</span>

TurboGears is a Python web application framework consisting of several WSGI components such as WebOb, SQLAlchemy, Kajiki template language and Repoze.

qooxdoo Open-source Ajax web application framework

qooxdoo is an open-source Ajax web application framework. It is an LGPL- and/or EPL-licensed client-side and server-agnostic solution, and includes support for professional JavaScript development, a graphical user interface (GUI) toolkit and high-level client-server communication.

<span class="mw-page-title-main">LedgerSMB</span> Accounting software planning system

LedgerSMB is a libre software double entry accounting and Enterprise Resource Planning (ERP) system, focussed on functionality required by small (self-employment) and medium size businesses. However, companies with millions of journal lines should also feel supported. Accounting data is stored in a free to use database server (PostgreSQL) and a standard web browser can be used as its user interface. The software is suited for hosting locally as well as on various public cloud providers. Commercial support can be obtained from several providers.

<span class="mw-page-title-main">SPIP</span>

SPIP is a free software content management system designed for web site publishing, oriented towards online collaborative editing.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

A single-page application (SPA) is a web application or website that interacts with the user by dynamically rewriting the current web page with new data from the web server, instead of the default method of a web browser loading entire new pages. The goal is faster transitions that make the website feel more like a native app.

<span class="mw-page-title-main">Shinken (software)</span> Network monitoring software

Shinken is an open source computer system and network monitoring software application compatible with Nagios. It watches hosts and services, gathers performance data and alerts users when error conditions occur and again when the conditions clear.

The following outline is provided as an overview of and topical guide to the Perl programming language:

<span class="mw-page-title-main">Yesod (web framework)</span>

Yesod is a web framework based on the programming language Haskell for productive development of type-safe, representational state transfer (REST) model based, high performance web applications, developed by Michael Snoyman, et al. It is free and open-source software released under an MIT License.

Ignition is an Integrated Software Platform for SCADA systems released by Inductive Automation in January 2010. It is based on a SQL Database-centric architecture. Ignition features cross-platform, web-based deployment through Java Web Start technology. The Ignition platform has three main components: the Ignition Gateway, the Designer, and the runtime clients. Independent modules provide separate functionality in any or all of the platform components. Ignition SCADA modules provide features such as: Real-Time Status Control, Alarming, Reporting, Data Acquisition, Scripting, Scheduling, MES, and Mobile support.

ASP.NET Web Forms is a web application framework and one of several programming models supported by the Microsoft ASP.NET technology. Web Forms applications can be written in any programming language which supports the Common Language Runtime, such as C# or Visual Basic. The main building blocks of Web Forms pages are server controls, which are reusable components responsible for rendering HTML markup and responding to events. A technique called view state is used to persist the state of server controls between normally stateless HTTP requests.

References

  1. "Roundup 2.4.0 released". 13 July 2024.
  2. "License".
  3. The primary user interface is the web interface. A so-called classic tracker template is distributed as the standard template and data structure set, but can be used as a starting point for customization
  4. Python Bug Tracker
  5. NTKnow 2002/07/05 - TRACKING
  6. REST documentation
  7. E-Mail User Interface, Roundup user's guide
  8. Design of Nosy Lists
  9. access control, Roundup design description
  10. "Installing Roundup - Roundup 2.2.0 documentation".
  11. usage via CGI is rare and not recommended, for performance reasons
  12. "Roundup: A simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. Highly customisable".
  13. identifiers and designators, Roundup design description
  14. detector interface, Roundup design description