uWiki is a self-extensible Wiki engine.
Version: 0.1 AlphauWiki is a self-extensible Wiki engine.
Operating System: Linux
Here are some key features of "uWiki":
· There is an simple but sophisticated ACL system to protect content
· The wiki keeps its own source code under wiki control
· Wiki content can coexist with other static content in the same dir
· Pluginable revision control (git provided)
· Pluginable engines for compiling static content (types)
· Extensible by adding new actions
· Manages generic metadata
· Focuses on generating static content, but can easily be extended for dynamic content
uWiki is currently implemented using Haserl with bash as scripting language. This makes it easy to prototype and extend the wiki but is intended to serve as kickstart for implementations in other languages.
uWiki is placed itself in $DOCUMENT_ROOT/_uwiki/:
· _uwiki This is the main CGI script dir which contains the actions the user can request plus some supplemental functions note: shall this be moved to _uwiki/cgi-bin or so?
· _uwiki/_types contains a script for each type the wiki can handle. This scripts have a defined interface which making them independent of the underlying engine to be used.
· _uwiki/_meta stores the metadata hierachy. Each file in the wiki can have some generic metadata associated, if so then there is a directory reflecting this file in the _meta hierachy (that is _uwiki/_meta/foo/bar.html/ for foo/bar.html). The metadata itself is stored in files with a leading underscore. The kinds of available metadata are implementation dependent, ACL's are stored in _acl, the type is stored in _type and so on.
· _uwiki/_groups contains the group definitions for the ACL system. This are textfiles which have one user or group per line which shall be member of the named group, comments starting with # are also supported.
For oblivious reasons uWiki refuses to manage files with leading underscores.
To give it a wiki appeareance the Webserver is simply configured that the 404 Not Found document redirects to _uwiki/create which offers the user (sufficient permission assumed) a option to create this content.