Ø«»
0 / 15

# MoinMoin

Autor: | Alexander Schremmer
Datum: | 2006-04-28ff
Ort: | Hack'em 2006, C3BI

# Wer bin ich?

- Mein Name: Alexander Schremmer, 21 Jahre
- Erster Kontakt mit Wikis im Jahr 2000
- Nutzer und Mitentwickler von MoinMoin seit 2004
- Student der Informatik an der Uni Paderborn seit WS 2005

# Überblick

- Wiki engines
- MoinMoin Highlights
- MoinMoin Architektur
- MoinMoin Ausprobieren
- MoinMoin Zukunft
- Plugin Workshop

# Was ist ein Wiki?

- Webseiten, die meist von jedem Benutzer geändert werden können
- Wichtigste Technik: Verlinken der Seiten
- Alles soll einfach und schnell gehen
- Wiki ist hawaiianisch für "Schnell"
- Erstes "WikiWikiWeb": 1995 (Ward Cunnigham: Pattern Repository/C2)

# Welche Wiki Engines gibt es?

Ungefähr die Reihenfolge der Entstehung

- Usemod (Perl)

> - Eine der ältesten
> - Wird nur noch sehr langsam weiterentwickelt

3x neu geschrieben

- Mediawiki (PHP)

> - Wurde geschrieben, weil Usemod nicht optimal für eine Enzyklopädie geeignet war
> - Runs Wikipedia

# Welche Wiki Engines gibt es?

- TWiki (Perl)

> - Von Anfang an stark auf die Belange von Firmen ausgerichtet

- MoinMoin (Python)

> - Entstanden im Jahr 2001
> - Basierte auf einem < 100 KByte Wiki (PikiPiki)
> - Ursprünglich von JürgenHermann entwickelt
> - Momentan zwei aktive Projektmitglieder

# MoinMoin Highlights

Johill erwähnen :), Packages

- Modulare Architektur mittels Plugins, mit viel Support aus der Community
- GUI-Editor (FCKEditor), dessen Ausgabe von XHTML in Wiki-Markup transformiert werden
- E-Mail-Benachrichtigung von Anfang an
- Übersetzt in mehr als 20 Sprachen (inkl. Bidi-/Unicode-Support)
- Braucht keine Datenbank und funktioniert trotzdem mit Wikis in der Größenordnung von 10000 Seiten
- Anbindung an LDAP und PHP-Anwendungen (Sessiondaten) zur Identifikation/Authentifizierung
- Zentrale Spam-Blacklist, die über XML-RPC aktualisiert wird

# Architektur

- Plugin-Typen:

> - Makros
> - Parser
> - Formatter
> - XML-RPC
> - Actions

# Makros

- Werden aus der Seite heraus aufgerufen

- Lassen z. B. das Inhaltsverzeichnis erscheinen

- Codebeispiel:

      def execute(macro, args):
          f = macro.formatter
          return (f.rawHTML("<blink>") + f.text(args) +
              f.rawHTML("</blink>")

- Auf der Seite dann `[[Blink(Ownerz0d)]]`

# Parser

- Zum Verarbeiten von Textblöcken auf Seiten

- 26. 2. um dem Wiki reStructured Text oder LaTeX beizubringen

- Beispiel:

      {{{#!irc
      17:31:16 < arigo> mwh: as the situation stands, I guess that we will go ahead and work from small examples on a reading-and-rebuilding interface for RPython frames
      17:31:20 < arigo> or LL frames
      17:31:24 < mwh> arigo: makes sense
      }}}

# Formatter

- Generieren der Ausgabe
- Normalerweise HTML
- DocBook mitgeliefert

# XML-RPC

- Verfahren, um in entfernten Wikis Daten abzufragen oder zu ändern
- Wird z. B. für das Aktualisieren der Antispam-Blacklist genutzt
- Plugin sieht ähnlich wie ein Makro aus

# Actions

- Agieren auf ganzen Seiten (löschen, umbennen, etc.)
- vergl. "Controller" im MVC-Pattern

# Moin in 60 Sekunden

- DesktopEdition

> - 26. 2. als lokales Notizbuch
> - in 60 Sekunden installiert

http://moinmoin.wikiwikiweb.de/DesktopEdition

# Zukunft

- Google's Summer of Code (wer will mitmachen? $$$)
- Wikisynchronisation
- Xapian-"Full Text Search"
- Gegenrichtung der Wiki-E-Mail-Integration: Wiki verarbeitet Mails und entpackt Attachments
- Strukturiertere Speicherung und Verarbeitung von Metadaten (RDF etc.)

# Noch Fragen?