Saturday, April 04, 2009

Announcing µWiki

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:

Don Geddis said...

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?)

Ron said...

About page is here:

http://www.flownet.com/ron/code/uwiki.html

(The word "µWiki" is hyperlinked there in the post above.)

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).

Don Geddis said...

Sorry, yes I saw the hyperlink. Which described what it was, but not why. (Basically, talked about implementation, but not features.)

But your comments here were exactly what I was looking for. (You might want to consider adding them to the linked page!)

Anyway, very interesting. Good luck with the system.

i said...

Just curious, why did you choose Python over (any) Lisp? (some context: I just read your other recent post regarding Lisp)

This is not the first time I've come across someone write about how great lisp is and then turn around and use Python in its stead.

Ron said...

> why did you choose Python over (any) Lisp?

Because I wanted people other than myself to be able to use it.

Also, in some ways Python is a better language than Lisp for web development because its libraries are more extensive and more stable.