I’ve been working with DokuWiki a lot lately, because I’m adapting it to use for internal communications and project management at work. I’ve never really worked much with DokuWiki because I’ve tended to use MediaWiki for most wiki projects. MediaWiki is powerful and robust and has a lot of features out of the box that DokuWiki lacks. MediaWiki also scales well, so whether you’ve got ten users or tens of thousands of users, it can handle it. It is, after all, the software behind WikiPedia.
Still, for a lot of purposes, MediaWiki may be overkill. I’m going to examine some of the key differences between the two. If you’ve overlooked DokuWiki in the past because it’s not MediaWiki, or are looking for a wiki engine that is lightweight and has a lot of options, I urge you to give DokuWiki serious consideration.
The biggest difference between MediaWiki and DokuWiki is that MediaWiki requires a database while DokuWiki doesn’t. Instead, it stores all its data in files.
This doesn’t make DokuWiki any less robust. In fact, if you’re using a database-driven CMS and server-based caching, visitors to your site are already getting their data from files. It’s just that those files are cached in a database, rather than being served directly. This means that DokuWiki can be incredibly fast and and responsive.
There are a couple of other consequences to DokuWiki’s flat-file nature. The first is that it is an easy matter to back up a DokuWiki site. If you are handy with the command line, you can simply compress your entire install into a tarball and then copy the tarball to a secure location. If you’re not handy with the command line, you can just download your entire DokuWiki site via FTP.
The other consequence is that it’s fairly easy to move a DokuWiki install. Again, if you’re handy with the command line, tarball your files, navigate to your new server, wget the tarball, and unpack it. If you’re not okay with the command line, you can download and upload via FTP.
MediaWiki allows you to add pages to categories by adding a category tag to each page. Because of this, you can add a page to multiple categories, but categorizing pages is much less intentional.1
DokuWiki does much the same thing with namespaces. (MediaWiki has namespaces, too, but they are not fun.2) Because DokuWiki stores its data in files, each namespace is literally a directory on your server that pages go into. Because of this, a DokuWiki page can only belong to a single category. However, you can have multiple pages with the same name, as long as each one is in a different namespace.3
You can nest categories in MediWiki, and you can nest categories in DokuWiki, as well. Remember, each namespace is just a directory, so it can other directories which can, in turn, contain other directories. However, those namespaces make up part of each page’s URL, so if you do a lot of deep-level nesting, URLs can become rather long. That doesn’t really affect DokuWiki’s performance, but if you intend to share some of those pages on a regular basis, you may want to think about a URL shortener.
MediaWiki will automatically create a category page which lists all the pages and subcategories that category contains. This function is not part of DokuWiki’s core, but you can add it with the nspages plugin. This plugin’s functionality is actually more versatile that MediaWiki’s because not only can you include either pages or subnamespaces or both, you can also add them wherever you want. For example, if you do a lot of work in three particular namespaces, you can create a page with links to all their pages and subnamespaces so you can access them easily with a single click.
DokuWiki also does one thing that MediaWiki doesn’t do: it allows you to add tags to pages, by installing the tag plugin. This makes DokuWiki a lot like WordPress, which does have both categories and tags. Interestinly, most of DokuWiki’s strength comes from the fact that it so easy to add extra functionality just by installing plugins. DokuWiki is highly extensible, and there is a robust group of plugin developers.
MediaWiki can be extended by the use of “Extensions” but you need to upload them via the command line or FTP, and they often require changing MediaWiki’s configuration file. DokuWiki plugins are added via an administration panel, making it much more suer friendly for less technically minded users. You can view the list of available plugins here.
Wikis are, by default, meant to be community driven projects. As a result, most wiki software is designed to be wide open to anyone who stumbles across them. You can create a private wiki with MediaWiki, but it’s largely an all-or-none proposition: your wiki is either all public or all private, and although you can protect certain pages from being edited, people can still read them.
DokuWiki makes sue of access control lists, which means that you have extremely granular control over page access. this is one area where DokuWiki is light years ahead of MediaWiki (and indeed, most other CMSs): you can control access at the wiki level, the namespace level, or the individual page level. Addditionally, you can assign privileges to everyone, to groups of users, and to individual users. You can, for example, grand read/write/delete privileges to a namespace to one group, while at the same time giving another group read only privileges, and locking out everyone else. You can create namespaces for individual users that only they have access to; these areas can then become their own private note-keeping area. In this way, DokuWiki is far superior to MediaWiki, and when people mention “semi-private wiki” to me, I immediately think of DokuWiki.
Both MediaWiki and DokuWiki allow you to create pages either by typing their name in the URL bar of your browser, or by creating a link to a non-existent page. But because namespaces are part of a page’s URL in DokuWiki, you can also create a new namespace at the same time. Simply include the namespace in the new page’s name or address. (I find this very handy, as I find DokuWiki works best with more namespaces rather than fewer.)
MediaWiki automatically creates a “Talk” page for each new pages where contributor’s can work out problems or issues with that page. DokuWiki doesn’t really offer anything like this, so any discussion has to take place on the page itself. In my experience, talk pages make sense on a site like WikiPedia, but on most MediaWiki install I’ve worked on, they are largely unused. Depending on how you are accustomed to communicating in your organization, you may find talk pages essential or superfluous. I occasionally use them when they’re there; I don’t miss them when they’re not. There are lots of other ways to talk to one other.
One of the things I love about MediaWiki is that you can use templates: pages that are designed to be included in other pages. All those messages you see at the top of WikiPedia pages are template pages. (I love this feature so much that I created a WordPress plugin to emulate it.) Again, this is not something that DokuWiki features out of the box, but guess what? There’s a plugin for that: the include plugin.
Software is a human creation, and unlike nature, we generally create it with an end game in mind. Because I primarily work with WordPress, I spend a lot of time explaining to people how to do things with WordPress. But I also spend more than an insignificant amount of time telling them that while WordPress does have some collaboration tools, if collaboration is a priority, you really should be using a wiki; and that while WordPress can be used to deliver instruction, if you really need to manage a learning environment, you’re better off using an LMS like Moodle. The point is, you’re better off using the software for those things it was intended to be used for. If you really need it do something else entirely, you probably need to rethink things.
That changes when it comes to DokuWiki, however. Because it is so highly extensible, it can easily be adapted for a lot of other purposes. It is, of course, a fantastic wiki, but with the right plugins, it can also serve as a CMS, a blog, a photo gallery, and much more besides. If you’re looking for a lightweight wiki with an easy learning curve that can do a lot of other things and is well-supported, I encourage you to give DokuWiki a try. You may find it is everything you need.
1With MediaWiki, I often forget to add categories until after I’ve created the page, which means I need to edit the page again just to categorize it.
2Add a new namespace in MediaWiki is a bit like adding an addition on to your house; it can be done, but it’s not simple and you need to do things in order. Adding a new namespace in DokuWiki is more like setting an extra place at the table. It doesn’t take nearly as much planning—you simply do it.
3For example, you can have a page called “Plugins” in the “DokuWiki” namespace, and another page called “Plugins” in the “WordPress” namespace.