Best Wiki Software?
I'm interested in starting a wiki. There are lots of free and open-source wiki platforms to choose from:
http://en.wikipedia.org/wiki/Comparison_of_wiki_software
I've used MediaWiki in the past, which worked as expected. Any experience, insight, or preferences?
I'd like to easily add embedded flash applications. Ideally they would be user uploaded, i.e. a use modifies a page by uploading and adding a flash application as an example of what that page is discussing.
20 comments
[ 7.4 ms ] story [ 49.7 ms ] threadI wrote my own, because I wanted 1) something in Ruby on Rails, 2) wasn't happy with Instiki, and in any case, 3) wanted something that I know very well. It's available here, and is free software:
http://dedawiki.dedasys.com
http://moinmoin.wikiwikiweb.de/
I like the simplicity and DB-free nature of DokuWiki. Because wiki pages are simple text files, you can easily add wiki pages through some scripts and backup/syncing is as easy as it gets. The plugin architecture is good. Uploads go a namespaced upload area, so it's easy to embed and share uploaded files between wiki pages.
MoinMoin is an OK wiki with the advantage that it's python. It's fairly easy to create wiki farms with MoinMoin, and you can add "macros" so pushing a button will get you a wiki page from different templates. Sections in a wiki page (delimited by headers) aren't independently editable, unlike the two PHP wikis above. User uploads are through page-specific attachments, unlike the more global space for file uploads in DokuWiki. You can have an ACL per page, but I like the Authorization system in DokuWiki better because it allows ACLs for entire namespaces.
All of the above are easily skinned. For example, in DokuWiki, we can change from my lab website skin (http://taylorlab.stanford.edu) to the default skin (http://wiki.splitbrain.org/wiki:dokuwiki) using a drop-down menu.
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...