What is Sputnik? (000007)

There are two ways to look at Sputnik: as a simple wiki or as a web platform. Those may seem like contradictory requirements, but we aim to satisfy both. Let's tackle them separately:

Sputnik Is a Simple Wiki

Out of the box sputnik behaves like a wiki with all the standard wiki features: editable pages, mild protection against spam bots (you need an account to edit pages, but anyone can create an account with no questions asked), history view of pages, diff, and an RSS feed for site changes. Support for protected pages and "superusers" (who can edit protected pages) is coming soon.

Sputnik is "simple" in the sense that the installation consists of three files that add up to 1140 lines, two general purpose libraries, and 300 lines of templates. Even if you add up all of those together, plus the examples, it's still less than 2000 lines of code. In comparison, Oddmuse and UseMod wikies (both considered small) weigh in at 4000 and 5000 lines respectively. This comparison may be unfair since Sputnik runs on top of Kepler, but Kepler is easy to install and is very small. Kepler consists of 85K lines of code (that includes Lua itself) that build into an 800kb directory, so even Sputnik + Kepler is substantially smaller and simpler than systems like MoinMoin (26MB/92K lines of Python + 1.2M lines of the Python implementation), not to mention MediaWiki (15MB/230K lines of PHP, on top of over 1.5M lines PHP implementation). Obviously, Sputnik doesn't do everything MediaWiki does, but you trade bells and whistles for simplicity. So, if you want a wiki that you can understand, this may be a good option. One of the design goals for Sputnik is to keep this basic setup small. In fact, we are hoping to get it to be under 1000 lines of Lua code.

If you just want to use Sputnik as a wiki, please go to Installation.

Sputnik Is Extensible and Is Whatever You Want It to Be

At the same, Sputnik is designed to be extensible with almost no bounds. A simple change of templates can change your Sputnik quite a bit and a small amount of Lua code can turn it into almost anything. Ok, not quite anything, since Sputnik is committed to supporting a particular wiki-inspired data model. Specifically, Sputnik maintains a collection of versioned pages that can be editable through the web (just like any wiki), but at the same time it allows those pages to store any data (text, tab delimited data, lists of named parameters, Lua tables, 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. In the extreme case, a page can act as a placeholder for a script that generates the content on the fly. As a result, you can add functionality to sputnik with just a small amount of code. E.g., Sputnik's RSS feed is implemented as in 29 lines of Lua code (see Special:RSS) and a 22 line template (see Templates:RSS).

If you are interested in understanding the full range of what Sputnik can do, look at the Conceptual Model and the Examples.

Powered by Sputnik | XHTML 1.1