Roundup (Bugtracker)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Roundup (Bugtracker)
Maintainer Ralf Schlatterbeck
Entwickler Richard Jones, Roundup Initiative
Aktuelle Version 1.5.0
(6. Juli 2013)
Betriebssystem Alle auf denen Python läuft.
Lizenz Verschiedene Freie-Software-Lizenzen[1]
Deutschsprachig ja
www.roundup-tracker.org

Roundup ist ein freier, webbasierter Issuetracker mit umfassender Mail-Schnittstelle. Er ist in der Programmiersprache Python implementiert und leicht erweiterbar. Von seiner Community wird Roundup als Issue-Tracker bezeichnet, da sich das Konzept nicht nur auf Bugs, sondern auf Aufgaben im Allgemeinen anwenden lässt. Roundup basiert auf einem preisgekrönten Design von Ka-Ping Yee und wird unter der Leitung von Richard Jones weiterentwickelt.

Funktionsumfang[Bearbeiten]

In der Standard-Konfiguration hat Roundup folgenden Funktionsumfang:

  • eine webbasierte Oberfläche zur Bearbeitung der Aufgaben, und zur Suche nach solchen. Ab Version 1.4.21 bietet Roundup ein Template mit responsive Design auf Basis von Bootstrap an.
  • ein Mail-Gateway, das es erlaubt, Aufgaben zu erstellen und zu bearbeiten
  • eine Datenbank-Abstraktionsschicht, die gegenwärtig u. a. PostgreSQL, MySQL und SQLite unterstützt
  • aufgabenbezogene Interessentenlisten (nosy-Listen), die zur Benachrichtigung per Mail verwendet werden
  • ein auf Rollen, Klassen und Objekten basierendes Berechtigungssystem
  • eine interaktive Shell zum Erstellen und Einspielen von Backups sowie zum Bearbeiten der Objekte

Roundup lässt sich sowohl als eigenständiger Serverprozess betreiben als auch über mod_python oder (notfalls) als CGI-Skript.

Konzepte[Bearbeiten]

Roundup ist in hohem Maße anpassbar:

Datenbankschema[Bearbeiten]

Das Schema beschreibt Klassen von Objekten. In dem als Vorlage mitgelieferten Muster namens classic gibt es zum Beispiel die Klassen issue (Vorgang), msg (Nachricht), user (Benutzer), file (Dateianhang). Leicht lassen sich weitere Klassen (z.B. Kunde, Produkt, Standort) oder Beziehungen (Links) zwischen Klassen ergänzen.

Das Datenbankschema wird in einer Python-Datei im Wurzelverzeichnis der jeweiligen Bugtracker-Instanz festgelegt; dieses Schema wird von Roundup beim Start (bzw., wenn nicht als eigenständiger Serverprozess betrieben), des Apache-Servers eingelesen. Wenn dabei Änderungen festgestellt werden (z. B. in Form neuer Felder), werden die Tabellen der zugrundeliegenden relationalen Datenbank automatisch erweitert.

Seiten-Templates[Bearbeiten]

Roundup verwendet die von Zope bekannte Template Attribute Language (TAL), um HTML- oder XHTML-Seiten zu erzeugen. Manche Templates (Schablonen) sind universell verwendbar, wie z. B. _generic.index.html, das (berechtigten Usern) die Bearbeitung der Einträge aller Klassen erlaubt, die über kein eigenes index-Template verfügen.

Trifft eine Anfrage für „issue123“ ein, so wird zunächst dieser Designator in die Klasse „issue“ und die ID „123“ zerlegt; als Template-Auswahl wird „item“ angenommen, sofern kein anderes angegeben wurde. Es wird zunächst nach der Template-Datei issue.item.html gesucht; ist diese nicht vorhanden, wird alternativ _generic.item.html verwendet. Ist dieses auch nicht vorhanden, tritt ein Fehler auf.

Detektoren[Bearbeiten]

Viele Funktionen von Roundup, incl. mancher Standardfunktionen, werden mit Hilfe von sogenannten Detektoren realisiert, die im Unterverzeichnis „detectors“ der Tracker-Instanz abgelegt werden. Es handelt sich um Python-Funktionen, denen das zu ändernde (soweit schon vorhanden) Objekt sowie die Änderungen an den Attributwerten zur Verfügung stehen.

Detektoren werden in Auditoren und Reaktoren unterteilt. Erstere dienen in erster Linie dazu, automatisch bestimmte Änderungen vorzunehmen (so wird in der Standardkonfiguration derjenige der nosy-Liste hinzugefügt, dem ein Issue zur Bearbeitung zugewiesen wurde) sowie unerlaubte Änderungen zurückzuweisen. Die Reaktoren werden nach den Auditoren ausgeführt und dienen z. B. dazu, neue Kommentare zu einem Issue automatisch per Mail an alle Mitglieder der jeweiligen nosy-Liste zu verschicken.

Detektoren werden ausgelöst, wenn eine der Aktionen

  • „create“ (erzeugen eines Objekts)
  • „set“ (ändern von Attributen)
  • „retire“ (deaktivieren) und
  • „restore“ (reaktivieren)

ausgeführt (bzw. der Versuch unternommen) wird. Sie lassen sich verwenden, um einen komplexen Workflow abzubilden.

Erweiterungen[Bearbeiten]

Im Instanz-Unterverzeichnis „extensions“ können weitere Funktionen abgelegt werden, die für erweiterte Funktionalitäten benötigt werden, die z. B. mit den Mitteln der TAL allein nicht realisierbar sind; auch neue Aktionen sind möglich.

Module mit Funktionen, die sowohl von Detektoren als auch von Erweiterungen verwendet werden können, können im Instanz-Unterverzeichnis „lib“ abgelegt werden.

Einzelnachweise[Bearbeiten]

  1. Lizenztexte von Roundup aus dem aktuellen Versionskontrollsystem

Weblinks[Bearbeiten]