Friday, July 22, 2005

Timesafe - Immutability in Software Configuration Management

The link below points to a paper that I wrote a few years ago regarding Immutability in Software Configuration Management.

Abstract. A basic function of Configuration Management (CM) is to accurately reproduce past and present information. Many other aspects of CM depend on this function. Flaws in this function affect and are magnified by other aspects of the system. Ideally, a CM system should perform this basic function automatically and flawlessly without any special knowledge or effort on the part of the users. This paper introduces the Timesafe ® property to describe CM models that possess the capability of accurately and automatically preserving and reproducing past and present information. As a first step towards enabling the proof or disproof that a CM model is Timesafe, this paper provides a formal description of the Timesafe property and the currently known list of counter-examples.

The paper can be found here:

http://www.accurev.com/blog/Timesafe%20-%20Immutability%20in%20CM.pdf

This is one of the core competencies that I believe to be integral in Software Configuration Management products, especially in the dynamic, distributed and parallel development environments that we as CM professionals must try to manage.

2 comments:

Brad Appleton said...

Hi Damon! Do you think your timesafe property is the same as my baseline immutability principle?

Damon Poole said...

Hi Brad,

It is similar. An important property of Timesafety is that it is automatic. Enabling immutability for all operations automatically while simultaneously allowing people to do the things they need to do. I believe that what you have described is a principle or best practice (one I happen to strongly believe in).

Timesafety on the other hand is something that is enforced automatically by the tool without requiring any special action or knowledge on the part of the user. It is a built-in best practice if you will.

For instance, in AccuRev if you want to create a baseline you create a snapshot and then that snapshot is immutable automatically.

Cheers!