| Try Sputnik! |
Sputnik Is a Simple Wiki
Out of the box Sputnik behaves like a wiki with all the standard wiki features: editable pages, mild and non-invasive protection against spam bots, history view of pages, diff, preview, per-page-RSS feed for site changes. (See Features for more details.) A basic Sputnik installation consists of just a few source files that add up to less than 2000 lines of code. Sputnik based upon software provided by the Kepler project, such as WSAPI and LuaRocks, and can thus run on a wide range of web servers.
This site is running Sputnik. You can click around for a demo, or edit the Sandbox. Or go to Installation to set up your own. (If you have a Unix box ready the installation shouldn't take you more than a few minutes. You do not need to have Lua installed and you do not need root access to the machine. Windows installation is also possible.)
Sputnik Is Whatever You Want It to Be
At the same time, Sputnik is designed to be used as a platform for a wide range of "social software" applications. A simple change of templates and perhaps a few lines of Lua code can turn it into a photo album, a blog, a calendar, a mailing list viewer, or almost anything else. (See Demos for some examples.) So, you can think of it as a web platform of sorts. In addition to allowing you to add custom bells and whistles to a wiki, Sputnik provides a good foundation for anything that's kind of like a wiki but not quite. Sputnik stores its data as versioned "pages" that can be editable through the web (just like any wiki). However, it allows those pages to store any data that can be saved as text (prose, comma-separated values, lists of named parameters, Lua tables, mbox-formatted messages, XML, etc.) While by default the page is displayed as if it carried Markdown-formatted text, the way the page is viewed (or edited, or saved, etc.) can be overriden on a per-page basis. (You do this by over-riding or adding "actions", so Sputnik it is all nice and MVC.)
Suppose you want a calendar that is editable as a wiki but displays in a nice tabular format. You can store a list of events as Lua Tables and for your Version 1 can let your users edit it as such. (Scientific studies show that most people can learn to edit Lua tables.) You still get the benefits of diff, history, etc. out of the box and you get to display your calendar in several formats (including, for example, the iCalendar format). If you want, you can later add a custom "edit" action to give your users an AJAXy edit interface. And if you have nothing better to do, you can even add a custom diff.
In the extreme case, each page can act as a placeholder for a script that generates the content on the fly. So, if you want, you can use Sputnik to display data generated by existing code. (Even code written in C, actually.) To get a better idea of what Sputnik can do, look at the Conceptual Model and the Demos.