Projekte fest im Griff mit Trac

Trac vereinigt Wiki, Bugtracker und Repository Browser zu einem praktischen Werkzeug, mit dem sich Projekte einfach verwalten lassen.

Artikel erschienen in Swiss IT Magazine 2007/19

     

Werkzeuge wie Bugtracker, Wiki und Versionskontrolle sind nicht nur bei der Software-Entwicklung selbstverständlich, sondern bieten sich beispielsweise auch für die Entwicklung von Webseiten, Dokumentationen oder anderweitigen Dokumenten an. Dabei zählt eine einfache und effektive Bedienung genauso wie eine starke Integration der verschiedenen Werkzeuge.

Denn Bugs lassen sich zum Beispiel viel einfacher nachverfolgen, wenn sie direkt mit den Changesets der Versionskontrolle und damit den Modifikationen am aktuellen Projekt verbinden lassen. Eine sehr populäre Software in dieser Hinsicht ist die Webapplikation Trac der schwedischen Edgewall Software, die ihren Einsatz nicht nur bei kleinen Entwickler-Teams, sondern auch in grossen Open-Source-Projekten wie dem Python-Framework Django findet.


Einfache Software

Trac (trac.edgewall.org), das im Moment in Version 0.10 unter der BSD-Lizenz bereitsteht, ist eine verhältnismässig einfache Webapplikation, deren Fokus weniger auf einem erschöpfenden Funktionsumfang als einer sinnvollen Mischung aus Features und einfacher Bedienung liegt.

Dies bedeutet, dass die verschiedenen Komponenten nicht immer an den Funk­tionsumfang von etablierten Einzellösungen herankommen und vor allem auf spezielle oder komplexere Funktionen wie Workflow-Mechanismen verzichten, in der Regel aber die Alltagsanforderungen abdecken. Die vier Hauptkomponenten von Trac sind ein Wiki, ein Repository Browser, ein Bugtracker sowie die Timeline.


Das Wiki

Das Wiki von Trac ermöglicht die Erstellung einer beliebigen Anzahl Seiten, die beispielsweise zur Erfassung von Ideen oder zur Dokumentation genutzt werden können. Zur Gliederung der Texte steht eine Markup-Sprache zur Verfügung, welche von der Wiki-Software MoinMoin abgeleitet ist. Mit dieser lassen sich auf einfache Weise Titel auszeichnen, Text einfetten oder Bilder einbinden. Wer möchte, kann auch HTML oder die vor allem in Weblog-Software häufig zum Einsatz kommende Markup-Sprache Textile nutzen.


Die Verlinkung erfolgt wie bei anderer Wiki-Software über die spezielle Schreibweise von Wörtern (CamelCase) oder speziellen Anweisungen wie changeset:123 oder ticket:456, mit denen sich Changesets der Versionskontrolle (in diesem Fall Revision 123) respektive Tickets aus dem Bug­tracker (in diesem Fall Ticket 456) gezielt ansprechen lassen. Besonders interessant ist dabei, dass die Nutzung der Markup-Sprache und der Links nicht nur auf den Wiki-Seiten, sondern auch in Commit Messages für das Versionskontrollsystem oder in Tickets möglich ist. Trac interpretiert die Texte wie im Wiki und erstellt auch entsprechend die Links zwischen den einzelnen Trac-Komponenten.



Die Wiki-Seiten werden versioniert abgelegt, sodass sich die Änderungen an den Inhalten nachverfolgen lassen. Die Speicherung erfolgt dabei unabhängig von der Versionskontrolle, welche über den Repository Browser zugänglich ist, in der jeweiligen Datenbank, die Trac zur Datenspeicherung verwendet.


Wer mag, kann zudem parallel zu den Wiki-Seiten Dateien wie PDFs oder Bilder als Attachments abspeichern.


Der Repository Browser

Der Repository Browser dient dazu, über den Webbrowser lesenden Zugriff auf die Versionskontrolle zu erhalten. So lässt sich nicht nur der aktuelle Zustand des Projekts inklusive aller Dateien einsehen. Es kann auch die History des gesamten Projekts, einzelner Verzeichnisse oder sogar einer bestimmten Datei inklusive Commit-Nachrichten betrachtet werden, wobei ein Differ die Unterschiede zwischen verschiedenen Revisionen darstellt. Mit Hilfe von Drittsoftware wie SilverCity oder Enscript (in naher Zukunft auch pygments) stellt Trac Syntax-Highlighting für das Repository (und auch Code im Wiki) bereit.


Der Repository Browser ist in der Lage, seine Inhalte auch als RSS-Feed zu exportieren, was es den Anwendern erlaubt, ein Monitoring über einen RSS-Reader zu realisieren. So kann man sich unter Umständen das Versenden von Commit Mails ersparen, welche bestimmte Personen oder Gruppen über Änderungen am Projekt informieren. Unterstützung für weitere Funktionen wie Blame zum Inspizieren der Repositories ist geplant.



Standardmässig unterstützt Trac Subversion und seine Eigenheiten wie Properties. Andere Versionskontrollsysteme wie die freien Bazaar, Darcs und Git sowie das geschlossene Perforce lassen sich über Plug-ins integrieren. Für Mercurial braucht es vorerst noch einen Patch, welcher mit der Überarbeitung des Versionskontrollsubsystems allerdings obsolet werden soll. Wer bei Trac vor allem das Wiki oder den Bug­tracker ohne eine Versionskontrolle nutzen will, kann sie weglassen.


