MoinMoin is extensible and modular system. You can replace almost any part of the system by installing a plugin. It is the best system for a typical wiki hosted on your server, if you like to extend and customize the system, and you happen to like Python.

A wiki page can use any markup supported by the system parsers. MoinMoin comes with its own markup, rst, plain text and docbook parsers. Parsers for other markups created by the community are in http://moinmoin.wikiwikiweb.de/ParserMarket. You add your own parser that know how to parse the text and how to drive the formatter, which create the html. Parsers are also used for syntax highlighting. Moin comes with cplusplus, CSV, irc, java, pascal and python.

Formatter can create any output you like - the default create html, and the system provides other formatters for xml, docbook and plain text. You can add your own formatter if needed. Any page can be formatted in any exiting format, for example http://moinmoin.wikiwikiweb.de/?action=format&mimetype=t....

To create custom applications, you usually add both action and macro plugins. Macro is a plugin that execute when a page is rendered and return output. Action is a plugin that handle request to urls like /wiki/pagename?action=foo. Most of MoinMoin UI is implemented in terms of actions and marcos, so for example, if you want to have a different RecentChanges - you can simply install a modified RecentChanges macro in your wiki. You can find lot of actions and macros in http://moinmoin.wikiwikiweb.de/ActionMarket and http://moinmoin.wikiwikiweb.de/MacroMarket.

Formatted pages are compiled to Python bytecode, and literally executed when a page is visited. Static macros run when a page is compiled, and their output is compiled into the page. Dynamic macro are executed during page runtime, and are used to provide user, time or namespace dependent data.

MoinMoin let you have acl for entire wiki, evaluated before and after page acl. You can have a default acl applied to pages without acl, or page specific acl. See http://moinmoin.wikiwikiweb.de/HelpOnAccessControlLists. For greater control, you can use your own security policy object, implementing any security scheme you like. See http://moinmoin.wikiwikiweb.de/SecurityPolicy.

MoinMoin UI can be changed by a theme plugin. A theme is responsible for creating the stuff before an after a page or action content. You can provide multiple themes for single wiki, or your own customized theme. MoinMoin uses plain Python as "template" language - you can easily change the behavior by overriding few methods. See http://moinmoin.wikiwikiweb.de/HelpOnThemes. There are many themes created by the community in http://moinmoin.wikiwikiweb.de/ThemeMarket.

MoinMoin support Wiki-RPC 1 and 2 http://www.jspwiki.org/Wiki.jsp?page=WikiRPCInterface2. You can also add xmlrpc plugin to extend the system as you like.

MoinMoin can be deployed on any platform, either using plain CGI (slow), standalone or twisted Python server (e.g. behind Apache), or using FastCGI (recommended) or mod_python (more tricky).

There is a GUI editor - modified FCKEditor, which may be easier for common users, but it has issues.

Search is very powerful, supporting Google style modifiers, booleans and regular expressions. However, search become slow on big wikis. For typical wiki it is just fine. For bigger wikis it is painfully slow. See http://moinmoin.wikiwikiweb.de/HelpOnSearching. There is an experimental index search engine using Lupy. The next version will have a better search using http://www.xapian.org/.

MoinMoin has great Unicode support - anything can be unicode: page content, page names, group names, user names and even passwords. User names can also contain spaces, so users can register with their real name.

MoinMoin has the best Right to Left support. You can define a language and direction for whole wiki, single page, sections within a page, or words within a paragraph. Other systems either does not support this, or have partial support using raw html.