<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Nobody Cares About Your Build</title>
	<atom:link href="http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/feed/" rel="self" type="application/rss+xml" />
	<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/</link>
	<description>Any insufficiently advanced magic is indistinguishable from technology.</description>
	<lastBuildDate>Wed, 18 Jan 2012 20:28:19 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Owen</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-4446</link>
		<dc:creator>Owen</dc:creator>
		<pubDate>Thu, 23 Sep 2010 21:38:25 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-4446</guid>
		<description>Nothing at all.

Incremental builds are finnicky beasts. To pick one of many ways they can go wrong, consider that many languages allow compile-time inlining of certain kinds of constants, even constants from other compilation units. Keeping track of the interdependencies between compilation units is a fair amount of work if the language doesn&#039;t have that baked in, and eventually someone&#039;s going to miss something, sending quite a bit of time down the hole while you diagnose why your incremental build isn&#039;t reflecting all of your changes.

They&#039;re somewhat useful on the developer&#039;s workstation if you&#039;ve got a large code base, but I generally prefer to break up large code bases into smaller pieces that can be rebuilt &lt;em&gt;en bloc&lt;/em&gt; instead of spending time on incremental build support. For builds intended to be seen by others, even just internal users, rebuilding from scratch is the way to go every time.</description>
		<content:encoded><![CDATA[<p>Nothing at all.</p>
<p>Incremental builds are finnicky beasts. To pick one of many ways they can go wrong, consider that many languages allow compile-time inlining of certain kinds of constants, even constants from other compilation units. Keeping track of the interdependencies between compilation units is a fair amount of work if the language doesn&#8217;t have that baked in, and eventually someone&#8217;s going to miss something, sending quite a bit of time down the hole while you diagnose why your incremental build isn&#8217;t reflecting all of your changes.</p>
<p>They&#8217;re somewhat useful on the developer&#8217;s workstation if you&#8217;ve got a large code base, but I generally prefer to break up large code bases into smaller pieces that can be rebuilt <em>en bloc</em> instead of spending time on incremental build support. For builds intended to be seen by others, even just internal users, rebuilding from scratch is the way to go every time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matteo</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-4445</link>
		<dc:creator>Matteo</dc:creator>
		<pubDate>Thu, 23 Sep 2010 07:31:18 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-4445</guid>
		<description>I&#039;m trying to find where in Code Complete it discusses builds in great detail.  So far I found a page and a half, where it mentions that the MS Word team dropped &quot;make&quot; in favor of building everything, every time.  What have I missed?</description>
		<content:encoded><![CDATA[<p>I&#8217;m trying to find where in Code Complete it discusses builds in great detail.  So far I found a page and a half, where it mentions that the MS Word team dropped &#8220;make&#8221; in favor of building everything, every time.  What have I missed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kit</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-11</link>
		<dc:creator>kit</dc:creator>
		<pubDate>Wed, 01 Oct 2008 04:31:40 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-11</guid>
		<description>@tan: I know Ruby is well-loved by many, and they&#039;re welcome to it, but for my money, it&#039;s the scripting language&#039;s equivalent of a head-final language (like, oh, say, Japanese in the natural language domain), which, as a speaker of a head-initial language (English), is still hard for me to grasp.  It&#039;s inside-out to me, though after living in Japan I&#039;ve managed to internalize Japanese syntax as natural.  Not so Ruby, yet.

That&#039;s my incoherent 2¢</description>
		<content:encoded><![CDATA[<p>@tan: I know Ruby is well-loved by many, and they&#8217;re welcome to it, but for my money, it&#8217;s the scripting language&#8217;s equivalent of a head-final language (like, oh, say, Japanese in the natural language domain), which, as a speaker of a head-initial language (English), is still hard for me to grasp.  It&#8217;s inside-out to me, though after living in Japan I&#8217;ve managed to internalize Japanese syntax as natural.  Not so Ruby, yet.</p>
<p>That&#8217;s my incoherent 2¢</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-10</link>
		<dc:creator>Owen</dc:creator>
		<pubDate>Wed, 01 Oct 2008 03:45:12 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-10</guid>
		<description>I hadn&#039;t.  While I have nothing against using tools written in language A to build software in language B, using ruby *as a build language* grates, both on my brain and on my eyes.  The syntax is... not great.  The best thing I can say about

  desc &#039;All those implementation details&#039;
  define &#039;teh-impl&#039; do
    compile.with AXIS_OF_WS, OPENJPA
    compile { open_jpa_enhance }
    package :jar
  end

is that it&#039;s terser than the equivalent maven configuration; it&#039;s not particularly clearer.

In return, have you looked at scons?</description>
		<content:encoded><![CDATA[<p>I hadn&#8217;t.  While I have nothing against using tools written in language A to build software in language B, using ruby *as a build language* grates, both on my brain and on my eyes.  The syntax is&#8230; not great.  The best thing I can say about</p>
<p>  desc &#8216;All those implementation details&#8217;<br />
  define &#8216;teh-impl&#8217; do<br />
    compile.with AXIS_OF_WS, OPENJPA<br />
    compile { open_jpa_enhance }<br />
    package :jar<br />
  end</p>
<p>is that it&#8217;s terser than the equivalent maven configuration; it&#8217;s not particularly clearer.</p>
<p>In return, have you looked at scons?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tan Quach</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-9</link>
		<dc:creator>Tan Quach</dc:creator>
		<pubDate>Tue, 30 Sep 2008 02:00:07 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-9</guid>
		<description>Have you seen buildr? 

http://incubator.apache.org/buildr/</description>
		<content:encoded><![CDATA[<p>Have you seen buildr? </p>
<p><a href="http://incubator.apache.org/buildr/" rel="nofollow">http://incubator.apache.org/buildr/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-8</link>
		<dc:creator>Owen</dc:creator>
		<pubDate>Mon, 29 Sep 2008 03:07:59 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-8</guid>
		<description>Either an active community or a large body of incidental documentation. There&#039;s no large community around make(1) any more, but there are so many bits of &quot;hey, I figured out how to do (task X) in my Makefile&quot; documentation out on the web that it makes up for it.

Though...  if you have a complex build, it&#039;s probably worth simplifying it - very few of the &quot;complex&quot; builds I&#039;ve encountered have actually needed the complication; most were poorly-factored and could&#039;ve been broken down into several stages for easier maintenance.</description>
		<content:encoded><![CDATA[<p>Either an active community or a large body of incidental documentation. There&#8217;s no large community around make(1) any more, but there are so many bits of &#8220;hey, I figured out how to do (task X) in my Makefile&#8221; documentation out on the web that it makes up for it.</p>
<p>Though&#8230;  if you have a complex build, it&#8217;s probably worth simplifying it &#8211; very few of the &#8220;complex&#8221; builds I&#8217;ve encountered have actually needed the complication; most were poorly-factored and could&#8217;ve been broken down into several stages for easier maintenance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew Binstock</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-7</link>
		<dc:creator>Andrew Binstock</dc:creator>
		<pubDate>Sun, 28 Sep 2008 22:23:25 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-7</guid>
		<description>Nicely done. I would add that the tool must have an active community. When you&#039;re deep in a complex build, it&#039;s nice--sometimes crucial--to be able to communicate with other users about how they have solved build problems you&#039;re facing.</description>
		<content:encoded><![CDATA[<p>Nicely done. I would add that the tool must have an active community. When you&#8217;re deep in a complex build, it&#8217;s nice&#8211;sometimes crucial&#8211;to be able to communicate with other users about how they have solved build problems you&#8217;re facing.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Owen</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-3</link>
		<dc:creator>Owen</dc:creator>
		<pubDate>Thu, 25 Sep 2008 04:15:13 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-3</guid>
		<description>@idcmp: I was thinking more about building, say, two JARs from one src/ directory by way of clever include/exclude filters, as a project we both know used to do.  &quot;The same source tree&quot; is pretty vague, though, and I definitely have no problem with the same code living in src-for-a and src-for-b directories that are built simultaneously.  I&#039;d just be inclined to write two builds.</description>
		<content:encoded><![CDATA[<p>@idcmp: I was thinking more about building, say, two JARs from one src/ directory by way of clever include/exclude filters, as a project we both know used to do.  &#8220;The same source tree&#8221; is pretty vague, though, and I definitely have no problem with the same code living in src-for-a and src-for-b directories that are built simultaneously.  I&#8217;d just be inclined to write two builds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: idcmp</title>
		<link>http://codex.grimoire.ca/2008/09/24/nobody-cares-about-your-build/comment-page-1/#comment-2</link>
		<dc:creator>idcmp</dc:creator>
		<pubDate>Thu, 25 Sep 2008 01:05:18 +0000</pubDate>
		<guid isPermaLink="false">http://codex.grimoire.ca/?p=3#comment-2</guid>
		<description>I still think &quot;one source tree per product&quot; should be driven more by release cycles than products.  If products A and B are built and released by the same team at the same time, then there&#039;s little harm in them living together; especially if a team is resource constrained and could better use the time elsewhere.</description>
		<content:encoded><![CDATA[<p>I still think &#8220;one source tree per product&#8221; should be driven more by release cycles than products.  If products A and B are built and released by the same team at the same time, then there&#8217;s little harm in them living together; especially if a team is resource constrained and could better use the time elsewhere.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