Der Bugtracker

Der Bugtracker dient zur Erfassung von Bugs, Feature Requests oder anderen Tätigkeiten. Ein Ticket besteht aus Titel und Beschreibung und lässt sich unter anderem bestimmten, frei definierbaren Komponenten, Versionsständen, Meilensteinen oder Entwicklern mit einer frei wählbaren Priorität und Status zuweisen. Weitere Felder können bei Bedarf hinzugefügt werden, genauso wie Attachments.

Die Tickets lassen sich Kommentieren, wobei jede Änderung in einer History festgehalten wird. Mit Hilfe von Reports lassen sich Tickets anhand ihrer Eigenschaften abfragen, eingrenzen und als RSS-Feed exportieren. Trac selber nutzt die Tickets auch zur Erstellung einer Roadmap.

So können Tickets einem Milestone zugewiesen werden, und man kann jeweils beobachten, wieviele Tickets zu einem Milestone bereits bearbeitet wurden respektive noch ihrer Abarbeitung harren. Mit dem Fehlen eines Workflow-Moduls und einiger anderer Möglichkeiten ist der Bugtracker allerdings relativ weit von Standalone-Lösungen wie beispielsweise Bugzilla entfernt.


Die Timeline

Die Timeline ist weniger eine eigene Komponente, da sie die wichtigsten Ereignisse aus allen anderen Komponenten zusammenfasst. So listet sie nach Datum Changesets der Versionskontrolle, Bearbeitungen des Wiki oder Änderungen an den Tickets. Wie beim Bugtracker oder beim Repository Browser lassen sich die jeweiligen Inhalte als RSS-Feed exportieren, was es den Anwendern einfach macht, bezüglich der jeweiligen Projekte auf dem Laufenden zu bleiben.


Verwaltung

Trac ist in Python geschrieben und lässt sich mit so ziemlich jedem Webserver betreiben, der CGI-Scripte ausführen kann. Es dürfte sich aber anbieten, für eine bessere Performance auf Apache mit mod_python oder einen anderen FastCGI- oder WSGI-fähigen Webserver zu setzen. Trac selber bringt mit tracd einen eigenen Server mit, der aber über einen beschränkten Funktionsumfang verfügt.

So kann er beispielsweise kein SSL. Zur Installation benötigt man nebst einem Python in der Version 2.3 oder höher die passenden Python-Schnittstellen zum gewünschten Datenbank-System (MySQL, PostgreSQL oder SQLite) sowie der verwendeten Versionskontrolle. Bis zur Version 0.10 braucht man zudem die Template Engine ClearSilver sowie Werkzeuge zum Syntax-Highlighting. Mit der geplanten Einführung von Genshi als Template Engine und pygments zum Syntax-Highlighting entfallen letztere Voraussetzungen allerdings, wodurch die Installation einfacher werden dürfte.



Die Verwaltung von Trac erfolgt über das Kommandozeilen-Werkzeug trac-admin, mit dem sich die Projekte initialisieren (es werden mehrere parallel unterstützt) und bearbeiten lassen. So können beispielsweise Rechte vergeben oder Milestones gesetzt werden. Zur Erledigung häufiger Aufgaben wie dem Erstellen von Milestones oder Versionsnummern kann man auch das als Plug-in zur Verfügung stehende WebAdmin verwenden, mit dem diese Tätigkeiten übers Web erledigt werden können.


Erweiterungen en masse

Auch wenn Trac selber fleissig weiterentwickelt wird und immer wieder neue Funktionen erhält, konzentrieren sich diese vor allem aufs Backend. So wird seit den Anfängen von Trac vor allem an der Anzahl der unterstützten Datenbanken und Versionskontrollsysteme gearbeitet. Weitere Fortschritte sind hier mit der Einführung von SQLAlchemy und dem neuen Subsystem für Versionskontrollen zu erwarten. Dazu kommt die Ablösung von ClearSilver zugunsten von Genshi.


Wem dagegen die Weiterentwicklung nicht schnell genug geht oder wer spezielle Funktionalität benötigt, kann Trac selber erweitern – entweder durch Wiki-Makros oder Plug-ins. Mit Wiki-Makros lässt sich auf einfache Weise die Wiki-Syntax um eigene Funktionalität erweitern. Es können beispielsweise Textformatierungen ergänzt oder kleine Zusatzfunktionen wie Polls oder Inhaltsverzeichnisse eingebunden werden. Die Trac-Webseite hält mit dem MacroBazaar eine Auswahl an fixfertigen Makros bereit.



Umfangreichere Erweiterungen lassen sich mit Plug-ins realisieren, zu deren Erstellung meist ein erfahrener Python-Programmierer nötig sein dürfte. Was mit Plug-ins möglich ist, zeigt die Liste der vorhandenen Plug-ins auf der Trac-Webseite. So stehen nebst den Plug-ins für die verschiedenen Versionskontrollsysteme beispielsweise Erweiterungen für die Einbindung von Lösungen zur Continuos Integration wie Bitten, CruiseControl oder Apache Maven zur Verfügung. Ebenso können über die bereitstehenden Erweiterungen Gantt Charts oder ein User Management via LDAP realisiert werden. Weitere Plug-ins hält die Webseite www.trac-hacks.org bereit.




Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Was für Schuhe trug der gestiefelte Kater?
GOLD SPONSOREN
SPONSOREN & PARTNER