MoinMoin 2.0

MoinMoin 2.0 (short: moin2) will be a big step in moin development, we are rewriting / heavily refactoring some core components of moin.

Repo: Currently there are http://hg.moinmo.in/moin/2.0-storage and http://hg.moinmo.in/moin/2.0-storage-dom-bblank/ in use.

Note: See also the Talk at the DLR (text in German, pictures in English).

The big news

Storage API, misc. storage backends

moin 1.x: the storage code was mixed into Page, PageEditor and AttachFile modules (yes, quite messy).

moin 2: storage code will be in MoinMoin.storage package and misc. storage backends will be supported, all conforming to the same "storage API":

TODO:

Mimetype items

In moin 1.x, there were 3 main types of stored objects in the wiki: pages, attachments and user profiles

In moin 2, there will be only 1 type of stored object: an "Item".

Some facts:

moin 1.9

moin 2

user_dir with user profiles

user backend having items with just metadata, no revisions

data_dir with pages and attachments

data backend having items with revisions

page

item with mimetype: text/moin-wiki (or similar)

jpeg attachment

item with mimetype: image/jpeg (and revisions!)

unrevisioned attachments

revisioned mimetype items

attachments "inherit" ACLs from page

all items may have own ACLs

TODO:

Item OO user interface

moin 1.x: pages and attachments had separate user interfaces (deleting a page worked differently than deleting an attachment, uploading an attachment worked differently than uploading page content, pages had revisions, attachments not).

moin 2: unified user interface for items:

(!) Page, PageEditor, AttachFile code modules are dead.

TODO:

Code cleanup

Lots of crappy code was deleted.

moin 1.9

moin 2

Page

Item and storage

Page*Editor

Item and storage

AttachFile

Item and storage

TODO:

DOM based transformations

moin 1.x: parse wiki markup line-by-line, create html on the fly (problems: crap html, no xhtml, crap include, crap TOC, ...)

moin 2.0: input -> converter -> DOM tree -> converter -> output

TODO:

Themeing with Jinja2 templating engine

moin 1.x: Output generation was mostly done by python code with embedded html. Some of this was within pluggable themes, some was hardcoded.

In moin 2, we currently still have the old themeing code that renders the theme header and footer. Optionally, this can be switched to Jinja2 template based theme rendering.

New parts of the code (e.g. actions) that produce "content area" output are already based on jinja2 templates.

TODO:

GUI editor update and different approach

XML serialization

Can be used to backup / restore content of all storage backends / items.

Possible usage scenarios:

TODO:

new plugin system

The old plugin system is not powerful enough and too complicated.

TBD

wiki xmlrpc

We need a better api there based on generic mimetype items.

TBD

How to help

As you see above, all this is a quite big task and we need help:

How to start:


Note: Some old content can be still seen here: here

MoinMoin: MoinMoin2.0 (last edited 2010-03-07 23:05:52 by ThomasWaldmann)