Praktisch jedes Wiki verwendet Versionierung. Doch Software wie Ikiwiki und Gitit setzt auf Standardsysteme wie Subversion und Git. Das ist ganz nach dem Geschmack von technisch versierten Anwendern, und das Wiki wird sogar offline-fähig.
Der Debian-Entwickler Joey Hess arbeitet nicht gern in den Textfeldern von Webseiten. Als er nach Software für seine persönliche Homepage suchte, ließ er sich daher etwas Besonderes einfallen: Ein Wiki, das die HTML-Seiten aus einfachen Textdateien mit ein wenig Markup generiert, die sich per Texteditor bearbeiten lassen. Daher nennt er seine Software Ikiwiki auch einen “wiki compiler”.
Subversion, Git und vieles mehr
Daneben wünschte er sich Versionsverwaltung. Das gab es damals schon in Wikis, aber nicht so recht nach seinem Geschmack. Bereits 1999 hatte er mit einem CVS-Wiki experimentiert. Für Ikiwiki, das 2006 in der ersten Version erschien, wählte er Subversion, ließ aber die Möglichkeit offen, auch andere Versionskontrollsysteme anzuschließen. Heute unterstützt Ikiwiki Git am besten, daneben noch weitere Systeme wie Darcs und Bazaar, aber in unterschiedlichem Umfang.
Der Arbeitsablauf mit Ikiwiki sieht wie folgt aus: Was der Anwender auf der Weboberfläche eingibt, speichert die Software in einem Repository als einzelne Dateien, eine pro Wikiseite. Standardmäßig kommt dabei das Markdown-Format zum Einsatz. Bilder und andere ins Wiki hochgeladenen Dateien finden ebenfalls im Repository Platz, das meist “2ikiwiki.git” heißt.
Wikidaten für unterwegs
Mit “git clone” kann der Anwender nun ein eine Kopie des Repository erstellen, entweder auf dem selben Rechner oder dank Gits Netzwerkfähigkeit irgendwo anders im Internet. So lässt sich der Inhalt eines Wiki vom Webserver beispielsweise auf den Laptop packen, um auch unterwegs und offline Notizen einzupflegen. Dabei kann der Benutzer auf seinen Lieblingseditor zurückgreifen. Markdown-Unterstützung lässt sich beispielsweise in Emacs und Vi nachrüsten. Alternativ kann man auch auf dem Laptop die Weboberfläche mittels lokalem Webserver betreiben und die Daten darüber bearbeiten.
“git add” und “git commit” machen dem Repository neue Dateien und Änderungen bekannt. Mit dem Befehl “git push” landen die lokalen Änderungen in Ikiwiki, das Kommando “git pull” holt die Änderungen vom Webserver in das lokale Verzeichnis (siehe Abbildung). Andere Versionskontrollsysteme bieten ähnliche Funktionen. Commit-Logs und Diffs sind weitere Funktionen, die die Systeme von Haus aus mitbringen. Sie kommen auch online für die Versionhistorie der Seiten zum Einsatz. Nebenbei kann das Versionierungstool einfach zum Backup aller Wikidateien dienen.

