<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="http://commons.oreilly.com/wiki/skins/common/feed.css?97"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>One Binary - Revision history</title>
		<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;action=history</link>
		<description>Revision history for this page on the wiki</description>
		<language>en</language>
		<generator>MediaWiki 1.11.0</generator>
		<lastBuildDate>Sun, 26 May 2013 03:40:08 GMT</lastBuildDate>
		<item>
			<title>Kevlin at 10:32, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25295&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 10:32, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;Hold environment-specific details ''in the environment''. This could mean, for example, keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' Hold environment-specific details ''in the environment''. This could mean, for example, keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;does have &lt;/del&gt;either a code-mangling build or stores all the target settings with the code, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;then it &lt;/del&gt;suggests that no&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/del&gt;one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;it could be worse&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, that the &lt;/del&gt;team knows what to do but can't &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;prioritise &lt;/del&gt;the effort to make the change. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team either &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;has &lt;/ins&gt;a code-mangling build or stores all the target settings with the code, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that &lt;/ins&gt;suggests that no one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or it could be worse&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: The &lt;/ins&gt;team knows what to do but can't &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;prioritize &lt;/ins&gt;the effort to make the change. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Of course, there are exceptions&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, you &lt;/del&gt;might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. Alternatively, you might be living with some legacy mess that's too hard to fix right now. In such cases, you have to move incrementally&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;but start as soon as possible.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Of course, there are exceptions&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: You &lt;/ins&gt;might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. Alternatively, you might be living with some legacy mess that's too hard to fix right now. In such cases, you have to move incrementally &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; &lt;/ins&gt;but start as soon as possible.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. There's nothing worse than breaking an environment configuration and not being able to figure out what changed. The environmental information should be versioned separately from the code, since they'll change at different rates and for different reasons. Some teams use distributed version control systems for this (such as bazaar and git), since they make it easier to push changes made &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;on &lt;/del&gt;production environments &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;(&lt;/del&gt;as inevitably happens&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;) &lt;/del&gt;back to the repository.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. There's nothing worse than breaking an environment configuration and not being able to figure out what changed. The environmental information should be versioned separately from the code, since they'll change at different rates and for different reasons. Some teams use distributed version control systems for this (such as bazaar and git), since they make it easier to push changes made &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/ins&gt;production environments &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; &lt;/ins&gt;as inevitably happens &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&amp;amp;mdash; &lt;/ins&gt;back to the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Steve Freeman]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Steve Freeman]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25287:newid:25295 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 10:32:04 GMT</pubDate>			<dc:creator>Kevlin</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:43, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25287&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:43, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.''  Hold environment-specific details ''in the environment''. This could mean, for example, keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.''  Hold environment-specific details ''in the environment''. This could mean, for example, keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team does have either a code-mangling build or stores all the target settings with the code, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;changes&lt;/del&gt;. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team does have either a code-mangling build or stores all the target settings with the code, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;change&lt;/ins&gt;. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Of course, there are exceptions, you might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. Alternatively, you might be living with some legacy mess that's too hard to fix right now. In such cases, you have to move incrementally, but start as soon as possible.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Of course, there are exceptions, you might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. Alternatively, you might be living with some legacy mess that's too hard to fix right now. In such cases, you have to move incrementally, but start as soon as possible.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25286:newid:25287 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:43:07 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:42, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25286&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:42, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.''  Hold environment-specific details ''in the environment''. This &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;might &lt;/del&gt;mean keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.''  Hold environment-specific details ''in the environment''. This &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;could &lt;/ins&gt;mean&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, for example, &lt;/ins&gt;keeping them in the component container, in a known file, or in the path. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team does have either a code-mangling build or stores all the target settings with the code, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the changes. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team does have either a code-mangling build or stores all the target settings with the code, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the changes. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25285:newid:25286 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:42:30 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:41, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25285&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:41, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;seems to make &lt;/del&gt;thing more complicated than they should be, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;makes &lt;/ins&gt;thing more complicated than they should be, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25284:newid:25285 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:41:38 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:41, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25284&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:41, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;necessary&lt;/del&gt;, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they should be&lt;/ins&gt;, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25283:newid:25284 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:41:19 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:40, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25283&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:40, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they need be&lt;/del&gt;, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;necessary&lt;/ins&gt;, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25282:newid:25283 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:40:51 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:40, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25282&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:40, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; Hold environment-specific details ''in the environment''. This might mean keeping them in the component container, in a known file, or in the path. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Hold environment-specific details ''in the environment''; this might mean in the component container settings, a known file, or the path. &lt;/del&gt;If your team does have a code-mangling build, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the changes&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. Of course, there are exceptions, you might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;If your team does have &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;either &lt;/ins&gt;a code-mangling build &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;or stores all the target settings with the code&lt;/ins&gt;, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the changes. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Some teams like &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;keep the settings in the same repository as &lt;/del&gt;the code&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;; some like a &lt;/del&gt;different &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;repository&lt;/del&gt;. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;There are advantages &lt;/del&gt;to &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;both&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Of course, there are exceptions, you might be building for targets that have significantly different resource constraints, but that doesn't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. Alternatively, you might be living with some legacy mess that's too hard to fix right now. In such cases, you have to move incrementally, but start as soon as possible.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;There's nothing worse than breaking an environment configuration and not being able &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;figure out what changed. The environmental information should be versioned separately from &lt;/ins&gt;the code&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, since they'll change at &lt;/ins&gt;different &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;rates and for different reasons&lt;/ins&gt;. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Some teams use distributed version control systems for this (such as bazaar and git), since they make it easier &lt;/ins&gt;to &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;push changes made on production environments (as inevitably happens) back to the repository&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Steve Freeman]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;By [[Steve Freeman]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25281:newid:25282 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:40:18 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:26, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25281&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:26, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Hold environment-specific details ''in the environment''; this might mean in the component container settings, a known file, or the path. Of course there are exceptions, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;say where &lt;/del&gt;you&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'re &lt;/del&gt;building for targets that have significantly different resource constraints, but &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;they don&lt;/del&gt;'t apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. If you do have a code-mangling build, then it suggests that either the team hasn't thought through its design enough to figure out which parts of the system move where or, worse, that the team has but cannot find the time to make the changes&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Hold environment-specific details ''in the environment''; this might mean in the component container settings, a known file, or the path&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. If your team does have a code-mangling build, then it suggests that no-one has thought through the design carefully enough to separate those features which are core to the application and those which are platform-specific. Or, it could be worse, that the team knows what to do but can't prioritise the effort to make the changes&lt;/ins&gt;. Of course&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;there are exceptions, you &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;might be &lt;/ins&gt;building for targets that have significantly different resource constraints, but &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that doesn&lt;/ins&gt;'t apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. Some teams like to keep the settings in the same repository as the code; some like a different repository. There are advantages to both.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. Some teams like to keep the settings in the same repository as the code; some like a different repository. There are advantages to both.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25280:newid:25281 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:26:35 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 09:18, 16 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25280&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:18, 16 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than they need be, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make thing more complicated than they need be, and introduces a risk that the team may not have consistent versions on each installation. At a minimum it involves building multiple, near-identical copies of the software, each of  which then has to be deployed to the right place. It means more moving parts than necessary, which means more opportunities to make a mistake. &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I once worked on a team where every property change had to be checked in for a full build cycle, so the testers were left waiting whenever they needed a minor adjustment (did I mention that the build took too long as well?). I also worked on a team where the system administrators insisted on rebuilding from scratch for production (using the same scripts that we did), which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple: ''Build a single binary that you can identify and promote through all the stages in the release pipeline.'' &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:25265:newid:25280 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 16 Aug 2009 09:18:39 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
		<item>
			<title>Sf105 at 12:14, 15 August 2009</title>
			<link>http://commons.oreilly.com/wiki/index.php?title=One_Binary&amp;diff=25265&amp;oldid=prev</link>
			<description>&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 12:14, 15 August 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;things much &lt;/del&gt;more complicated than they need be, and introduces a risk that the team may not have consistent versions on each &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;box&lt;/del&gt;. At a minimum it involves building multiple, near-identical copies of the software which then &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;have &lt;/del&gt;to be deployed to the right &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;places&lt;/del&gt;. It means more moving parts than necessary, which means more opportunities to make a mistake. I&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'ve &lt;/del&gt;worked on a team where every change had to be checked in for a full build cycle, &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;which meant that our &lt;/del&gt;testers were left waiting whenever they needed a minor &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;setting &lt;/del&gt;adjustment. I&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'ve &lt;/del&gt;worked on a team where the system administrators insisted on rebuilding from scratch for production, which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;I've seen several projects where the build rewrites some part of the code to generate a custom binary for each target environment. This always seems to make &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;thing &lt;/ins&gt;more complicated than they need be, and introduces a risk that the team may not have consistent versions on each &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;installation&lt;/ins&gt;. At a minimum it involves building multiple, near-identical copies of the software&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, each of  &lt;/ins&gt;which then &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;has &lt;/ins&gt;to be deployed to the right &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;place&lt;/ins&gt;. It means more moving parts than necessary, which means more opportunities to make a mistake. I &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;once &lt;/ins&gt;worked on a team where every &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;property &lt;/ins&gt;change had to be checked in for a full build cycle, &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;so the &lt;/ins&gt;testers were left waiting whenever they needed a minor adjustment &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;(did I mention that the build took too long as well?)&lt;/ins&gt;. I &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;also &lt;/ins&gt;worked on a team where the system administrators insisted on rebuilding from scratch for production &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;(using the same scripts that we did)&lt;/ins&gt;, which meant that we had no proof that the version in production was the one that had been through testing. And so on.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. &lt;/del&gt;Build a single binary that you can identify and promote through all the stages in the release pipeline. Hold environment-specific details ''in the environment'' in&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, for example, &lt;/del&gt;the component container settings, a known file, or the path. Of course there are exceptions, say where you're building for targets that have significantly different resource constraints, but they don't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. If you do have a code-mangling build, then it suggests that either the team hasn't thought through its design enough to figure out which parts of the system move where or, worse, that the team has but cannot find the time to make the changes.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The rule is simple&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: ''&lt;/ins&gt;Build a single binary that you can identify and promote through all the stages in the release pipeline.&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'' &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Hold environment-specific details ''in the environment''&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;; this might mean &lt;/ins&gt;in the component container settings, a known file, or the path. Of course there are exceptions, say where you're building for targets that have significantly different resource constraints, but they don't apply to the majority of us who are writing &amp;quot;database to screen and back again&amp;quot; applications. If you do have a code-mangling build, then it suggests that either the team hasn't thought through its design enough to figure out which parts of the system move where or, worse, that the team has but cannot find the time to make the changes.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. Some teams like to keep the settings in the same repository as the code; some like a different repository. There are advantages to both.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;And one more thing: Keep the environment information versioned too. Some teams like to keep the settings in the same repository as the code; some like a different repository. There are advantages to both.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key wikicontent:diff:version:1.11a:oldid:24964:newid:25265 --&gt;
&lt;/table&gt;</description>
			<pubDate>Sat, 15 Aug 2009 12:14:03 GMT</pubDate>			<dc:creator>Sf105</dc:creator>			<comments>http://commons.oreilly.com/wiki/index.php/Talk:One_Binary</comments>		</item>
	</channel>
</rss>