<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Principia &#187; Configuration Management</title>
	<atom:link href="http://blog.principia-it.co.uk/category/itslm/configuration-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.principia-it.co.uk</link>
	<description>Power from Simplicity</description>
	<lastBuildDate>Tue, 07 Feb 2012 07:40:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.principia-it.co.uk' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/6f78c9f4917c134dd89eb02c5ec6e5d8?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Principia &#187; Configuration Management</title>
		<link>http://blog.principia-it.co.uk</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.principia-it.co.uk/osd.xml" title="Principia" />
	<atom:link rel='hub' href='http://blog.principia-it.co.uk/?pushpress=hub'/>
		<item>
		<title>Why you&#8217;re wrong&#8230;</title>
		<link>http://blog.principia-it.co.uk/2011/06/28/why-youre-wrong/</link>
		<comments>http://blog.principia-it.co.uk/2011/06/28/why-youre-wrong/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 17:45:17 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[ITSLM]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[CM]]></category>
		<category><![CDATA[cm definition]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM definition]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=942</guid>
		<description><![CDATA[&#8230;if you think build, change, or release management are part of configuration management. Bob Aiello lit the blue touch paper (again) on the debate about &#8216;what is configuration management?&#8217; and, once again, he seems to be trying to redefine configuration management to fit the role of Configuration Manager identified (incorrectly) in many organisations. This is absolutely the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=942&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;if you think build, change, or release management are part of configuration management.</p>
<p>Bob Aiello <a href="http://www.cmcrossroads.com/forums?func=view&amp;amp;catid=3&amp;amp;id=101750#101751">lit the blue touch paper</a> (again) on the debate about &#8216;what is configuration management?&#8217; and, once again, he seems to be trying to redefine configuration management to fit the role of Configuration Manager identified (incorrectly) in many organisations. This is absolutely the worst way to define configuration management.</p>
<p>Let&#8217;s now look at Bob&#8217;s list of things he want to dump on CM&#8217;s lawn.</p>
<blockquote><p>I often describe that there is a big CM and a little CM.</p>
<p>Big CM is the field of Configuration Management which I suggest includes:<br />
* Source Code Management<br />
* Build Engineering<br />
* Environment Configuration<br />
* Change Control (seven different types)<br />
* Release Management (coordination and engineering)<br />
* Deployment</p>
<p>while little CM refers to Configuration Control (of interfaces).</p>
<p style="text-align:right;">From Bob&#8217;s original post to <a href="http://www.cmcrossroads.com/forums?func=view&amp;amp;catid=3&amp;amp;id=101750#101751">this</a> thread</p>
</blockquote>
<p>This is simplifying CM?  In this article I hope to show why this redefinition is unnecessary, flawed, and ultimately damaging to CM.</p>
<p>If we were to accept that a discipline is correctly defined by looking at the roles identified in organisations then we would never get anywhere (much like this debate). I for example often have the role named &#8216;Configuration Manager&#8217; and yes  I also do builds, releases, etc as identified in Bob&#8217;s list. But then I also fetch coffee for the team and I do the odd bit of development or testing, I write technical documentation, perform product evaluations, project management, risk assessment, and I assist in problem solving for production systems—and yes, sometimes these things (with the exception of fetching the coffee) are part of my official role (although given the current economic climate, who knows). Does that mean these too are defining features of configuration management? No. This is a silly way to define a discipline. Even if you observe that &#8216;many&#8217; organisations lump the things together it <em>still </em>would not justify redefining configuration management because there&#8217;s absolutely nothing to gain, and much to lose, from doing so.</p>
<p>Configuration management (the discipline) has a perfectly sound definition (all together now); identification, change control, status accounting, and auditing. To change this definition is to define something other than configuration management and I have no objection to defining an umbrella term to cover all the disciplines identified by Bob; in fact I do, I call them Development Support Services.</p>
<p>Yes, we could do more to clearly communicate what CM is. Although, I cannot recall a time when I was ever confused by what the the four core activities were, the difficulty always stemmed from more subtle issues like &#8216;how do I select good configuration items&#8217; and Bob&#8217;s redefinition does precisely zero to address these problems. Adding more complexity by mixing in a load more disciplines is hardly likely to aid clarity.</p>
<p>If the idea is that by lumping all of these disciplines under the CM heading we can make CM appear more useful or make it an easier sell to management, then I think that&#8217;s horribly misguided too.</p>
<p style="padding-left:30px;"><strong>You:</strong> We want to introduce CM.<br />
<strong>Manager:</strong> What&#8217;s that when it&#8217;s at home?<br />
<strong>You:</strong> Oooh. Loads of good stuff. Build, release, change&#8230;.<br />
<strong>Manager:</strong> Hang on. We do most of that stuff already.<br />
<strong>You:</strong> Ah. But we&#8217;ll pull it all together under one heading. Make it more coherent. Make it better.<br />
<strong>Manager:</strong> Create a bottleneck you mean.<br />
<strong>You:</strong> No. No. No. We&#8217;d be specialists.<br />
<strong>Manager:</strong> So CM is just all this stuff under one team?<br />
<strong>You:</strong> Oh no. We also do identification, change control, status&#8230;. *noticing manager slip into comma* Oh, wait. Remember the ITIL course you went on?<br />
<strong>Manager:</strong> Oh yeah. That was a great couple of week. Great evenings&#8230;. Oh. I mean, yes, very valuable.<br />
<strong>You:</strong> And you remember them saying you needed a good CMDB?<br />
<strong>Manager:</strong> Yeees?<br />
<strong>You:</strong> Well that&#8217;s what we&#8217;ll do.<br />
<strong>Manager:</strong> As well as all this other stuff?<br />
<strong>You:</strong> Sure.<br />
<strong>Manager:</strong> And what about all the people already doing the other stuff?<br />
<strong>You:</strong> They&#8217;ll be part of my team.<br />
<strong>Manager:</strong> Hang on. Your team?<br />
<strong>You:</strong> Of course. They&#8217;ll be under the CM team.<br />
&#8230;. and so on&#8230;</p>
<p>Obviously I&#8217;m being slightly facetious, but hopefully you see my point; why complicate things? The manager is now more confused about what CM is than he was at the start. Sure, you&#8217;ve made a pitch to create a service team supporting development, but you&#8217;re not closer to furthering the CM cause than you would have been had you just reminded the manager about his ITIL course in the first place. You&#8217;ve made no real progress in explaining CM, you&#8217;ve just hidden it amongst a load of other stuff, possibly to the point of obscuring it completely.</p>
<p>&#8216;But we should move with the times&#8217; is a common enough response. I agree. Let&#8217;s draw a parallel to show how it&#8217;s unnecessary to abandon the existing definition of CM but still move with the times.</p>
<p>Science is decomposed into disciplines. Physicist will often joke (and in some cases only half-jokingly) that all other sciences are ultimately reducible to physics and therefore physics is the only science we need. This seems to be what those who want to lump all these other disciplines into configuration management are set on doing, lumping all the other disciplines into one. And, just as with the science example, it&#8217;s a bad idea.</p>
<p>Continuing the parallel between CM and science. Just because scientists resist the temptation to mangle all their disciplines together hardly means they&#8217;re not moving with the times. Biological science is unrecognisable from fifty years ago, but it&#8217;s still Biology. Similarly, configuration management&#8217;s scope has increased as we have more powerful tools we can realistically monitor and control to a finer and finer degree of detail. Where in the past a configuration item&#8217;s scope would be limited by the capacity of a paper system to realistically track it, we can now declare almost every file in a system to be a CI if we so choose.</p>
<p>What Bob (and I&#8217;ll use Bob as a proxy for all those who support the view that CM should absorb all these other disciplines) seems to be proposing is something like the following (I&#8217;ve reduced the list to just build and release management to keep the diagrams simple, my point is still made I think).</p>
<p><a href="http://principiait.files.wordpress.com/2011/06/post1.png"><img class="aligncenter size-full wp-image-943" title="CM as aggregator" src="http://principiait.files.wordpress.com/2011/06/post1.png?w=450" alt=""   /></a></p>
<p>Or, heaven forbid, the following.</p>
<p><a href="http://principiait.files.wordpress.com/2011/06/post2.png"><img class="aligncenter size-full wp-image-944" title="CM as container" src="http://principiait.files.wordpress.com/2011/06/post2.png?w=450" alt=""   /></a></p>
<p>In the first case build and release management become intrinsic parts (aggregate into) configuration management. In the second (shudder) they become inner classes, only accessible through the configuration management wrapper.</p>
<p>Both of these system architectures are&#8230; well. They&#8217;re terrible design. If a software engineer came to me with this design I&#8217;d fire his ass. (If people are sufficiently interested in me expanding this claim, I will do so in another post.)</p>
<p><a href="http://www.cmcrossroads.com/forums?func=view&amp;catid=3&amp;id=101750#101772">One observation</a>, made by Joe Townsend, was that the four activities that constitute configuration management are still to be performed within many of the sub-discplines identified by Bob. If this is so, then why not keep the CM discipline separate and have these disciplines use it rather than mangling them all together? What possible benefit is accrued by redefining CM in this way? &#8216;Oh well, CM is still a part of some of the disciplines we want to put under the CM banner. Erm. No. Wait. The &#8216;four activities formerly known as CM&#8217; as now part of some, but not all, of the disciplines that now make up CM&#8217;. It just makes no sense. It&#8217;s adding insult to injury. It&#8217;s muddying the waters. You get the idea; you&#8217;re doing nothing at all to help clarify CM and your piling in a load of additional stuff that does not belong in there.</p>
<p>Let me be clear. If you want to be called &#8216;Configuration Manager&#8217; and cover all the disciplines Bob identifies, good luck to ya. You won&#8217;t be the first, or the last, to do that. Heck, you can take the title &#8216;Lord of all he surveys&#8217; if you like. Makes no odds to me. My gripe is about redefining the discipline of Configuration Management in these terms.</p>
<p>The following diagram shows how build and release management simply use configuration management. A much more elegant structure and one that benefits from modularity, making it much simpler to explain each discipline—also making it simpler to &#8216;debug&#8217; the processes involved. (The benefits of such modularity should be obvious, but if people are keen for me to expand I will do so at another time.)</p>
<p><a href="http://principiait.files.wordpress.com/2011/06/post3.png"><img class="aligncenter size-full wp-image-945" title="CM" src="http://principiait.files.wordpress.com/2011/06/post3.png?w=450" alt=""   /></a></p>
<p>It&#8217;s simple. It&#8217;s elegant. It&#8217;s modular. It&#8217;s scalable. And IT&#8217;S WHAT WE HAVE NOW! (Well, those who have not polluted the well.)</p>
<p>Another objection is that this combination of disciplines under the CM rubric is only done for Software Configuration Management (SCM). What! Why? Why do people insist on making this asinine distinction? SCM is &#8216;Configuration Management of Software&#8217;, which, according to the correct definition of CM is precisely the same discipline as, for example, &#8216;Configuration Management of automotive engineering&#8217;, &#8216;Configuration Management of hardware&#8217;, or &#8216;Configuration Management of X&#8217; for whatever &#8216;X&#8217; you care to put in there.</p>
<p>If you accept the universality of CM principles then the multi-discipline agglomeration proposed by Bob makes even less sense. Most engineering CM systems, for example, have no build discipline within them; the CM discipline is used by fabrication plants to provide reference material (engineering specification, computer controlled tool programs and the like) from which the fabrication plant build the items. The closest these CM teams get to performing a build is assembling a baseline to be passed to the fabrication teams. It is simply coincidental that people labelled &#8216;configuration manager&#8217; in the software business tend to be qualified to do build management. This is not sufficient justification for putting build management under the CM (or even SCM) banner.</p>
<p>Even if you claim justification for putting these other disciplines under the CM banner by saying something along the lines, &#8216;oh, well CM does not &#8216;do&#8217; the builds necessarily, they&#8217;re just responsible for ensuring they are done&#8217; I say that road leads to perdition. You could justify the inclusion of almost anything you want under the CM discipline using that argument, and you&#8217;d be wrong every time.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/'>ITSLM</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a> Tagged: <a href='http://blog.principia-it.co.uk/tag/cm/'>CM</a>, <a href='http://blog.principia-it.co.uk/tag/cm-definition/'>cm definition</a>, <a href='http://blog.principia-it.co.uk/tag/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/tag/scm/'>SCM</a>, <a href='http://blog.principia-it.co.uk/tag/scm-definition/'>SCM definition</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/942/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/942/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/942/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=942&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2011/06/28/why-youre-wrong/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2011/06/post1.png" medium="image">
			<media:title type="html">CM as aggregator</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2011/06/post2.png" medium="image">
			<media:title type="html">CM as container</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2011/06/post3.png" medium="image">
			<media:title type="html">CM</media:title>
		</media:content>
	</item>
		<item>
		<title>Building a CM system using Atlassian</title>
		<link>http://blog.principia-it.co.uk/2011/05/07/building-a-cm-system-using-atlassian/</link>
		<comments>http://blog.principia-it.co.uk/2011/05/07/building-a-cm-system-using-atlassian/#comments</comments>
		<pubDate>Sat, 07 May 2011 15:17:30 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Change Management]]></category>
		<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=911</guid>
		<description><![CDATA[I&#8217;m usually somewhat reluctant to make recommendations about specific tools, but every now and then something impresses me so much I feel I should at least draw attention to it. In the course of helping a client look for tools to support their development process I recalled that a couple of years ago I looked [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=911&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m usually somewhat reluctant to make recommendations about specific tools, but every now and then something impresses me so much I feel I should at least draw attention to it.</p>
<p>In the course of helping a client look for tools to support their development process I recalled that a couple of years ago I looked briefly at <a href="http://www.atlassian.com/software/jira/">JIRA</a> when building a change control system for another client. So, I suggested we look at JIRA as a possible tool for this new system.</p>
<p>Having looked around the JIRA site I noticed that Atlassian had also taken <a href="http://www.atlassian.com/software/fisheye/">FishEye</a> (a tool I had used before for providing viewing and analysis tools on repositories) into their stable. And they also support a whole suite of integrated tools that can be used individually or together.</p>
<p>I suggested we take a closer look. So, we set about creating a very simple demonstration of the tools.</p>
<p>I have to say, &#8216;I&#8217;m impressed&#8217;.</p>
<p>These are great looking, well integrated, easy to use, easy to set up and very competitively priced tools. Based on a couple of months playing around with them, I&#8217;d have absolutely no difficulty recommending them to organisations of almost any size—certainly they should be on your list of tools to look at.</p>
<p>Not only are the tools themselves very flexible and easy to configure but the company seems very keen to hear from their customers. They have open beta programmes and actively encourage users to take part in product development (they really do want to know what their customers want). They also provide really low cost licenses; up to 90 days evaluation licenses and then for small teams (or individuals) they offer 10 user licenses for $10. Seriously! This is a brilliant move. It means freelance consultants (such as your&#8217;s truly) can actually use their tools and develop for them, without needing to remortgage the house to obtain licenses. (The tools also don&#8217;t require a massive hardware commitment—in fact I&#8217;m running a system on a Linux virtual machine on my Mac Pro  and it works great for development and creating documentation/training material.)</p>
<p>Oh, and if you&#8217;re a non-profit or open source organisation they will let you have unlimited licenses for free! Genius.</p>
<p>Can&#8217;t be bothered with all that setup? Atlassian offer a hosted solution for many of their tools too. (Although I can&#8217;t comment on these as I have not tried them, but if they&#8217;re anything like as good as what I have seen so far, they&#8217;re probably worth looking at if you want a hosted solution.)</p>
<p>The price apart, the tools really are very good. And if they don&#8217;t do exactly what you want you can always write your own extensions. Atlassian publish comprehensive developer information and the tools all communicate through open web interfaces and all support a plugin architecture (which I understand Atlassian are working hard to make simpler to use).</p>
<p>Another promising sign is that Atlassian &#8216;eat their own dog food&#8217;. They user all their own tools internally and pride themselves on being the guinea pigs for all their product development. Their own website and online documentation is all run through their own products.</p>
<p>Even better! Atlassian let their product speak for itself. No annoying salespeople calling, no pressure to come along and &#8216;do a demo&#8217;. They just provide you with a really simple way to download their product, get an evaluation license, and then let the product do the selling (no kidding I had downloaded, installed and licensed JIRA in about ten minutes—it took about a day to install, license and integrate the entire suite). Brilliant! [Note to all vendors: if you're product is good then let it speak for you. If you're product needs to be explained, then make it better, provide good online documentation, and provide help when it's requested. I understand that some customer like a demo, but many just want to try out your product for themselves. After all, if it can't be setup and used by their own staff, what hope is there for the future? They just end up being highly dependent on your consulting services. Oh. I think I get it now.]</p>
<p>If, as seems likely, the client goes ahead with this solution I&#8217;ll be sure to report back on how these products perform under real life conditions, but for now, <a href="http://altassian.com">go take a look</a>.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/itslm/build-management/'>Build Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/change-management/'>Change Management</a>, <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/reviews/'>Reviews</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/911/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/911/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/911/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=911&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2011/05/07/building-a-cm-system-using-atlassian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Contingent Configuration Management</title>
		<link>http://blog.principia-it.co.uk/2011/03/21/contingent-configuration-management/</link>
		<comments>http://blog.principia-it.co.uk/2011/03/21/contingent-configuration-management/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 10:01:55 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=866</guid>
		<description><![CDATA[We find, among all the terminology in the configuration management arena, many terms being added to the basic CM acronym; Agile CM, Product CM, Software CM, Traditional/Classic CM, and so on. Well, I&#8217;d like to offer my own—Contingent CM. The problem with many of the other terms is their absolutism; &#8216;this is the right way&#8217;, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=866&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We find, among all the terminology in the configuration management arena, many terms being added to the basic CM acronym; Agile CM, Product CM, Software CM, Traditional/Classic CM, and so on. Well, I&#8217;d like to offer my own—Contingent CM.</p>
<p>The problem with many of the other terms is their absolutism; &#8216;this is the right way&#8217;, a sort of &#8216;here is the solution, not what was the problem&#8217; attitude. I say, &#8216;no&#8217;. I say that the correct approach is always &#8216;it depends&#8217;.</p>
<p>Contingent CM emphasises that there is no one solution, there is no &#8216;best&#8217; way to do CM and the core CM discipline is independent of the method, process, approach or dogma to which it is being applied. You should learn the underlying principles of CM, then you can apply it in any arena.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/866/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/866/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/866/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=866&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2011/03/21/contingent-configuration-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>CM discussion group</title>
		<link>http://blog.principia-it.co.uk/2011/02/17/cm-discussion-group/</link>
		<comments>http://blog.principia-it.co.uk/2011/02/17/cm-discussion-group/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 17:19:08 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Body of Knowledge]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[ITSLM]]></category>
		<category><![CDATA[Parallel Development Principles]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=844</guid>
		<description><![CDATA[At the end of last year I ran an experimental &#8216;live discussion&#8217; under the banner &#8216;The Watercooler&#8217;. This was intended to help spark conversation with the hope of encouraging people of all abilities to contribute to the body of knowledge wiki. Given the modest success of that experimental session, I have planned a series of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=844&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At the end of last year I ran an experimental &#8216;live discussion&#8217; under the banner &#8216;The Watercooler&#8217;. This was intended to help spark conversation with the hope of encouraging people of all abilities to contribute to the <a href="http://itslmbok.com/wiki">body of knowledge wiki</a>. </p>
<p>Given the modest success of that experimental session, I have planned a series of similar events (details can be found <a href="http://www.principia-it.co.uk/community/upcoming-events">here</a>). </p>
<p>Currently planned are:</p>
<ul>
<li>&#8220;What is a configuration Item?&#8221; &#8211; Friday 4th March 2011</li>
<li>&#8220;Version control for beginners&#8221; &#8211; Friday 18th March 2011</li>
<li>&#8220;Branching. What, when, and how&#8221; &#8211; Thursday 31st March 2011</li>
<li>&#8220;Parallel development. What, when and how&#8221; &#8211; Friday 15th April 2011</li>
<li>&#8220;Selling configuration management&#8221; &#8211; Friday 29th April 2011</li>
</ul>
<p>All meetings are free to attend and are currently planned for 20:00GMT (There really is no good time that covers all time-zones. If enough people ask I may repeat meetings at other times to cover other timezones—better yet, why not organise one yourself <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  .)</p>
<p>I&#8217;ll certainly be chatting for half an hour at least (if no one else steps up to contribute I can certainly talk about any of these topics for at least that long <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) but I&#8217;ve allowed two hours for each session and am happy for sessions roll on beyond this if there is enough interest.</p>
<p>These are informal discussion groups intended for any level of expertise (although obviously some are aimed primarily at beginners I would welcome input from experienced users too). I will probably make some opening remarks to get things rolling, but I am hoping enough people are interested to make for some real discussion.</p>
<p>You can contribute through the text &#8216;chat&#8217; on the site or better yet if you have a mic (and video camera if you like) you can step up and present your ideas that way.</p>
<p>Come along if you have questions, are just interested in the topic, or have something to say on the topic being discussed.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/itslm/body-of-knowledge/'>Body of Knowledge</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/'>ITSLM</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/parallel-development-principles/'>Parallel Development Principles</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/version-control/'>Version Control</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/844/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/844/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/844/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=844&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2011/02/17/cm-discussion-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>When is a change a change?</title>
		<link>http://blog.principia-it.co.uk/2010/06/12/when-is-a-change-a-change/</link>
		<comments>http://blog.principia-it.co.uk/2010/06/12/when-is-a-change-a-change/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 17:27:04 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[Build Management]]></category>
		<category><![CDATA[Change Management]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Version Control]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[CM]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[SCM]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=624</guid>
		<description><![CDATA[A change can be viewed in two ways; conceptually or literally. What I mean by this distinction is that when I say the requested change is to &#8220;correct spelling mistakes in the poem&#8221; I am specifying conceptually what the change is to achieve (and after the fact, what the change achieved). On the other hand [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=624&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A change can be viewed in two ways; conceptually or literally. What I mean by this distinction is that when I say the requested change is to &#8220;correct spelling mistakes in the poem&#8221; I am specifying conceptually what the change is to achieve (and after the fact, what the change achieved). On the other hand we are used to dealing with change in a more literal sense of as set of revisions, for example, &#8220;I edited file1 in this change&#8221;. In this post I discuss some of the issues and implications of these two views of change.<span id="more-624"></span></p>
<p>Let&#8217;s put this into concrete terms.</p>
<p>Suppose the original change request is something like, &#8220;correct the spelling mistakes in the poem&#8221; and the poem is held in two files. </p>
<p><span class="code">file1.txt</span> contains the following text.<br />
<pre class="brush: plain;">Mary hard a litl lamb,
It's fles was wite as snow,</pre></p>
<p>And <span class="code">file2.txt</span> contains the following text.<br />
<pre class="brush: plain;">And everywere that Mary went,
That lam was sure to go.</pre></p>
<p>&nbsp;</p>
<p>We correct these two file to the following using a change record <span class="code">CR1</span>.<br />
<pre class="brush: plain;">Mary hard a little lamb.
It's fleece was white as snow</pre><br />
And<br />
<pre class="brush: plain;">And everywhere that Mary went,
That lamb was sure to go.</pre></p>
<p>&nbsp;</p>
<p>Here then is my first build (<span class="code">build1</span>).<br />
<div id="attachment_742" class="wp-caption aligncenter" style="width: 310px"><a href="http://principiait.files.wordpress.com/2010/06/buildintegrity.png"><img src="http://principiait.files.wordpress.com/2010/06/buildintegrity.png?w=300&#038;h=266" alt="" title="Initial build" width="300" height="266" class="size-medium wp-image-742" /></a><p class="wp-caption-text">Initial build: conceptual and literal change equivalent</p></div><br />
This build has integrity because it contains the content of all valid changes nominated to the build as <em>known at the time the build was constructed</em>, but it is not correct because <span class="code">CR1</span> fails to satisfy the original request to &#8220;correct the spelling mistakes in the poem&#8221;.</p>
<p>So, not bad, but the still have &#8220;hard&#8221; instead of &#8220;had&#8221; in the first line of <span class="code">file1.txt</span>. This does not change the integrity of <span class="code">build1</span>, but does make another build (<span class="code">build2</span>) necessary to include a correction to the erroneous work submitted into <span class="code">build1</span>. </p>
<p>There are different ways we might choose to track the correction of the defect arising from <span class="code">build1</span>.</p>
<table class="wit indent">
<tbody>
<tr>
<td>Reuse&nbsp;CR1</td>
<td>
<p>Regress <span class="code">CR1</span> to a lifecycle state where the developer can add to it. Allow changes to be associated with <span class="code">CR1</span>, and then resubmit <span class="code">CR1</span> into a new build.</p>
<p>This approach, while simple, may be misleading. When revisiting <span class="code">build1</span> we need to be sure that we look at <span class="code">CR1</span> as it was when the build was executed, not as it is after the correction is applied. This can make metrics collection unnecessarily complex.</p>
</td>
</tr>
<tr>
<td>Create a new&nbsp;change</td>
<td>
<p>Treat the defect resolution as a separate change. This could be a new change or a special &#8216;defect&#8217; record.</p>
<p>This has the benefit of keeping track of the revisions that correct the defect in the original change separate to the original change. A feature potentially useful in simplifying metrics collection.</p>
</td>
</tr>
<tr>
<td>Create a separate but subsidiary change</td>
<td>
<p>We create a separate change record to track the specific revisions created to correct the defect, but we relate it to the original change request in a child-parent relationship (the original change being the parent.</p>
<p>This has the benefit of keeping track of the specific revisions that correct the defect while maintaining a link to the original change.</p>
</td>
</tr>
</tbody>
</table>
<p>Each approach has its own merits but, from the perspective of build integrity, they share an the important feature; when dealing with the conceptual change &#8220;correct the spelling mistakes in the poem&#8221;, they are semantically equivalent. For <span class="code">build2</span> to have integrity it must include both the revisions associated with the original change and all new revisions associated with the correction to the change, regardless of how that correction is controlled.</p>
<p>We correct the defect in <span class="code">build1</span> with an additional change to <span class="code">file1.txt</span> to produce the following.<br />
<pre class="brush: plain;">Mary had a little lamb,
It's fleece was white as snow,</pre></p>
<p>The following illustration shows <span class="code">build2</span> (in this case I have re-used <span class="code">CR1</span> to correct the defect). I should be obvious that missing any revision associated with <span class="code">CR1</span> has the potential to break the build&#8217;s integrity (we may have only part of <span class="code">CR1</span> in the build).<br />
<div id="attachment_745" class="wp-caption aligncenter" style="width: 310px"><a href="http://principiait.files.wordpress.com/2010/06/buildintegrityfix.png"><img src="http://principiait.files.wordpress.com/2010/06/buildintegrityfix.png?w=300&#038;h=234" alt="" title="Second build using reworked change" width="300" height="234" class="size-medium wp-image-745" /></a><p class="wp-caption-text">Fix Build: Conceptual change implemented with reworked literal change</p></div><br />
Using a separate change record to control the defect does not really solve this problem, it merely makes it less apparent. Consider the following illustration, it shows the same situation but this time I have used another change record (<span class="code">D1</span>) to control the defect.<br />
<div id="attachment_744" class="wp-caption aligncenter" style="width: 310px"><a href="http://principiait.files.wordpress.com/2010/06/buildintegrityfix1.png"><img src="http://principiait.files.wordpress.com/2010/06/buildintegrityfix1.png?w=300&#038;h=234" alt="" title="Second build with separate change" width="300" height="234" class="size-medium wp-image-744" /></a><p class="wp-caption-text">Fix build: Conceptual change now implemented with two literal changes</p></div><br />
Although I can exclude the defect resolution from the build configuration and, in this special case, claim to have maintained build integrity, it is difficult to justify semantically as I have not really included the sum of the conceptual change — the change is supposed to achieve a specific effect upon the system (the spelling correction), something it failed to do with the original literal <span class="code">CR1</span> in <span class="code">build1</span> but we hope it does with the combination of literal changes managed by change records <span class="code">CR1</span> and <span class="code">D1</span>.</p>
<p>And this is the point. Yes, the literal changes <span class="code">CR1</span> and <span class="code">D1</span> are, in one sense, changes. In practical terms though each on its own fails to achieve the objective of the original change request and consequently they are little more than sets of revisions. The two literal changes controlled by records <span class="code">CR1</span> and <span class="code">D1</span>, taken together, achieve the original goal of the change request &#8220;correct spelling mistakes in the poem&#8221;. It is this latter type of change (what I have called conceptual change) that is more interesting to configuration management and build integrity is maintained through these conceptual changes rather than the less significant literal changes.</p>
<p>This distinction between the conceptual change and literal change becomes increasingly important as we consider configuration integrity, a subject I shall discuss in more detail in subsequent posts.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/itslm/build-management/'>Build Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/change-management/'>Change Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/version-control/'>Version Control</a> Tagged: <a href='http://blog.principia-it.co.uk/tag/build/'>build</a>, <a href='http://blog.principia-it.co.uk/tag/change/'>change</a>, <a href='http://blog.principia-it.co.uk/tag/cm/'>CM</a>, <a href='http://blog.principia-it.co.uk/tag/development-2/'>development</a>, <a href='http://blog.principia-it.co.uk/tag/scm/'>SCM</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/624/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/624/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/624/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=624&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/06/12/when-is-a-change-a-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/06/buildintegrity.png?w=300" medium="image">
			<media:title type="html">Initial build</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/06/buildintegrityfix.png?w=300" medium="image">
			<media:title type="html">Second build using reworked change</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/06/buildintegrityfix1.png?w=300" medium="image">
			<media:title type="html">Second build with separate change</media:title>
		</media:content>
	</item>
		<item>
		<title>Toward a CM Ontology</title>
		<link>http://blog.principia-it.co.uk/2010/05/22/toward-a-cm-ontology/</link>
		<comments>http://blog.principia-it.co.uk/2010/05/22/toward-a-cm-ontology/#comments</comments>
		<pubDate>Sat, 22 May 2010 10:39:51 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Information Management]]></category>
		<category><![CDATA[SCM Tool]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[CM]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=675</guid>
		<description><![CDATA[As I suggested in a previous post, I think the future of CM (and most especially SCM) lies substantially with the semantic web. My reasoning is simple; CM is about information management and this information needs to be shared, controlled and updated across increasingly more diverse organisations and systems. To provide this facility we need [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=675&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I suggested in a <a href="http://blog.principia-it.co.uk/2010/04/07/absence-cm-tool-identities-and-some-thoughts-on-the-future-of-cm/">previous post</a>, I think the future of CM (and most especially SCM) lies substantially with the <a href="http://semanticweb.org/wiki/Main_Page">semantic web</a>. My reasoning is simple; CM is about information management and this information needs to be shared, controlled and updated across increasingly more diverse organisations and systems. To provide this facility we need a <em>lingua franca</em>, a common means to control and consolidate information between disparate sources. The semantic web provides the means to achieve this information management and exchange.</p>
<p>The great advantage of semantic web over efforts such as the now defunct Application Lifecycle Framework (<a href="http://www.eclipse.org/archived/index.php">ALF</a>) is that it requires no agreement between vendors (beyond using semantic web technology). The weakness of efforts such as ALF is always that they demand buy-in from the main tool vendors. A substantial number need to agree to develop and support the new standard.</p>
<p>Certainly semantic web is no panacea, but at least if Vendor A chooses one semantic representation of CM information and Vendor B chooses another they can still communicate by creating a correspondence rule set between the two representations (a little like XSLT can transform one XML into another — only a little though, semantic web has much more to offer).</p>
<p>So vendors need to agree to use and provide semantic web representations for CM information? No, not really. Most tools provide APIs that would allow this information to be interpreted from, or added to, any existing tool. Certainly a non-trivial effort, but one that is at least feasible. Better still, if multiple implementations are created for any tool these can again be consolidated using semantic web techniques.</p>
<p>The real power of semantic web technology comes from two sources; the abstraction of information semantics, and the ability to draw inferences from this information. Once you have an ontology, some inference rules and semantic relationships between ontologies, your inference rules will work across ontologies — neat. What does all the gobbledy-gook mean? It means that if Vendor A develops an ontology with a set of inference rules (rules for extracting more information from the underlying information) then Vendor B can map their ontology onto Vendor A&#8217;s and use Vendor A&#8217;s inference rules too. Actually it&#8217;s even better. User X can extend the rules and have them apply to Vendor A and/or Vendor B&#8217;s information sets equally, even if the original inference rules were designed for only Vendor A.</p>
<p>Brilliant. Problem solved then? Sadly, no. Although this all offers promise of a way forward there remains a lot of work to establish these semantic descriptions and, as many have discovered before, agreeing on the precise meaning of each semantic element is nontrivial in its own right. Not that this should stop us attempting the task.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/information-management/'>Information Management</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a> Tagged: <a href='http://blog.principia-it.co.uk/tag/cm/'>CM</a>, <a href='http://blog.principia-it.co.uk/tag/ontology/'>ontology</a>, <a href='http://blog.principia-it.co.uk/tag/scm/'>SCM</a>, <a href='http://blog.principia-it.co.uk/tag/semantic-web/'>Semantic Web</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/675/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/675/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/675/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=675&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/05/22/toward-a-cm-ontology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>Absence, CM Tool, identities, and some thoughts on the future of CM</title>
		<link>http://blog.principia-it.co.uk/2010/04/07/absence-cm-tool-identities-and-some-thoughts-on-the-future-of-cm/</link>
		<comments>http://blog.principia-it.co.uk/2010/04/07/absence-cm-tool-identities-and-some-thoughts-on-the-future-of-cm/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 18:00:34 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[ITSLM]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[SCM Tool]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=658</guid>
		<description><![CDATA[Some of you may have noticed a bit of an hiatus in my posts. I&#8217;ve been a bit under the weather, feeling lethargic and run down, and not in a good frame of mind for writing. Lucky you, I am in the mood now. Remember a few posts back I mentioned working on a CMS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=658&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some of you may have noticed a bit of an hiatus in my posts. I&#8217;ve been a bit under the weather, feeling lethargic and run down, and not in a good frame of mind for writing. Lucky you, I am in the mood now.</p>
<p>Remember <a href="http://blog.principia-it.co.uk/2010/02/11/cms-tool-high-level-architecture/">a few posts back</a> I mentioned working on a CMS reporting tool? Well, I&#8217;ve been working with a client on a tool for managing parallel development, which is closely related to the type of reporting I had in mind for the CMS reporting tool. The client&#8217;s focus is on Dimensions, but in the interests of creating a flexible system I&#8217;ve been designing with other underlying in mind (although, as is often the way, timescales and pragmatism mean the implementation is sometimes more tool specific than the original design). The result of this has been some extended mental gymnastics that have resulting in some useful and hopefully interesting thoughts that I would like to share with you now.</p>
<p>The parallel development tool needs to both report, analyse and, ultimately, update the host SCM database. There are a number of special considerations that I won&#8217;t go into now, but these created much candle burning and banging of my head on desks, walls and other solid objects as I struggled to resolve some apparently simple problems that turned out to be rather tricky. (The sad thing is, as is often the case with these things, once I had an answer it turned out to be deceptively simple.) The upshot of all this cranial damage covers a wide variety of topics, too many for a single post, but we can make a start.</p>
<h2>Identification</h2>
<p>How do we identify things?</p>
<p>Each tool has its own method of identifying the things it controls. In Dimensions items are ultimately identified by some sort of unique specification; files are identifies by an Object Spec, projects (worksets) are identified by Project Specs and so on. Each of these Specs. provides a unique reference within the context of a specific Dimension base database. Subversion identifies things by their position in it virtual file system; path and revision. Again, Subversion references are qualified by the repository in which they are held. Since Subversion repositories can be referred to by any number of methods there is no one unique &#8216;name&#8217; for an item in Subversion once you step beyond the bound of the repository (I can, for example, use several host names to refer to the same repository).</p>
<p>With this in mind, how can we uniquely refer to a single controllable entity (I shall  use the term &#8216;Artefact&#8217; to represent a uniquely identifiable thing). For simplicity we&#8217;ll focus our attention on a file, after all with software configuration management (SCM) this is the most common sort of Artefact we want to control. As I discussed briefly in <a href="http://blog.principia-it.co.uk/2010/03/17/items-have-history/">a previous post</a>, files exist along two histories; the Revision History (in which new Artefacts are created for each revision of the file), and the Lifecycle History (in which an Artefact may undergo change without changing its revision, without becoming a new Artefact). Dimensions does a nice job of recording these two histories, but our challenge here is to differentiate identities.</p>
<p>Do we assign the identity to the Artefact&#8217;s revisions, or do we assign the identity to each Lifecycle historic state?</p>
<p>To illustrate, consider <span class="code">file1.txt</span>. This file will be subject to the simple lifecycle illustrated below. </p>
<div id="attachment_662" class="wp-caption aligncenter" style="width: 206px"><a href="http://principiait.files.wordpress.com/2010/04/very-simple-lifecycle.png"><img src="http://principiait.files.wordpress.com/2010/04/very-simple-lifecycle.png?w=450" alt="" title="Very simple lifecycle"   class="size-full wp-image-662" /></a><p class="wp-caption-text">A very simple lifecycle</p></div>
<p>Starting in the state <span class="code">NEW</span> we assign the <span class="code">file1.txt</span> Artefact a revision of <span class="code">1</span>. The Artefacts two histories and its change log are illustrated below.</p>
<div id="attachment_665" class="wp-caption aligncenter" style="width: 460px"><a href="http://principiait.files.wordpress.com/2010/04/simple-change-log1.png"><img src="http://principiait.files.wordpress.com/2010/04/simple-change-log1.png?w=450&#038;h=231" alt="" title="Simple Change Log" width="450" height="231" class="size-full wp-image-665" /></a><p class="wp-caption-text">file1.txt - a simple change log</p></div>
<p>The developer chooses to change the original <span class="code">file1.txt</span> but while in lifecycle state <span class="code">NEW</span> we do not require a new Artefact, the resulting edited version of <span class="code">file1.txt</span> remains revision <span class="code">1</span>. The lifecycle state also remains <span class="code">NEW</span>, so although we have travelled the <span class="code">In-place Edit</span> path in the lifecycle, the result is an edit event but no change in either the state or the revision of <span class="code">file1.txt</span>. Using state and revision to identity the Artefacts (the one before the edit and the one after the edit) is therefore not sufficient to account for the two different edited versions of <span class="code">file1.txt<span>.</p>
<p>We could simple state that we are not interested in such edits or we could also simply assign some &#8216;point&#8217; revision to distinguish these intra-state revisions. Both of these options have been adopted by tools in the past, but when trying to generalise a solution we need to accommodate as many possibilities as we can. Generalising a solution should allow us to sit atop any underlying implementation. To arrive at a generalisation we need to explore the problem domain further.</p>
<h3>Derived Identities</h3>
<p>Perhaps the answer lies in <a href="http://valerieaurora.org/monkey.html">content-based addressing</a> (CBA). With CBA we identify Artefacts by creating a signature based upon intrinsic attributes of the item itself. This works very well for electronic data (in our case, files). There are many CBAs available and they are widely used in peer-to-peer systems for identifying files. The current darling of the CBA world is the <a href="http://en.wikipedia.org/wiki/SHA-2">SHA-2</a> family of hashing functions. These hashing functions process the stream of bytes in a file (or any other source of data), producing a single &#8216;summary&#8217; string of characters which is much shorter than the original (often 64, 128, or 256 bits long).</p>
<p>CBA has huge appeal for our purpose in uniquely identifying an Artefact. A CBA is almost guaranteed to be unique to the data being encoded (I say almost because any CBA will ultimately collide — two data sets produce the same hash — since a potentially infinite set of data is being mapped onto a finite set of hash codes). A CBA is intimately related to the Artefact&#8217;s characteristics and so no assignment authority is required (see <a href="#Assigned%20Identities">Assigned Identities</a> a little later). This also means that given an Artefact we can work out its unique identity, providing we know the hash function and the attributes used for identification (a files data, for example).</p>
<p>CBAs work very well for electronic data. Unfortunately, CBAs do not work well for the general case. How, for example, might we assign a CBA to a physical Artefact?</p>
<p><a name="Assigned Identities"></a><br />
<h3>Assigned Identities</h3>
<p>This brings us to assigned identities. An assigned identity is one that, unsurprisingly, is assigned by some agent. Examples of assigned identities are legion. The <a href="http://en.wikipedia.org/wiki/Isbn">ISBN</a> you find on any book you buy is an assigned identity, not for that specific book, but for the data and form of that book (hardback version of the first edition of XYZ). Similarly, almost all products have a <a href="http://en.wikipedia.org/wiki/Universal_Product_Code">UPC</a> (Universal Product Code) — the one that you find encoded in bar codes. Again, UPCs are assigned to a &#8216;type&#8217; rather than the specific item; so the UPC code 50036 90803 refers to JBL Duet speakers, but not to the specific pair of JBL speakers sitting on my desk.</p>
<p>To ensure the uniqueness of assigned identities two conditions must be met: the scope of the identity must be well defined (ISBNs apply only to books, UPCs apply only to products, and not, for example, to ideas or patents), and there must be some central agency who defines and issues codes (or at least issues blocks of codes to be issued by approved agents).</p>
<p>Assigned identities are not derived from the Artefact that they represent, so there is no way, when presented with an Artefact, to establish that Artefact&#8217;s identity, other than by reference to some catalogue to see whether it already has an assigned identity. This could be a very long process if we relied on the data as a whole. ISBNs for example, can be looked up using the books format, title, and edition. These three attributes for the key by which the ISBN can be referenced in a catalogue. This presumes the existence and universal availability of a definitive catalogue.</p>
<p>Another form of assigned identity is the <a href="http://en.wikipedia.org/wiki/UUID">Universally Unique Identifier</a> (UUID). UUIDs also use hashing functions to condense a set of attributes to a string of 128 bits, but the source data is not the file&#8217;s content but a series of attributes that are themselves (hopefully) unique. There are many implementations of the UUID scheme and they use different attributes to generate the UUID itself. Like CBA, a UUID is <em>almost</em> guaranteed to be unique — certainly sufficiently unique for most practical purposes.</p>
<h3>So where does all this leave us?</h3>
<p>An identity based on CBA is great for known data sets because the identity is generated from the data itself. We can therefore recreate the identity independent of any central authority. We can take a file and work out its unique identity and then use this unique identity within our tools. This, as we shall see in coming weeks, has significant advantages to resolving configuration data across distributed databases.</p>
<p>The problems with CBAs are that they do not translate well into the physical realm (we need to establish some characteristic of the physical object that can be uniquely selected for encoding into data and subsequently used to generate the CBA), and they are quite costly to generate (we need to read and process the entire data set to create the CBA).</p>
<p>Assigned identities that rely on an assigning authority (like the ISBN) require significant organisation and coordination. Each assigning authority must be organised to ensure that each identity is assigned uniquely. And here we run into another question related to the other form of assigned identity, UUIDs.</p>
<p>What do we mean by &#8216;uniquely assigned&#8217;? Suppose I create a file containing the text &#8216;The quick brown fox jumped over the lazy dog&#8217; and I assign it a UUID. Some time later, you create a file with identical content and assign it a UUID. The two UUIDs will be different. Are we then dealing with two Artefacts?</p>
<p>In one sense we are. They are two distinct incarnations of the file. But in any useful sense, we are not. They are in fact the same file. Just as if I took my original file and copied it to another location in my file system I would consider it the same file. Or if you copied your file to my file system I would be unable to distinguish your file from mine. They are the same &#8216;thing&#8217;, but we have assigned different identities.</p>
<p>This is the problem with all assigned identities; how to ensure that the &#8216;thing&#8217; being identified has no identity already assigned.</p>
<h2>Is there an answer?</h2>
<p>Yes and no. The work currently underway with the <a href="http://semanticweb.org/wiki/Main_Page">semantic web</a> project (quick overview <a href="http://en.wikipedia.org/wiki/Semantic_Web">here</a>) offers some hope. There is still a reliance on &#8216;authority&#8217; to assign identities, but I think there is much to be learned from the general approach and using a combination of derived and assigned identities will allow easy reconciliation of information between CM datasources. I see the problem of configuration management (and particularly identification) as a special case of identification within the semantic web project.</p>
<p>This is a fascinating area (well, it is to me) of research and one that I believe will be increasingly important as CM moves into &#8216;the cloud&#8217;. As the distinction between CM data under your direct control and that controlled by proxy through service providers and third parties is eroded the need to consolidate CM information across disparate tool sets and managed by different agencies will become increasingly important. This is a problem that we must solve.</p>
<p>I spent some time a couple of years back considering <a href="http://en.wikipedia.org/wiki/Topic_Maps">Topic Maps</a> and <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">Resource Description Framework</a> (RDF) as possible SCM schema. Although they are functionally equivalent, RDF seems to have won out in the standards battle. If you are interested in seeing where I think information management is going in the 21st century (and where CM must also go), check out the semantic web.</span></span></p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/'>ITSLM</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/658/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/658/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/658/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=658&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/04/07/absence-cm-tool-identities-and-some-thoughts-on-the-future-of-cm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/04/very-simple-lifecycle.png" medium="image">
			<media:title type="html">Very simple lifecycle</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/04/simple-change-log1.png" medium="image">
			<media:title type="html">Simple Change Log</media:title>
		</media:content>
	</item>
		<item>
		<title>Items have history</title>
		<link>http://blog.principia-it.co.uk/2010/03/17/items-have-history/</link>
		<comments>http://blog.principia-it.co.uk/2010/03/17/items-have-history/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 18:02:25 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Configuration Management]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[SCM Tool]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Version Control]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=628</guid>
		<description><![CDATA[As those of you who have been following this blog for any time will know I am currently looking in some detail at parallel development, specifically how it can be managed safely by non-expert version managers. I have used parallel development with much success on many projects but codifying my knowledge into a tool is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=628&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As those of you who have been following this blog for any time will know I am currently looking in some detail at <a href="http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/parallel-development-theory-and-practice/">parallel development</a>, specifically how it can be managed safely by non-expert version managers. I have used parallel development with much success on many projects but codifying my knowledge into a <a href="http://blog.principia-it.co.uk/category/development/scm-tool/">tool</a> is proving challenging — and interesting too. In this post I will be considering item histories.<span id="more-628"></span></p>
<p>It is easy to become entangled in confused terminology when discussing items and item histories. To avoid such confusion I will define an Item as a specific version of something we control (most commonly in software configuration management these &#8216;things&#8217; are files, so for the remainder of this post I will use files to illustrate, but remember that an Item could be anything we version control).</p>
<p>With this definition in mind we can define one type of history as a set of Items related to one another by a predecessor/successor relationship. This is the most common history one becomes familiar with, the revision history.</p>
<p>But there is another history worth considering. The process of managing an Item may involve  the Item passing through a number of states. We commonly refer to these states as a lifecycle. An Item may be created into the NEW state, then be edited by a developer in the DEVELOP state. Once completed the developer may submit the item to the REVIEW state for a code review. The item may them pass through various states before finally reaching the RELEASED state. The lifecycle history is independent of the Item revision history.</p>
<p>To illustrate the difference between the lifecycle history and the revision history consider <span class="code">file1.txt</span> shown below. This file has three revision Items; <span class="code">1</span>, <span class="code">2</span>, and <span class="code">3</span>.</p>
<p><a href="http://principiait.files.wordpress.com/2010/03/simplerevisionhistory.png"><img src="http://principiait.files.wordpress.com/2010/03/simplerevisionhistory.png?w=450" alt="" title="file1.txt Revision History"   class="aligncenter size-full wp-image-634" /></a></p>
<p>Zooming in to the <span class="code">file1.txt</span> revision <span class="code">3</span> Item we see the following lifecycle history.</p>
<p><a href="http://principiait.files.wordpress.com/2010/03/simpleiifecyclehistory1.png"><img src="http://principiait.files.wordpress.com/2010/03/simpleiifecyclehistory1.png?w=450&#038;h=265" alt="" title="file1.txt revision 3 Lifecycle History" width="450" height="265" class="aligncenter size-full wp-image-640" /></a></p>
<p><span class="code">file1.txt</span> revision <span class="code">3</span> passed through all of these lifecycle states, passing through the DEV-TEST states twice as a defect was found and resolved.</p>
<p>Version control tools track the revision history but seldom the Item lifecycle history. Configuration management tools, such as Dimensions, capture both the revision history and the lifecycle history.</p>
<p>Any generalised tool for analysing and reporting configurations from as wide a variety of sources must deal with these different histories.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/'>Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/version-control/'>Version Control</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/628/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/628/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/628/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=628&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/03/17/items-have-history/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/03/simplerevisionhistory.png" medium="image">
			<media:title type="html">file1.txt Revision History</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/03/simpleiifecyclehistory1.png" medium="image">
			<media:title type="html">file1.txt revision 3 Lifecycle History</media:title>
		</media:content>
	</item>
		<item>
		<title>In the beginning&#8230;</title>
		<link>http://blog.principia-it.co.uk/2010/02/18/in-the-beginning/</link>
		<comments>http://blog.principia-it.co.uk/2010/02/18/in-the-beginning/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:00:33 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Parallel Development Principles]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[SCM Tool]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=574</guid>
		<description><![CDATA[&#8230;was the definition. In this article I am going to lay out my definitions for some terminology that will become increasingly important as I develop my CMS model. The terms I will be discussing are as follows. Stream Branch Configuration Item Revision Configuration Component Repository Configuration Management Database Record At this point I caution the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=574&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8230;was the definition.</p>
<p>In this article I am going to lay out my definitions for some terminology that will become increasingly important as I develop my CMS model.</p>
<p>The terms I will be discussing are as follows.</p>
<ul>
<li>Stream</li>
<li>Branch</li>
<li>Configuration Item</li>
<li>Revision</li>
<li>Configuration</li>
<li>Component</li>
<li>Repository</li>
<li>Configuration Management Database</li>
<li>Record</li>
</ul>
<p>At this point I caution the reader that these definitions are deliberately quite loose and informal. Each will be expanded, refined, rewritten and formalised as I work through articles in this blog. For now, my working definitions are as follows.</p>
<h3>Project</h3>
<p>A coordinated effort usually conducted by several individuals to deliver a Product. Project describes the totality of planning and activity requires to gather requirements and interpret these into Product.</p>
<h3>Product</h3>
<p>That which is to be delivered by a Project. Products include, but are not limited to:</p>
<ul>
<li>Executable software</li>
<li>Documents — manuals, design documents, requirements, installation guides, administration and maintenance manuals</li>
<li>Hardware — computers, network components, any other physical components required as part of the Product</li>
<li>Training materials — exercise version of data or system components, trainer presenation, training the trainer material, sandbox systems for trainees</li>
<li>Source code — when developing for a 3rd party. Source code may also be a deliverable in interpreted languages or when delivering web content such as HTML.</li>
<li>Media — video, graphics, audio</li>
</ul>
<h3>Stream</h3>
<p>Projects often consist of more than one piece of development. A common strategy is to manage these pieces of development as a sort of sub-project. Timescales of these Streams are overlapped to allow the project to compress its overall timescale.</p>
<h3>Branch</h3>
<p>An implementation technique used in development to manage simultaneous changes to common items. In software development Branches are common and used to allow two or more developers to work on the same source code simultaneously.</p>
<h3>Configuration Item</h3>
<p>A configuration item is an item within the configuration management system that is the focus for change management.</p>
<h3>Revision</h3>
<p>Each time an item is modified and submitted into version control, a new revision is created. In this way an item&#8217;s history can be traced by looking back through the sequence of revisions.</p>
<h3>Delta</h3>
<p>The difference between two revisions.</p>
<h3>Configuration</h3>
<p>A specific arrangement of item revisions.</p>
<h3>Component</h3>
<p>An item that is subject to version control, but is not elevated to the status of a configuration item.</p>
<h3>Repository</h3>
<p>A safe store for item revisions.</p>
<h3>Configuration Management Database</h3>
<p>A database containing information about each item revision and their relationships to one another and to records.</p>
<h3>Record</h3>
<p>A set of data that is subject to a process or workflow but not necessarily version control. Records normally carry information used to account for an item&#8217;s current disposition or the current state of a process or workflow.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/parallel-development-principles/'>Parallel Development Principles</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=574&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/02/18/in-the-beginning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>
	</item>
		<item>
		<title>CMS Tool: High-level architecture</title>
		<link>http://blog.principia-it.co.uk/2010/02/11/cms-tool-high-level-architecture/</link>
		<comments>http://blog.principia-it.co.uk/2010/02/11/cms-tool-high-level-architecture/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 18:00:57 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
				<category><![CDATA[CMCrossroads]]></category>
		<category><![CDATA[Plain Old Blog]]></category>
		<category><![CDATA[SCM Tool]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[CM Tools]]></category>

		<guid isPermaLink="false">http://blog.principia-it.co.uk/?p=578</guid>
		<description><![CDATA[Continuing my musings about a universal configuration management tool I&#8217;ve drafted the basic architecture. This is summarised in the following diagram (after the break). This simple architecture serves to isolate the key levels of abstraction in the CMS. As with all multi-layer architectures the important feature is that each layer creates an abstraction then allows [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=578&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Continuing my musings about a universal configuration management tool I&#8217;ve drafted the basic architecture. This is summarised in the following diagram (after the break).<span id="more-578"></span><br />
<div id="attachment_579" class="wp-caption aligncenter" style="width: 460px"><a href="http://principiait.files.wordpress.com/2010/02/cm-pard-dia-018-cm-tools-architecture.png"><img src="http://principiait.files.wordpress.com/2010/02/cm-pard-dia-018-cm-tools-architecture.png?w=450&#038;h=461" alt="" title="CM Tool Architecture" width="450" height="461" class="size-full wp-image-579" /></a><p class="wp-caption-text">CM Tool Architecture</p></div><br />
This simple architecture serves to isolate the key levels of abstraction in the CMS.</p>
<p>As with all multi-layer architectures the important feature is that each layer creates an abstraction then allows layers it serves to use a stable interface. The CM Data layer, for example, will need to deal directly with individual the tools we wish to interrogate. (Recall that I am currently only proposing a tool that analyses and reports the content of the underlying tools, writing a tool to also update the content of those tools adds a whole new set of challenges to the problem. Challenges I have no desire to deal with right now, but which will be served well by this architecture nonetheless.) The CM Data layer presents one, hopefully, stable interface to the CM Model, so the CM Model will not have to be changed is a tool changes its interface (changing its database schema, command line, API, or whatever method we use to access it).</p>
<h2>CM Data</h2>
<p>This layer presents a common interface to the CM tools that the CMS is fronting. CM Data can be divided into two categories.</p>
<ul type="none">
<li><b>Item library</b> — this holds the items the CM tools store; files, directories, symbolic links, etc.</li>
<li><b>Data <i>about</i> items</b> — this is data such as relationships between items, attributes of items (owner, author, date modified, and so on).</li>
</ul>
<p>The CM Data layer will provide methods for accessing these data. Items will be held in a <span class="code">Repository</span> and the data about these items will be held in a <span class="code">CMDatabase</span>.<br />
All version control tools are a <span class="code">Repository</span> (they store items) and provide at least some data about those items (author, modified date, ancestor/successor relationships, contains relationships), so they provide some functions of a <span class="code">CMDatabase</span>. More advanced tools (like Dimensions and Synergy/CM) provide the same <span class="code">Repository</span> functions but they expand these considerably (adding in records such as change requests) and the <span class="code">CMDatabase</span> functionality is also expanded. These points will be revisited and clarified as we proceed.</p>
<h2>CM Model</h2>
<p>The CM Model will provide an abstraction of common CM artefacts (items and their relationships, collections, baselines, branches, changes and so on). The point of this abstraction is to, once again, provide a consistent and stable model to the layers that use the CM Model. So, the code in the Business Logic and Presentation layers is written to use the CM Model rather than the various implementations of these artefacts presented by the underlying tools. This means our system can access, say, an <span class="code">Item</span> without needing to know how it is represented in the tool or even which tool it is held in.</p>
<p>The CM Model is perhaps the most important part of the architecture to design. It needs to be sufficiently comprehensive to accommodate the various tools&#8217; concepts but at the same time it needs to be as simple as possible and as stable as possible to preserve a stable interface to the rest of the system.</p>
<h2>Business Logic</h2>
<p>The Business Logic layer is where all of the rules about how the CM Model is to be interpreted and managed. The most challenging aspect of the Business Layer is the need to allow users to define their own rules without requiring them to program anything into the system (although we will surely make the tool easy to extend programatically). This layer will require a detailed set of user cases and a considerable investment of time in the early design if the final product is to be flexible enough to accommodate a wide variety of users.</p>
<p>The Business Logic layer&#8217;s functionality can be divided into two classes; those features of SCM that are fundamental and those that are definable. Establishing fundamental features may be a matter of diktat on my part, but never-the-less I will try to only hardcode rule when absolutely necessary, preferring instead to provide configurable rules. *scratched head* This could take some time.</p>
<h2>Presentation</h2>
<p>Finally there is the presentation layer. Here all of the various methods of presenting the system&#8217;s functionality are gathered. This is perhaps the simplest layer to define functionally but the most difficult to design aesthetically. Having established what the system can do in the other layers the function of the Presentation layer is to provide a method of allowing the user to request that functionality, and providing a means for the system to provide the results to the user. The challenge with user interface (UI) design is how to achieve these two functions in an easy to use and, preferably, intuitive way.</p>
<p>In the first instance I shall probably provide a command line interface as a priority with some form of rudimentary GUI as a secondary development. Once these are done other interfaces may be considered.</p>
<br />Filed under: <a href='http://blog.principia-it.co.uk/category/cmcrossroads/'>CMCrossroads</a>, <a href='http://blog.principia-it.co.uk/category/plain-old-blog/'>Plain Old Blog</a>, <a href='http://blog.principia-it.co.uk/category/development/scm-tool/'>SCM Tool</a>, <a href='http://blog.principia-it.co.uk/category/itslm/configuration-management/software-configuration-management/'>Software Configuration Management</a> Tagged: <a href='http://blog.principia-it.co.uk/tag/cm-tools/'>CM Tools</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/principiait.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/principiait.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/principiait.wordpress.com/578/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.principia-it.co.uk&amp;blog=8032610&amp;post=578&amp;subd=principiait&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.principia-it.co.uk/2010/02/11/cms-tool-high-level-architecture/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/41c439c6892b6a1b53ea8c1686324b4c?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Principia IT</media:title>
		</media:content>

		<media:content url="http://principiait.files.wordpress.com/2010/02/cm-pard-dia-018-cm-tools-architecture.png" medium="image">
			<media:title type="html">CM Tool Architecture</media:title>
		</media:content>
	</item>
	</channel>
</rss>
