Sputnik is a software application that powers a dynamic website.
You can use it as a “wiki”, that is, a site that any visitor can edit.
If you want, however, you can control who gets to edit and see what content.
Sputnik can also handle different kinds of structured data, not just text,
and makes it easy to add custom actions.
You also get prototype inheritance between nodes.
This makes it possible to use it for a wide range of web applications.

Status

Sputnik is no longer being developed or supported. The last version was
released in 2012 and in all likelihood there will be no further releases.
You are welcome to continue to use it, but please do not expect much in
terms of support.

Out of the Box

Out of the box Sputnik behaves like an easy-to-use and full-featured
wiki.
It allows users to create accounts, edit pages, see page history, etc.
At the outset any user can edit any page (or “node”). However,
as an administrator you can control who can see / edit what content.
You can even block anyone but yourself from editing pages,
which will turn your Sputnik into a “normal” website.
See Features for the list of features or click around this site,
which is running Sputnik. (You can also edit the Sandbox.)

To install Sputnik, download the archive from the link below and follow the instructions in the README.txt
or see Installation for more details:

If you have a Unix machine, installation shouldn't take you more than
a few minutes.
You do not need root access to the server and there are no
configuration steps until you want to do customization.
Sputnik has also been known to work on Windows.

Tweaking and Extending

However, Sputnik was designed to be modified and extended into other
things.
You can configure its behavior through parameters and optional modules.
If you are not satisfied with the available options, you can extend
the functionality by adding new modules using Lua.

For example, out of the box Sputnik stores its data as plain files on
disk (which helps reduce external dependencies).
However, if you prefer, you can use a module that would store all the
data a git repository
or in a SQL database.
But you can also write your own storage plugin, which could be as simple
as writing two functions.

You can also use Sputnik as a framework for building a wide range of
applications, building on top of Sputnik's web features, user
management, and storage model.
For example, you can turn it into a photo album or a forum site.
See Sightings for some examples of websites built on top of
Sputnik.
(Some of those require just a bit of configurations, some require a
small amount of Lua programming.)