Summary: Allows Wiki users to administer the underlying computer system democratically
Version: February 2011
Prerequisites: none
Status: design (working proof of concept)
Maintainer: Kirk Zurell
Categories: System tools

Latest news (Feb 2011)

Questions answered by this recipe

This section is optional; use it to indicate the types of questions (if any) this recipe is intended to answer.

How can Wiki users take more control over the computer system that hosts their Wiki?


Permits democratic control of the Wiki's underlying computer system

Suffr is a PmWiki module that allows users to administer a computer system in a democratic fashion. Users create Wiki pages with directives intended to change the computer's configuration. Users then "sign" pages to approve them. When enough users sign a page, Suffr executes the configuration directives to implement the changes.

In this way, users can configure the operating system, mail and database systems, peripherals, and even the Wiki itself. No one person is in complete control of the underlying computer.

The name is derived from suffrage, a term describing voting.


Users describe the changes they want to make to the computer's configuration using Wiki pages. They author one or more changes using special directives (described below). These directives can:

  • create or update configuration files,
  • execute programs,
  • create and execute scripts (informal programs).

When users "sign" a page, Suffr calculates a unique signature based on the page's contents. So long as the page doesn't change after it's signed, the signature remains valid.

When enough users sign a page, Suffr considers it approved. Suffr looks through the page for configuration directives and then executes them on the computer system.

To install Suffr:

  1. Download and unpack the Suffr archive: suffr.tgzΔ
  2. Add configuration directives to the config.php file. See the program comments.
  3. Add an include_once('cookbook/suffr.php'); directive into config.php. PmWiki will incorporate the module into its programming.
  4. During development: ensure that you're identified as the author in the current session. If you've edited a page, this is probably true. Ensure also that you have created a Profiles page.
  5. Add Suffr directives to a new or existing Wiki page, especially the (:pagesignature:) directive. Save the page.
  6. Click Sign this page. A signature will appear on your profile page.
  7. When enough users (that have profile pages) sign a page, Suffr will invoke the directives and log the results.


This is untested software. Do not run on production sites (or even accessible testing sites).

Release Notes

If the recipe has multiple releases, then release notes can be placed here. Note that it's often easier for people to work with "release dates" instead of "version numbers".

February 2011
Version for Ignite Waterloo
  • Added functionality for "opinion": beginning design for a way for members to know that a recipe (topic) will do what it claims to do.
January 2008
Initial version

See Also


This is a whitepaper that gives a high-level view of what Suffr is supposed to do. It describes the similarity between Wiki markup and system information formats, and the way that Suffr integrates with both the Wiki and the system. It talks about why democratic managment of a computer system is important.

Attach:Wiki for Democratic Communications.odtΔ


Kirk Zurell


How will Suffr make changes to files owned by root?

On UNIX-heritage systems Suffr will run "suid", probably through suPHP. Operations performed by Suffr are deemed to be taken by the user with the uid/gid of the pmwiki.php/suffr.php script file, not the uid of the web server. In this way, the web server need not run as root. Look at su(1), sudo(1), and other such tools for more information.


User notes? : If you use, used or reviewed this recipe, you can add your name. These statistics appear in the Cookbook listings and will help newcomers browsing through the wiki.