Late in 2010, foswiki released the latest version of its wiki server system. I only recently got around to try it out. As far as I’m concerned, while it’s not perfect, it’s the best wiki available.
I’ve written before about foswiki, soon after it was established as a fork of TWiki, another mature wiki platform. Even then, I was impressed by how robust and powerful foswiki was. Since then, the developers have vigorously trampled bugs and improved performance and usability, including developing well-written and accurate documentation. I’ve tried all kinds of wikis, including the arguable gold standard: mediawiki. None of them currently beat foswiki, in my opinion, because none combine robustness, performance, and flexibility as well as foswiki does. Here’s what I mean.
A development team dedicated to the principles of open source software. One of the problems with foswiki’s progenitor was that its lead developer was trying to build a commercial enterprise on top of an open source wiki. Of course, this is his privilege, but it’s never clear in such cases what the developer is holding back from the free version to help promote the commercial version. This is a systemic problem in the open source community. Open source is not a vehicle for making money; it’s about freedom and progress unhindered by economic concerns. Trying to marry the two can lead to abomination. These days, the bizarre term freemium has been coined to capture the principle of hooking people into some free-but-lobotomized service, then trying to pull them into the paid version to get the functionality they really want. There are ways to make this work without making people feel they’re being taken advantage of – Google is a great example of how to do this right – but foswiki’s progenitor didn’t do it right. Eventually, virtually every developer abandoned TWiki to form foswiki. Much better to do as foswiki’s developers have done: stick to real open source, focus your energy on making the best software possible, and keep the commercial aspects crisply separated.
Plain text data files. Lots of advanced wikis, like mediawiki, use databases like mySQL for storage. While this usually means the wiki runs faster, it also means that there’s a lot of disk usage and CPU overhead, that it’s very hard to export data to other systems, and that there’s a certain administrative overhead that can be a royal pain. Plain text files tend to be (much) smaller, and it’s easy to write scripts that can massage the data for export, which provides an exit strategy. (One of my Rules of Computing is Always have an Exit Strategy.)
Partitioned spaces. Foswiki can inherently create “webs,” collections of pages that are roughly independent of each other – as if each web were almost its own wiki. This is invaluable for dividing up information. On my installation, there are separate webs for my research lab, my courseware, my personal research and notes, documentation about the wiki itself, and so on. Each web can have its own set of permissions to control access, it’s own look and feel, and so can be customized for its specific purpose. Other wiki engines, such as MoinMoin, support multiple wikis per installation, but none has as little administrative overhead as does foswiki.
WYSIWYG editing. These days, any real wiki supports WYSIWYG editing, like a word processor. This is great for users who aren’t geeks. Foswiki’s editor isn’t perfect, but it’s just fine for users who are just adding content and not taking advantage of foswiki’s advanced macros and extensions. It’s also trivial to switch between the WYSIWYG editor and the raw text editor, the latter of which is essential for using advanced functionality. Oddly, informal studies I’ve conducted in the past suggest that WYSIWYG editing is used mostly by new users, and that experienced users switch to the raw editor – regardless of the wiki being used. So I would venture to say that most long-term users will end up using the raw editor. Still, it’s good to know that the WYSIWYG editor is there for new users.
Useful plugins. A plugin is an optional extension. There are hundreds of extensions for foswiki, some more robust than others, many of which are targeted directly at helping users rather than just being stupid programming tricks. One must be rather careful in choosing which extensions to install, especially some of them don’t play nicely with others, but there is a very significant net gain by using extensions in foswiki. Some of these extensions are targeted at users, like BibliographyPlugin, which lets users maintain lists of references and publications. Other extensions are for specialized applications, like TopicClassificationAddOn, which let one develop an entire taxonomy of document structure for each web collection of pages.
A vigorous community. Not only are foswiki’s developers dedicated to the principles of open source software; they are also dedicated to making sure their product is as good as they can possibly make it. There are limits, of course, mostly involving the developers’ lack of funding – foswiki is free after all – but within those constraints, I’ve found the entire development community not only interested in keeping their software robust, but also very interested in maintaining excellent communications with their users. I’ve often posted noob questions about foswiki, and always been treated with patience and respect. This is how one keeps one users happy. Would that many commercial organizations offered this high level of customer support!
Flexibility. Foswiki is more than just a wiki; it’s actually closer to a programming environment. It’s extensive library of built-in functions and extensions greatly enhance the software’s performance and functionality. I described extensions earlier, but one needn’t go that far. Foswiki is inherently powerful enough to do many interesting things without using any extensions at all. For instance, when I realized that a 3rd party package needed by a foswiki extension for managing images was not working properly on my server, I developed my own way of doing it – in a simplified form – using only foswiki’s built-in facilities in about an hour. Perhaps my most favorite special function is that one can create tabulated information that can be edited without have to actually edit the whole page. This is a great way to do simple task management, as well as medium complexity spreadsheets.
Foswiki is so good, that I’m switching over to it for all “production” stuff: all my courseware and research notes, the collaboration space for my grad students, and anything else I can think of. I’m even going to promote its use as an internal system for administration within my Department.
I note that what foswiki seems to do particularly well is to find the right balance between simplicity, functionality, and robustness. That means foswiki is well-designed.
In the future, I’ll write more about what I do with foswiki. For now, you can see my growing installation here. And if you’re looking for a flexible, robust, usable wiki engine, you need to consider foswiki.