<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Configuration Management Systems, Automated Tests, CI, and Complexity</title>
    <link>http://blog.objectmentor.com/articles/2008/09/08/configuration-management-systems-automated-tests-ci-and-complexity</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Configuration Management Systems, Automated Tests, CI, and Complexity</title>
      <description>&lt;p&gt;I&amp;#8217;m working with a client that has a very complex branching structure in their commercial CM system, which will remain nameless. Why is it so complex? Because everyone is afraid to merge to the integration branches.&lt;/p&gt;


	&lt;p&gt;This is a common symptom in teams that don&amp;#8217;t have have good automated test coverage and don&amp;#8217;t use continuous integration (CI). &lt;strong&gt;Fear&lt;/strong&gt; is their lot in life. They&amp;#8217;ll keep lots of little branches and only merge to integration when they&amp;#8217;re ready for the &amp;#8220;big bang&amp;#8221; integration.&lt;/p&gt;


	&lt;p&gt;I spoke with a manager at the client site today who expressed frustration that no one really knows which branch they should be committing to and when they should merge to the integration branches.&lt;/p&gt;


	&lt;p&gt;In contrast, projects with good test coverage and CI do almost all their work on the integration branch. They have little fear, because any problems will get caught and fixed quickly.  So, the first point of this post is:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Automated test coverage and CI drastically simplify your use of configuration management.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Here&amp;#8217;s something else I&amp;#8217;ve noticed, open source CM systems seem to focus on different priorities than commercial systems. &lt;strong&gt;Disclaimer:&lt;/strong&gt; I know I&amp;#8217;m generalizing a bit here.&lt;/p&gt;


	&lt;p&gt;The commercial systems tend to be really good at managing complex branching, with fancy &lt;span class="caps"&gt;GUI&lt;/span&gt; tools to help manage the big trees of branches, facilitate merges, &lt;em&gt;etc.&lt;/em&gt; That seems to be their biggest selling feature, &lt;span class="caps"&gt;GUI&lt;/span&gt;&amp;#8217;s to manage the complexity.&lt;/p&gt;


	&lt;p&gt;In contrast, most of the open-source CM systems have lower-tech &lt;span class="caps"&gt;GUI&lt;/span&gt;&amp;#8217;s, if any, but the teams using them don&amp;#8217;t seem to care that much. Usually, this is because these teams are also practicing &lt;span class="caps"&gt;TDD&lt;/span&gt; and CI, so they just don&amp;#8217;t need the wizardry as much.&lt;/p&gt;


	&lt;p&gt;The open-source CM systems seem to be better at scalability and performance. Some are pioneering  distributed CM, &lt;em&gt;e.g.,&lt;/em&gt; Git and Mercurial. Git, for example, was designed to manage a massive project called Linux. Maybe you&amp;#8217;ve heard of it.&lt;/p&gt;


	&lt;p&gt;Distributed CM is not easy, but it&amp;#8217;s a lot easier to do if you don&amp;#8217;t need to worry as much about complex branch hierarchies.&lt;/p&gt;


	&lt;p&gt;Most of the commercial tools I&amp;#8217;ve seen don&amp;#8217;t scale well and some require way too much administration. My client is apparently the biggest user of their particular tool and the developers complain all the time about performance. This tool is not designed to scale horizontally. The only hope is use faster hardware. In this case, the vendor has focused on managing complexity. To be frank, even their &lt;span class="caps"&gt;GUI&lt;/span&gt; tool is an uninspired and slow Java fat client.&lt;/p&gt;


	&lt;p&gt;So the second point of this post is:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;Avoid CM tools that encourage complexity. Pick the ones that scale.&lt;/p&gt;
	&lt;/blockquote&gt;</description>
      <pubDate>Mon, 08 Sep 2008 16:53:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:cdb615bb-896e-41b4-8b99-804dd3511432</guid>
      <author>Dean Wampler</author>
      <link>http://blog.objectmentor.com/articles/2008/09/08/configuration-management-systems-automated-tests-ci-and-complexity</link>
      <category>Dean's Deprecations</category>
      <category>Agile Methods</category>
      <category>TDD</category>
      <category>ci</category>
      <category>cm</category>
      <category>Tests</category>
    </item>
    <item>
      <title>"Configuration Management Systems, Automated Tests, CI, and Complexity" by Alex </title>
      <description>&lt;p&gt;You read my mind:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.accurev.com/press-releases/092308-accurev-47.html" rel="nofollow"&gt;http://www.accurev.com/press-releases/092308-accurev-47.html&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;and&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.accurev.com/press-releases/030408-accurev-electriccloud.html" rel="nofollow"&gt;http://www.accurev.com/press-releases/030408-accurev-electriccloud.html&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Best,
Alex&lt;/p&gt;</description>
      <pubDate>Tue, 23 Sep 2008 21:19:18 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:9e316aeb-08dd-418a-941b-e9b2a10e3941</guid>
      <link>http://blog.objectmentor.com/articles/2008/09/08/configuration-management-systems-automated-tests-ci-and-complexity#comment-2072</link>
    </item>
    <item>
      <title>"Configuration Management Systems, Automated Tests, CI, and Complexity" by Tim Ottinger</title>
      <description>&lt;p&gt;Preach it, brother!&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m seeing this in too many places.  I think it&amp;#8217;s a coping mechanism for systems where the pace of completion is not respected.  They don&amp;#8217;t want to commit to something unless it&amp;#8217;s done, and they define &amp;#8220;done&amp;#8221; too far out for the development team to keep up.&lt;/p&gt;


	&lt;p&gt;It is just as bad where the work is not done in short cycles, as far as I can tell.  But when the release cycles are shortened the company will go to mad branching instead of shorter units of work.&lt;/p&gt;


	&lt;p&gt;We know that delayed integration results in errors and cost, and CI solves problems before they get big.  We know that unmerged code is like milk outside the fridge, that it rots and eventually should be discarded for safety reasons.  We know that delaying pain increases pain.&lt;/p&gt;


	&lt;p&gt;Yet this seems to be a lot of manager&amp;#8217;s first-twitch reaction. And it&amp;#8217;s expensive and trouble-causing.&lt;/p&gt;


	&lt;p&gt;Tim&lt;/p&gt;</description>
      <pubDate>Tue, 09 Sep 2008 16:16:20 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:42de41a5-e194-4a4a-9b59-4b043681780e</guid>
      <link>http://blog.objectmentor.com/articles/2008/09/08/configuration-management-systems-automated-tests-ci-and-complexity#comment-2049</link>
    </item>
  </channel>
</rss>
