Contents
- MoinMoin!
- Release 2.0 (2010/2011?)
- 2.0: Storage API Items
- 2.0: Storage API Items
- 2.0: Item OO-UI
- 2.0: Storage API Backends
- 2.0: Storage API Layers
- 2.0: Storage Middleware: ACLs
- 2.0: Storage Middleware: Router
- 2.0: XML-Serialisierung
- 2.0 TODO
- 2.0 TODO: Jinja2-Theme
- 2.0 TODO: Merge DOM-Repo
- 2.0 TODO: Merge Realtime-Editor
- 2.0 TODO: neues Plugin-System
- 2.0 ToDo indizierung und Suche von meta Daten
- Links
- Fragen?
MoinMoin!
Software-Entwicklung beim MoinMoin-Projekt1
Technologie-Ausblick MoinMoin 2.0
Vortragender:
- Reimar Bauer, Thomas Waldmann
Release 2.0 (2010/2011?)
- viele Code-Teile neu geschrieben
- einfacher
- mächtiger
- derzeit: Großbaustelle!
- API: inkompatible Änderungen am Core-Code
Python >= 2.5
2.0: Storage API Items
- Item (1.x: Page oder Attachment):
- kann Meta-Daten haben
- kann Revisionen haben
- Revision:
- hat Meta-Daten (mimetype, ACLs, history, ...)
- hat Daten
- Meta-Daten: dict-like, beliebige Strings als key/value-Paare
- Daten: file-like, binary
2.0: Storage API Items
2.0: Item OO-UI
- UI / Rendering passt sich dem mimetype des Items an
- Hierarchie von UI-Klassen, möglichst viel wird in den allgemeinen Klassen implementiert:
- z.B. funktioniert delete,rename,history,revert,download,upload genauso für Binary items wie für Text items
oder verkleinern/drehen/spiegeln tut für mehrere TransformableImage Unterklassen (gif,png,jpg)
- ebenso wird der Text-Editor für alles text/* benutzt
- show oder diff für Text ist aber anders als für Image
2.0: Storage API Backends
- Backend:
- speichert eine Menge von Items
- Auflisten von Items
- Zugriff auf Items
- globale History
- Middleware:
- wie Backend, speichert aber nichts selbst
2.0: Storage API Layers
2.0: Storage Middleware: ACLs
- erhöht Sicherheit (ACL-Checks nicht mehr manuell, sondern automatisch)
- 2.0 ACL-Capabilities: read,write,admin,create,destroy
- create: Erzeugen eines noch nicht existierenden Items
- destroy: Vernichten von kompletten Items oder Item-Revisionen
- 1.x revert wurde abgeschafft (write)
- 1.x delete wurde abgeschafft ("rename nach trash")
- rename capability check == src:read,write dst:create,write
2.0: Storage Middleware: Router
- ähnlich mount/fstab
- normale Inhalte unter /
- Userprofile unter /UserProfiles/
- Mülleimer unter /Trash/
- denkbar: /Talk/, /User/, ...
- i.d.R. ist das jeweils ein Storage-Backend, das von einem passenden Satz ACLs geschützt wird
- create_simple_mapping() als Helfer
2.0: XML-Serialisierung
- sax-basierte OO-Implementierung, auch von unserialize
- serialize(xmlfile, obj)
- unserialize(xmlfile, obj)
- obj: backend, item, revision, ...
- Anwendungen:
- backup/restore
- item packages (TODO)
- wikisync (TODO)
2.0 TODO
- Vorsicht Baustelle:
- derzeit nur für Entwickler / Geeks geeignet
- wir suchen Python-Entwickler, die uns helfen!
- diverse große Änderungen fehlen noch komplett, sollten aber für 2.0 gemacht werden
- vieles tut nicht mehr wegen den großen Änderungen am Core
- vieles braucht aus prinzipiellen Gründen nen Rewrite
- das, was schon tut, muss mehr getestet werden
2.0 TODO: Jinja2-Theme
gsoc Thema
Derzeit wird noch "modernized" (alter Theme-Code) verwendet.
Aber: die Inhalte ("content" div) werden teilweise schon mit Jinja2 generiert.
TODO: Rewrite des alten Theme-Codes für Jinja2.
- Füttern der richtigen Daten in die Template-Engine
- Templates erstellen
- Restrukturieren/rewrite CSS
- Restrukturieren Images
2.0 TODO: Merge DOM-Repo
gsoc Thema DOM-Converter ersetzt Parser/Formatter:
text/moin-wiki -> domtree
domtree -> html
TODO: reST, Docbook, Pygments -> domtree
TODO: (GUI-Editor-)html -> domtree
TODO: domtree -> moin wiki markup
Vorteile:
- sauberer HTML-Output
- besseres Include/TOC
2.0 TODO: Merge Realtime-Editor
Paralleles Editieren mit Synchronisation in nahezu Echtzeit.
- basiert auf mobwrite
- Server-Komponente integriert in moin
TODO:
- praktische Tests
- Usability?
2.0 TODO: neues Plugin-System
gsoc Thema Neues Plugin-System entwerfen und implementieren:
- konfigurierbare Liste von Plugin-Directories
- 1 Subdirectory pro Erweiterung
- Code
- Templates, HTML, CSS, JS, Images, ...
- Erweiterungen registrieren sich selbst
- Folge: alle Plugins anpassen
2.0 ToDo indizierung und Suche von meta Daten
gsoc Thema
- v item metadata indexing (requires: good SQLalchemy or other DB/kvstore skills)
- item metadata/data search (with/without xapian)
- SQLalchemy backend - improve its performance and resource usage, more testing (requires: good SQLalchemy skills)
- allow plugins to add metadat
Links
http://moinmo.in/MoinMoinTalks/DLR-2009-09-08 viel ausführlicher
Fragen?