Grund Idee

Problemanalyse

Schlussfolgerung

Der einzige Ausweg aus dem derzeitigen Wiki-Dschungel ist ein eigenes Wiki-Protokoll.

Am besten auf Basis von XML. Mit meheren Versionen mit unterschiedlichen Umfang von Funktionalität. Die Implementierung eines Wikis allein kann keine Kompatibilität schaffen. Die Datensicherheit / Konsistenz / Kompatibilität kann nur durch eine definierte Syntax & Verhalten gewährleiste werden. Parallelen sind bei SQL zu sehen. SQL sichert nicht nur, dass Klienten ein garantierte Syntax erwarten können und somit kompatibel zu allen DBs sind, die korrektes SQL beherrschen. Es garantiert (bzw. sollte...) außerdem, dass Datensätze mit Dump unabhängig von der internen Speicherung auf alle SQL-DB verschoben werben können, oder innerhalb der Versionen einer DB sicher gehandhabt werden können.

Gäbe es ein Wiki-Protokoll mit Dump-Funktion, kann es mir egal sein, welches Wiki und welche Version ich benutze, solange alle beteiligten Wikis eine Wiki-Dump unterstützen.

Das Wiki-Protokoll soll außerdem eine gemeinsame Darstellung (z.B. XML-Format) für Wiki-Dokumente beinhalten. So brauchen PDF-Export, HTML-Ausgabe, etc. nicht mehr für jede Wikisprache extra neu geschrieben werden.

Außerdem hätte der Benutzer dann die freie Wahl, welche Wiki-Syntax er verwenden möchte, bzw. ob er einen WYSIWYG-Editor will.

Dinge wie das Wechseln des Wikis oder das Transportieren von Seiten zwischen verschiedenen Wikis wären ohne ein gemeinsames Wiki-Format kaum denkbar.

Überlegung zur Anforderung

Generell

"Wiki-DNS" bzw. "Wiki-ANS"

> Wie gut ist Wikipedia dabei, Hyperlinks auf andere Artikel upzudaten? > (wenn der Artikel von Alkohol nach Aethanol wandert.. was passiert mit dem > Link auf Alkohol im Artikel Suchtproblem?)

Klappt bei Wikipedia nicht. Man könnte sowas wie ein Wiki-DNS machen. Jeder Artikel bekommt eine ID wie eine IP. Wenn du ein Wort verlinken willst, müsstest du über den Wiki-DNS die Artikel-ID abfragen. Das hätte eine Reihe von positiven Neben Effekten!! Einige Artikel-Namen sind technisch nicht möglich bei Wikipedia. So z.B. 'C#'. Mit einem Wiki-DNS währe man technisch nicht mehr beschränkt in der Namensgebung.

Ping

Klint

</hallo>

Server

<okay>[ortszeit]</okay>

Sessions

Nicht bei einfachen <get>-Anfragen.

MD5-Autentifizierung

Klint

</md5_get_phrase>

Server

<md5_phrase>belangloser_string</md5_phrase>

Klint

<md5>3ab4b9bbafd6c8757d35e202fe5eeaf4<md5>

Server bei Erfolg

</login-success>

Server bei Misserfolg

<error>[fehlernummer]</error>

Verschlüsselung

Soll VPN erledigen, sag ich mal

Komprimierung

Fehler-Codes

Server

001

unbestimmter Fehler

002

Login abgelehnt

003

Kein Login, Acount nicht vorhanden

004

Kein Login, Passwort falsch

005

Kein Service für Anfragen von dieser IP

006

Protokoll Fehler

007

Syntax Fehler

008

keine Berächtigung

101

commit zu groß, abgebrochen

102

Ende nach Time-Out

Abfragen von Konsumer ohne Account

Klient

Artikel-ID abfrage

<get_article_id>artikel_name</get_article_id>

Artikel abruf

<get_article>[artikel-id]</get_article>

Nach Artikel/Diskusionen/Usern suchen

<search namespace='diskusionen'>string</search>

Für oder bei Suche

<or>kann_vorkommen</or>

Für und bei Suche

<and>muss_vorkommen</and>

./BeispielSearch ./SearchDTD

letzte änderungen abfragen

</recent_changes>

Artikel-Diskusion abrufen

<get_discussion>[weiter merkmale]</get_discussion>

...Von welchen Artikel

<article_id>[artikel-id]</article_id>

...von...bis...

<start>[datum]</start><end>[datum]</end>

...zu einen bestimmten Thema

<thread>betrift string</thread>

./Beispiel_get_discussion ./get_discussionDTD

Für Diff ist der Klient zuständig. Er holt zwei Versionen vom Server und muss selber Anaysieren.

Datenveränderungs-Zugriffe

Klient

Änderungen hochladen

<commit>[weiter element]</commit>

Kommentar zu Änderung

<changelog>fehler behoben</changelog>

Wiki-Artikel

<doc article_id="ID:734873">mehr oder weniger text</doc>

/BeispelCommit /CommitDTD

Wiki-Diskusion

<discussion article_id="ID:734873">[weiter Elemente]</discussion>

betreff

<thread>betrift string</thread>

Bezugs-Beitrag (optional)

<contribution_id>betrift string</contribution_id>

/Beispel_discussion /discussionDTD

Daten-Satz(-Backup) Export bzw. Dump-Funktion

Client

<get_dump max_part_site='1024'>[was]</get_dump>

Obtionen von get_dump

article/history/discussion/all

Sonstige Funktionalitätrn

Formatierungs-Elemente

Dokumenten-Elemente

Kapitel

<chapter title='Beispiel-Überschrift'>text</chapter>

Absatz

<paragraph>test</paragraph>

Externe Formate

<content mimetype="application/latex">\LaTeX</content>

/Beispiel 1 /docDTD

Referenzimplementierung

Ich währe gewillt, eine Server-Referenzimplementierung in C# auf zu setzen. OlafRadicke

Diskusion

Hier mal ein Beispiel um sich dem Thema zu nähern mit kommentar: /Beispiel 1.

LugBerlin/Projekte/WikiXML (zuletzt geändert am 2007-12-23 22:48:34 durch localhost)