Roundup (Bugtracker)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Roundup
Maintainer Ralf Schlatterbeck
Entwickler Richard Jones, Roundup Initiative
Aktuelle Version 1.5.1[1]
(11. Januar 2016)
Betriebssystem Alle auf denen Python läuft.
Lizenz Verschiedene Freie-Software-Lizenzen[2]
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 Vorgänge bzw. Aufgaben im Allgemeinen anwenden lässt.

Entwicklung[Bearbeiten]

Roundup basiert auf einem preisgekrönten Design von Ka-Ping Yee und wurde lange unter der Leitung von Richard Jones weiterentwickelt. Inzwischen gibt es viele weitere Entwickler wie u.a. Ezio Melotti, Berndhard Reiter, Ralf Schlatterbeck und Anatoly Techtonik. Anatoly Techtonik hat die zur Zeit letzte am 11. Januar 2016 erschienene Version 1.5.1 heraus gegeben.

Funktionsumfang[Bearbeiten]

In der Standard-Konfiguration hat Roundup folgenden Funktionsumfang:

  • eine webbasierte Oberfläche zur Bearbeitung der Vorgänge bzw. Aufgaben (engl. issues), und zur Suche nach solchen. Seit Version 1.4.21 enthält Roundup zusätzlich eine Vorlage (engl. Template) mit responsive Design auf der Basis von Bootstrap
  • ein Mail-Gateway, das es erlaubt, Vorgänge bzw. Aufgaben zu erstellen und zu bearbeiten
  • eine Datenbank-Abstraktionsschicht, die gegenwärtig u. a. PostgreSQL, MySQL und SQLite unterstützt
  • jeder Vorgang bzw. jede Aufgabe hat seine eigene Interessentenliste (nosy-Liste), die zur Benachrichtigung per E-Mail verwendet wird
  • ein auf Rollen, Klassen und Objekten basierendes Berechtigungssystem
  • einen interaktiven Kommandozeilen-Interpreter (engl. shell) zum Erstellen und Einspielen von Backups sowie zum Bearbeiten der Objekte

Der Funktionsumfang lässt sich leicht durch selbst programmierte Erweiterungen (sogenannte Detektoren; siehe unten) an neue Anforderungen anpassen.

Roundup lässt sich sowohl als eigenständiger Serverprozess betreiben als auch über mod_python oder (notfalls) als CGI-Skript mit Hilfe von z.B. dem Webserver Programm apache.

Konzepte[Bearbeiten]

Roundup ist in hohem Maße anpassbar[3]:

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 (engl. link) 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. Nur falls dieses auch fehlt, 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. Die Auditoren dienen in erster Linie dazu, vor der Ausführung einer Transaktion automatisch bestimmte Änderungen vorzunehmen. Zum Beispiel wird in der Standardkonfiguration ein Anwender (engl. user) zur Interessenten-Liste (engl. nosy list) hinzugefügt, wenn ihm ein Vorgang bzw. eine Aufgabe (engl. issue) zur Bearbeitung zugewiesen wird. Es können auch unerlaubte Änderungen zurück gewiesen und (zumindest in der Web-Oberfläche) der Anwender zur Korrektur seiner Eingaben aufgefordert werden. Die Reaktoren werden nach den Auditoren ausgeführt und dienen z.B. dazu, neue Nachrichten bzw. Kommentare in einem Vorgang automatisch per E-Mail an alle Mitglieder der jeweiligen Interessenten-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 auch komplexe Verwaltungsarbeitsabläufe (engl. 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. http://sourceforge.net/p/roundup/mailman/message/34757350/
  2. Lizenztexte von Roundup aus dem aktuellen Versionskontrollsystem
  3. http://www.roundup-tracker.org/cgi-bin/moin.cgi/CustomisationExamples

Weblinks[Bearbeiten]