Jul 04 2015
Gitit – Ein verteiltes Wiki
Vermaschte, autonome Knoten ermöglichen beliebige Verbindungen zwischen allen Beteiligten. Dieses revolutionäre Konzept einer verteilten Kommunikations-Infrastruktur ist der spirituelle Kern des Internet. (S. zB Internet-Archäologie.) Das WWW mit seinen Hyperlinks und verteilter Server-Infrastruktur war die Umsetzung dieses Konzepts auf der Ebene der Inhalte.
Die Freifunk-Initiative ist ein Beitrag zur Umsetzung dieses Konzepts im Sozialen, indem die Infrastrukturen und Inhalte in den Händen derer liegen, die sie schaffen und nutzen – Individuen und ihre communities. Freifunk auf die Routerinfrastruktur zu beschränken wäre eine Amputation des Konzepts – und Freifunk nur ein weiterer Zubringer zu Faxebook & Co.
Um den frommen Worten gute Taten folgen zu lassen, haben wir eine verteilte Wiki-Farm implementiert. Diese ist Teil des Freifunk-Netzes und dank der IPv6-Adressen des Freifunk Rheinland auch global erreichbar. Eine erste praktische Nutzung dieser Infrastruktur ist die Dokumentation der dortmunder Freifunk-Aktivitäten und -Erkenntnisse im ffdo-Wiki.
Konkrete Motivationen
Seit die Dortmunder Freifunk Community entstand, war die Lage in Sachen Doku über den hiesigen Freifunk suboptimal. Da lohnt ein (community-)eigenes Wiki schon deshalb, um die wirklich nützlichen und wahrhaftigen Infos aus dem FF-Info-Dschungel zusammenzutragen bzw. konzentriert zu verlinken. Ein spiritueller Kern des Freifunk ist das Meshing der einzelnen Freifunk-Knoten. So lag es nahe für das ffdo-Wiki Gitit zu einzusetzen. Das Wiki, seine Seiten und hochgeladene Dateien werden in einer Versionsverwaltung gespeichert. Damit kann das Wiki verteilt auf mehreren Servern laufen.
Ein weiterer Grund sich näher mit Gitit zu beschäftigen ist unser (noch unveröffentlichtes) DocBook-Projekt. Hochwertige (OpenSource-)Dokumentation wird oft in DocBook geschrieben. Es fehlte bisher jedoch unter anderem ein freier und DAU-kompatibler XML-Editor dafür. Gitit kann DocBook als source- und als export-Format verarbeiten. Texte können im Gitit-Wiki zB einfach in Markdown geschrieben werden. Per Export nach DocBook kann so ein Beitrag zB für ein hochwertiges Handbuch erzeugt werden.
Gitit Features
- Gitit ist ein in Haskell geschriebenes Wiki. Es benutzt Happstack als Webserver und Pandoc für die Formatumwandlungen.
- Dezentralität schon eingebaut
Die Wiki-Dateien werden direkt in einer Versionsverwaltung gespeichert (git, darcs und oder mercurial). Wer eine Wiki-Instanz betreiben möchte, kann ein Wiki per Versionverwaltung einfach klonen. - Verteilung schon eingebaut
Diese Versionsverwaltungen sind vom Typ DVCS, also auch für echten verteilten Einsatz geeignet – ohne (De-)Zentrale. - Einfach zu benutzen
übersichtliche Weboberfläche für Einsteiger
kann aber auch per Kommandozeile bearbeitet werden
Entwickler mit Allergie gegen Webformulare können auf die gewohnte Art ihre Dokumente direkt committen. - Viele Formate möglich
jede*r kann im eigenen Lieblingsformat schreiben (markdown, rst, latex, html, docbook, …)
Exportformate gibt es noch deutlich mehr: pdf, Latex, Docbook, Open Document, Text, Epub, …
Mit Slidy und S5 kann aus dem Wiki direkt auf eine Vollbild-Präsentation umgeschaltet werden. - Geringer CPU-Verbrauch
dank Haskell
der (nach Mathe aussehende;) Quellcode dieser funktionalen Programmiersprache kann (dank Mathe;) zu effizientem Maschinencode kompiliert werden.
keine script-Interpretiererei: läuft auch auf Hardware aus dem vorigen Jahrtausend.
Umsetzung
Erste Testinstallation eines Gitit (mesh-j-1.free.de)
- mit darcs als Versionierungssystem – weil darcs wie gitit auch in Haskell geschrieben ist
- auf einem Alix-Board mit FreeBSD als Betriebssystem
- Gitit ist als privates Wiki auf dem eigenen Rechner schnell installiert. Um es aber für den Webeinsatz brauchbar zu machen sind noch einige Extras erforderlich (Apache, Firewall, Mail, …)
- ausführlicher: http://url.free.de/gitit/HOWTO/GititFarmFreeBSD
Zwei weitere Installationen (mesh-j-2 und mesh-j-3)
- ebenfalls mit darcs
(darcs repository klonen siehe: http://url.free.de/gitit/HOWTO/darcs-wiki-klonen) - jeweils in einem FreeBSD-jail (welche beide auf einer APU laufen)
- erforderlich war die Entwicklung einer Mechanik damit sich die Instanzen automatisch synchronisieren (darcs pull per https, cron)
Eine weitere Installation (wiki.ffdo.de)
- mit git – weil viele git sowieso kennen (Wunsch aus der Dorfmunder Community)
- auf dem map-Server (map.do.freifunk.ruhr) mit Linux-Betriebssystem
- erforderlich war dazu noch die Verknotung von darcs und git, so dass eine automatische Synchronisation auch zwischen dieser Instanz und den darcs-Instanzen erfolgt
- ausführlicher: http://url.free.de/gitit/HOWTO/gitit-mit-git-und-oder-darcs
Und es tauchten noch viele weitere Fragen auf:
- Schreibrechte
- Zertifikate
- Klonen von Templates, Benutzerdaten etc.
- http und oder https
- URL(s)
ausführlicher http://url.free.de/gitit/HOWTO/wiki-klonen
Vieles davon kann jede Wiki-Betreiberin für sich entscheiden. Aber für die URL(s) musste noch eine Lösung gefunden werden.
Sammel-URL
Dadurch, dass ein Wiki verteilt ist, sind seine Inhalte unter verschiedenen URLs verfügbar – eine URL pro Instanz des Wikis. Wie kann so eine Seite verlinkt werden? Welche URL nehme ich? Jede Instanz zu verlinken kann es auch nicht sein.
Lösung: Eine einheitliche Einstiegs-URL für ein Wiki. Dort ist ein Verteiler der auf eine der Wiki-Instanzen weiterleitet.
Diese Lösung kann auch für andere verteilte Web-Dienste verwendet werden!
Kommentare deaktiviert für Gitit – Ein verteiltes Wiki