Die Idee für Arbit ist vor vier Jahren entstanden. Ziel: Ein in sauberem, getestetem PHP geschriebener, multiprojektfähiger, modularer Issue Tracker sollte her, der nach Belieben um Features wie Wikis, Source Listings, Continuous Integration und Ähnliches erweitert werden kann. Das Ergebnis wird in diesem Artikel vorgestellt.
Als ich für meine Open-Source-Projekte keinen sinnvollen Issue Tracker finden konnte, weil die damaligen Lösungen für meine Zwecke entweder nicht erweiterbar oder schlicht unbenutzbar waren, setzten wir uns in der PHP UserGroup Dortmund zusammen und die ersten Ideen für Arbit erblickten das Licht der Welt. Diese ersten Ideen und Dokumente zu Arbit lassen sich immer noch im Wiki [1] finden und fassen die Intention, unter der Arbit entwickelt wurde, und immer noch wird, gut zusammen. Arbit liegt im Moment in einem Alpharelease vor. Im aktuellen Trunk sind allerdings mittlerweile alle ursprünglich geplanten Features implementiert, sodass Beta- und Stable-Releases bevorstehen. Arbit verlangt PHP 5.3 und funktioniert aktuell mit CouchDB als Datenbank. Ein MySQL Backend ist in Arbeit, allerdings funktioniert es noch nicht für alle Module. Weitere Abhängigkeiten sind nicht gegeben. Ziel ist es, dass Arbit auch auf Shared-Hosting-Systemen ohne Probleme läuft.
Es gibt viele verschiedene Annahmen, was Module innerhalb einer Applikation sein können. Innerhalb von Arbit bezeichnen Module die Funktionalitäten, die für das Tracking eines Projekts zur Verfügung stehen. Eines der entscheidenden Module ist zum Beispiel das Issue-Tracking-Modul. Da jedes dieser Features als Modul umgesetzt wird, bleibt es dem Benutzer überlassen, welche Features er für sein Projekt einsetzen will. Insbesondere lassen sich auch ohne allzu großen Aufwand eigene Module implementieren. Aktuell sind folgende Module verfügbar:
Issue Tracker: Konfigurierbarer Issue Tracker mit Versionierung, Suchen, Filtern und Roadmap.
Wiki: Versioniertes Projekt-Wiki. Nutzt zurzeit REST als Dokumentenformat, weitere Formate werden in näherer Zukunft unterstützt.
Source: Das Source-Modul kann den Projektquellcode aus SVN, GIT, Bazaar, Mercurial oder CVS Repositories anzeigen und andere Module über Updates informieren.
PHPDoc: Zeigt per PHPDocumentor generierte API-Dokumentation der im Source-Modul verwalteten Software an.
PDepend Metrics: Übersicht über die mit PDepend ermittelten Sourcecode-Metriken. Werden zusätzlich direkt am Sourcecode annotiert.
Notification: Erlaubt das Verschicken von Events im System (Neue Issue, Commit etc.) per E-Mail. Geplant sind auch andere Kommunikationsmechanismen wie Jabber.
Build und Continuous Integration: Diese beiden Module machen Arbit zu einem Continuous-Integration-System. Das Build-Modul baut beliebige Projekte in beliebigen Sprachen, und die Ergebnisse werden im Continuous-Integration-Modul zur Präsentation aufbereitet.
Der Kern von Arbit übernimmt dagegen nur Basisaufgaben, wie das Routen der Requests, Benutzerverwaltung, Authentifizierung und das Verwalten der Projekte selbst. Arbit verwendet dabei Komponenten aus Apache Zeta Components, Symfony und Zend Framework. Einige besonders gut wiederverwendbare Teilprojekte von Arbit sind in eigene Komponenten ausgelagert worden, sodass sie auch von anderen verwendet werden können und mittlerweile auch werden.
Primär sind alle Module natürlich eigenständige Elemente in der Applikation – der Issue Tracker funktioniert auch ohne irgendwelche anderen Module. Allerdings...