technikum29: development-Zone

SvnWiki

The web system which combines the power of the wiki concept and svn

subsite

Auf Basis der Überlegungen zu SVNwiki auf dieser Seite wurde die Idee ausgebaut zu einem umfassenden Programm, welches SVN auch für DAUs passend macht. Zu dieser umfassenden Idee gibt es in einem Subversion-Reposity bereits umfangreiches Dokumentationsmaterial: Unter dev:projekte/subsite-www/why subsite.
Die Überlegungen zu SVNwiki, welche dann "nur" ein Modul von dem umfassenden Framework subsite ausmachen wird, gelten aber trotzdem nicht als veraltet, sondern werden selbstverständlich eingebunden.
Das SVN zur Entwicklung von subsite gibt es unter svn://technikum29.de/subsite (Zugriff per WebSVN)

Die Idee der SVNwiki soll mein Problem einer idealen Wiki für das technikum29.de-Projekt lösen. Die Vorraussetzungen, die unter anderem in meinem Artikel technikum29.de Versionszählung zusammengefasst werden, konnten mir keine verbreiteten Wikis erfüllen (vgl. WikiMatrix: Wikis mit RCS-Anbindung).

Eckpfeiler der SVNwiki

SVNwiki versteht sich als ein Frontend für SVN, welches SVN um Wiki-Fähigkeiten erweitert. Damit geht es genau den umgekehrten Weg zu vielen Wikis, die Revisionskontrollsysteme nur als eine Art der Speicherung nutzen.

Abgrenzung zu anderen Wikis

Es gibt bereits unzählige von Wiki-Implementierungen. Der Vergleich mit diesen kann vielleicht näher beleuchten, welchem Zweck SVNwiki dient:

WikiHerausragende FeaturesWarum unzureichend?
PmWiki Umfangreiche Features, enorme Anzahl an Erweiterungen, sehr gute Dokumentation und Erweiterbarkeit, Flatfiles Komischer Wikisyntax, schräge Eigenheiten (Anpassungen umständlich). Nicht für komplette HTML-Webseiten geeignet. Schlechte History. Typische geschlossene Wiki, keine andere Möglichkeit zum Bearbeiten.
MediaWiki Enorme Funktionen, bester Wikisyntax weltweit, sehr gute Bedienung, fantastische History- und Seitenverwaltung (Nur) für riesige Clustersysteme gedacht; enormer Ressourcenverbrauch (Monster-MySQL-db, precompiled PHP). Keine Exportmöglichkeiten, Wiki wird also ständig beansprucht
ikiwiki Wikicompiler, Syntaxunabhängigkeit, SVN Nicht DAU-freundlich, History u.ä. erfolgt im seperaten SVN/git-Webfrontend
ErfurtWiki Sehr flexibel, SVN-Unterstützung, Syntaxunabhängigkeit, interessantes Historykonzept Sieht auch nicht wirklich DAU-freundlich aus, SVN nur ein unwichtiges Speicherbackend

Wie man sieht, wird kein gesteigerter Wert auf typische, mittlerweile gängige Wiki-Funktionen wie Kategorien, abgefahrenen Linktechniken (CamelCase oder so ein Müll), WYSIWYG, ACLs oder ähnlichem Berechtigungskram, Benutzereinstellungen, -seiten, Blogs oder ähnlichem Schnickschnack gelegt. Auch ein besonderes Hooksystem zwecks Erweiterbarkeit ist nicht geplant – durch die Modularität und Transparenz sollte es auch so recht einfach sein, das System zu erweitern.

Bei SVNwiki stehen die Wikifunktionen nicht im Vordergrund, sondern das SVN. Ergo wird es für Außenstehende vielleicht eher den Eindruck von Mozillas Doktor erhalten. Da nicht viele Leute damit arbeiten werden, gibt es keine großen Benutzergruppen – einfach angemeldete Benutzer und das wars.

Dateitypen

Die Behandlung von Dateitypen läuft modularisiert und objektorientiert. In einem Unterverzeichnis filetypes sollen Perl-Module für unterschiedliche Dateitypen installiert sein. Jeder Dateityp definiert vier Grundeigenschaften:

  1. editor: Ein dateitypspezifisches Editiersystem (z.B. eine Seite mit textarea oder ein Uploadformular)
  2. wikiviewer: Ein dateitypspezifisches Betrachtungssystem im Wikisystem
  3. exporter: Ein dateitypspezifisches Betrachtungssystem außerhalb des Wikisystems (also im Bereich, den der Besucher letztlich hauptsächlich sieht)
  4. actions: Dateitypspezifisch mögliche Aktionen zum Behandeln der Datei, die im Wikisystem angezeigt werden (z.B. history, edit, move, upload, ...)

Exemplarische Dateitypen mit ihren Eigenschaften
Legende: - nicht vorhanden, " vererbt von Vaterklasse (d.h. identische Eigenschaft)
generic.pm
(abstract)
text.pm
extends generic
markup.pm
extends text
binary.pm
extends generic
image.pm
extends binary
editor - Seitenbearbeitung (textarea, Zusammenfassungszeile, ...) " (ggf. mit Syntaxhighlighting) Bearbeitung der bin-desc-Seite "
exporter raw binary " (=Text, plain, ohne irgendwas) Syntax interpretiert (Ausgabe als HTML), in einem spezifischen Templatesystem " "
viewer - Text im Wikitemplate ", bei HTML o.ä. ggf. "nested" oder im Frameset Die bin-desc-Seite, die die bin-history und Metadaten anzeigt (Mediawiki-ähnlich) Einbindung des Bildes als , Exif-Metadaten anzeigen
actions history, move, delete " + edit " " + edit + upload "

Zusatzaktionen, Erweiterbarkeit

In den vier dateispezifischen Grundeigenschaften wurden auch Aktionen genannt, was mit Dateien gemacht werden kann. Diese lassen sich beispielsweise erweitern um Aktionen wie new, what-links-here, usw. Möglicherweise könnte man dazu ein Spezialseiten anlegen, die durch Module bereitgestellt werden (ähnlich dem sehr flexibelen System, wie es Mediawiki macht).