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: http://hg.moinmo.in/moin/2.0-dev

Minefield: http://test.moinmo.in:8080/

See also:

The big news

Storage API

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".

Storage Layers, Middlewares, Backends

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

unrevisioned attachments

revisioned mimetype items

attachments have no metadata

mimetype items with arbitrary metadata

attachments "inherit" ACLs from page

all items may have own ACLs (in their own metadata)

Metadata

As seen above, moin2 does much more with (own) metadata and even enables storage of user-defined metadata.

To speed up processing, metadata of items and revisions will be indexed (using sqlalchemy).

Index can be used for:

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, still some left.

Tree based transformations

(See /Converters for more information)

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

moin 2.0: reverse direction (e.g. for GUI editor)

Features:

TODO:

GUI editor update and different approach

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.

moin 2.0: use Jinja2 templating engine for theme and user interface.

(!) some of the stuff has been worked on in GoogleSoc2010.

HTML / CSS / Images / ...

TODO:

XML serialization

Revisions, items, backends can be serialized / unserialized to XML.

Applications:

TODO:

New plugin system

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

Just rough ideas, nothing final:

Framework / Libs / Python

Already done:

Just rough ideas, not final yet:

How to help

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

How to start:

Release date

As moin2 is still in heavy development, we can't give any release date yet.

"Not this year, maybe next year." is maybe not totally unrealistic.

But we can give some criteria that help you to choose:

choose moin2 if ...

choose moin 1.9 if ...


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

MoinMoin: MoinMoin2.0 (last edited 2010-09-01 14:03:05 by ThomasWaldmann)