Saturday, April 04, 2009

I've been working on a coding project in order to keep my skills from completely atrophying. It's a little wiki called µWiki (pronounced micro-wiki). I started working on it because I needed a wiki for another project and none of the available ones met my needs so I decided to roll my own. Comments and feedback are welcome.

5 comments:

I couldn't find any "about" page. Could you summarize the relevant features, to help someone understand under what circumstances they might prefer your version of wiki code from the other available ones? (E.g., what were your needs that were unmet by the alternatives?)

Why would someone prefer µWiki? Well, at this point mainly because it's small and lightweight. It also has a pretty wizzy UI which updates a separate HTML display in real time as you type in markdown, so you don't have to keep hitting the "preview" button as in many other wikis.

The main thing that other wikis didn't do is provide a good security model. The target application is for businesses that want a wiki that contains sensitive information. All the other wikis that I looked at had gaping security holes. Now, µWiki at the moment has no security model at all, but if you look at the code you will see the beginnings of one. There's a file called session.py which is not currently used, but which contains WSGI wrappers to set a session cookie and require a login. That will integrated in the next release.

The overarching goal is to make everything modular. You can already see this in the design of the storage engine. Files are stored using a class called rcstore, which uses a pluggable storage engine whose only requirement is that it conform to the dictionary protocol. Out of the box it uses a little storage engine caled fsdb (file system DB) which just stores things in files, but you can just rip that out and stick in a BSDDB instance, for example, or even just a plain dictionary (if you don't need non-volatile storage).