Arbeitsablauf mit Ikiwiki: Die Wikiseiten lassen sich nicht nur auf dem Server “www” über die Weboberfläche bearbeiten. Per Git gelangen Sie in das Repository “meine-kopie.git” auf dem lokalen Rechner. Dort kann sie der Anwender mit einem Editor oder in einer eigenen Ikiwiki-Instanz per Web ändern. Das Kommando “git push” schickt die Änderungen an die Version auf dem Webserver, “git pull” holt Änderungen von dort auf die lokale Maschine.
Ikiwiki setzt also im Unterschied zu Software wie Mediawiki keine Datenbank voraus, dafür aber ein Versionskontrollsystem. Das in Perl umgesetzte Ikiwiki benötigt einige Perl-Module sowie für die Weboberfläche einen CGI-fähigen Server wie Apache oder Lighttpd. Für Debian und Ubuntu existieren installationsfertige Ikiwiki-Pakete. Außerdem gibt es eine Anleitung zur Installation aus dem GPL-Quelltext. Das mitgelieferte Setup-Tool hilft beim ersten Einrichten des Wiki und fragt die benötigten Angaben interaktiv ab.
Joeys Ikiwiki lässt sich mit ein paar Handgriffen auch als Blog einsetzen, was neben dem Erfinder zahlreiche Anwender tun. Sie zeigen auch, wie eine eigene CSS-Stildatei die absichtlich nüchternen XHTML-Webseiten verschönert. Daneben existiert ein umfangreicher Fundus an Plugins. Sie ermöglichen es beispielsweise, statt Markdown andere Formate wie Wikitext, reines HTML oder Textile zu verwenden. Andere Erweiterungen dienen zum Syntax-Highlighting in Code-Listings oder erstellen eine Bildergalerie.
Hochglanz in Haskell: Gitit
Auf dasselbe Prinzip wie Ikiwiki setzt das in Haskell implementierte Wiki-System Gitit. Wie der Name sagt, verwendet es Git zur Versionskontrolle, alternativ aber auch Darcs oder Mercurial. Gitit bringt mit Happstack auch gleich einen Haskell-Webserver mit.
Bereits in der Standardausstattung bietet das Wiki erfreulich viele Formate, in die es die Wikiseiten exportieren kann: Latex, Docbook, Open Document Text sowie das E-Book-Format Epub (Bilder erfordern allerdings eine Extrabehandlung). Somit bietet sich Gitit als Plattform zum kollaborativen Verfassen von Texten an, etwa Software-Handbüchern. Die Exportoptionen Slidy und S5 machen es möglich, direkt aus dem Wiki auf eine Vollbild-Präsentation umzuschalten (siehe Abbildung). Möglich macht das alles der Dokumentenkonverter Pandoc des Gitit-Urhebers und Berkeley-Professors John MacFarlane.

Gitit kennt viele Exportformate, beispielsweise S5 für Präsentationen im Browser. Nach einem einzigen Klick im Wiki kann der Vortrag schon losgehen.
Gitit macht eigentlich nur Haskell (GHC) und das Versionskontrollsystem der Wahl zur Installationsvoraussetzung. Haskells Cabal-System kümmert sich um die Installation samt Abhängigkeiten. Eine Installationsoption schaltet Syntax-Highlighting für viele Programmiersprachen ein (siehe Abbildung).

Highlighting gibt es in Gitit für viele Programmier- und Auszeichnungssprachen. Die Schemata stammen übrigens von der Kate-Gemeinde.
Ein weiterer Glanzpunkt ist die Formelunterstützung: Das Wiki wandelt die Mathe-Notation von Latex in MathML für moderne Webbrowser um. Das Dot-Plugin verwendet Graphviz, um Diagramme aus Dot-Quelltext zu erzeugen (siehe Abbildung). Im Unterschied zum kargen Ikiwiki bietet Gitit auch in der Standardinstallation eine moderne Weboberfläche mit Komfort-Funktionen, etwa einer Markdown-Hilfe in der Seitenleiste oder eine Ergebnisvorschau mit Hervorhebungen bei der Suchfunktion.
Weitere Spielarten
Daneben gibt es weitere Implementierungen des Prinzips “Markup plus Versionskontrolle”: Die Software Olelo (ehemals Gitwiki) verwendet Markdown und Git zusammen mit einer in Ruby geschriebene Wiki-Engine. Ein weiteres Open-Source-Wiki heißt Hatta und nutzt Python, Mercurial sowie ein Seitenformat, das auf Wiki Creole basiert. Eine Seite im Hatta-Wiki verweist gar noch auf weitere ähnliche Projekte in Java, Lua und PHP.

Auch weitere Wiki-Software, hier Olelo, verwenden eine Kombination aus Seiten-Markup und Versionskontrolle.
“Was für eine Verschwendung von Arbeitszeit, das alles immer wieder zu implementieren!” könnten kritische Zeitgenossen angesichts dieses Angebots einwenden. Man kann es aber auch positiv sehen: Softwareentwickler finden derzeit eine große Auswahl an Wikis vor. Sie können Markup-Format, Versionskontrolle und Wiki-Engine nach eigenen Vorlieben und Bedürfnissen kombinieren. Dabei sollten sie allerdings nicht vergessen, dass nicht alle Projekte so lange existieren werden wie Ikiwiki (seit 2006), Mediawiki (seit 2002) oder gar TWiki (seit 1998).









