Most software that you use each day keeps track of current data but ignores historical data. You can ask the question “what is the value of X today?” but you can’t necessarily ask the question “what was the value of X yesterday?” Somebody could have changed the value, and you simply wouldn’t know. For example, as I set up this blog I noticed this in the instructions:
If you do not set this value, WordPress defaults WP_POST_REVISIONS to true (enable post revisions). If you want to disable the awesome revisions feature, use this setting…
The revisions feature in WordPress is indeed awesome, but compared to other software it’s pretty minimal. As far as I can tell it allows you only to recover a previous version of the post if you’ve made a mistake on the current one. It does not allow a reader to request a previous version of the blog via a version-specific URL, like this:
http://www.sarabura.com/2009/12/31/data-evolution-is-important/v1
The “v1″ at the end of the URL indicates you want the first version of the post. Why would anyone want to do this? On the internet, where you publish only what you want people to read and you don’t want anybody going back through previous drafts, the answer is pretty clear: You want everybody to see only the latest copy. But believe it or not, there’s more to the world than the blogosphere and the internet. Take requirements management, for example. A requirement that is stated today as:
During regular usage the battery must last no less than 3 hours before requiring a recharge.
could be restated a month later as:
During regular usage the battery must last no less than 4 hours before requiring a recharge.
That extra hour has a huge impact on most of the other requirements in your product. If you are not very careful to track down all the affected people who may have printed off your list of requirements and are therefore working with an old version of the requirement, then you will have some nasty surprises when it comes time to start putting the product together. If instead the affected people were notified of the fact that the requirement was changed, and were able to compare the old copy with the new copy, then they could see that an additional hour was added to the requirement and take appropriate measures to accomodate the change.
Another example where it is important to be able to view previous versions of data is in product documentation. The standard rule at my company when we download open-source software, is to also download all the source code and associated documentation, because a couple of years later when a defect is reported it may be difficult or impossible to get the information you need to diagnose the problem. Wouldn’t it be nice to be able to go to the original website and get all the documentation associated with your particular version of the package, along with revisions and updates that were made even after newer versions were released?
