MeatballWiki | RecentChanges | Random Page | Indices | Categories


Several wikis have found it useful to keep old versions of each wiki page. These older versions are especially useful to correct destructive mistakes or mild vandalism (cf. ReversibleChange). Some wikis keep all changes, while others keep only a single old copy (often the previous author's version). Each kind of versioning has its advantages and disadvantages. For instance, permanent history means that vandalism can almost always be reversed, but some people are concerned about their mistakes becoming a permanent part of a page's history, thwarting ForgiveAndForget. On the other hand, a system that only tracks a fixed number of copies is easily defeated by making the fixed number plus one of fresh edits--either by an attacker, or though the actions of many innocent authors.

The original idea of KeptPages was to find a middle ground between keeping all versions and the keeping a small fixed number of versions.


We chose to version everything, but only keep revisions around for a limited timespan, say a week or a month. That is, destroy all revisions older than the timespan. The timespan will naturally depend on the amount of traffic to a site, the slower the traffic, the higher the timespan.

This scheme is not sufficient, though, as an attacker can destroy a page that hasn't been touched in several months by merely editing it. After all, all its prior versions have been automatically erased, leaving you with only the latest, vandalized version.

Consequently, we add a little twist: timestamp the revisions not when they are created but when they are replaced. So, the current version of the page is not in the revision history, but when I make a change, the current version gets timestamped then and entered into the history. Then the new edit becomes the current version. See KeptPagesExample.

Basically, instead of keep a fixed number of backups, you keep a fixed time of backups. (It will probably still be useful keep one backup version of each page anyway for comparisons in the far future.)

This way, as you just keep everything, you protect against any form of vandal attack, yet you also ForgiveAndForget mistakes. Moreover, if a vandal wants to destroy an old page, the old page will still be around for a week. In this way, it's an example of DelayAction.



MeatballWiki | RecentChanges | Random Page | Indices | Categories
Edit text of this page | View other revisions | Search MetaWiki