<?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: Version numbers should be boring</title>
	<atom:link href="http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/</link>
	<description>Whatever comes to mind</description>
	<lastBuildDate>Mon, 30 Aug 2010 10:42:40 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Joey</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-3538</link>
		<dc:creator>Joey</dc:creator>
		<pubDate>Wed, 21 Apr 2010 03:30:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-3538</guid>
		<description>With all due respect, I&#039;m not going to pollute my code with &#039;$VERSION = eval $VERSION&#039;, no matter what other nonsense that leaves it open to. Because I would have to accompany that with a comment that said &quot;go read this enormous article, and then you may understand why this eval is here&quot;, and I just can&#039;t inflict that on someone who has to maintain my code.

So, at the moment, you&#039;ve convinced me that I should avoid versioning my perl modules. Looking forward to something better..</description>
		<content:encoded><![CDATA[<p>With all due respect, I'm not going to pollute my code with '$VERSION = eval $VERSION', no matter what other nonsense that leaves it open to. Because I would have to accompany that with a comment that said "go read this enormous article, and then you may understand why this eval is here", and I just can't inflict that on someone who has to maintain my code.</p>
<p>So, at the moment, you've convinced me that I should avoid versioning my perl modules. Looking forward to something better..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Darren Duncan</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-2746</link>
		<dc:creator>Darren Duncan</dc:creator>
		<pubDate>Wed, 28 Oct 2009 07:07:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-2746</guid>
		<description>For the last few years, the practice I have followed for the modules I write is to use X.Y.Z version numbers conceptually and in my documentation and as my distro version, and I use the corresponding X.00Y00Z versions in the actual code of my modules for declaration and use.  I increment X for a total rewrite (generally I&#039;ve never incremented X yet), I increment Y for each update that is either of substantial content (which might just be to documentation) or that introduces an API change, either backwards-compatible or not (so far at least 80% of updates are this kind), and I increment Z for just bug fixes or minor updates that don&#039;t change the API.  My very first release of any module that isn&#039;t production ready from the start has version 0.0.0 because it is the first release of a major series, that is a X.0.0, and X is 0; I then typically go to 0.1.0 or 0.0.1 etc for the next release.</description>
		<content:encoded><![CDATA[<p>For the last few years, the practice I have followed for the modules I write is to use X.Y.Z version numbers conceptually and in my documentation and as my distro version, and I use the corresponding X.00Y00Z versions in the actual code of my modules for declaration and use.  I increment X for a total rewrite (generally I've never incremented X yet), I increment Y for each update that is either of substantial content (which might just be to documentation) or that introduces an API change, either backwards-compatible or not (so far at least 80% of updates are this kind), and I increment Z for just bug fixes or minor updates that don't change the API.  My very first release of any module that isn't production ready from the start has version 0.0.0 because it is the first release of a major series, that is a X.0.0, and X is 0; I then typically go to 0.1.0 or 0.0.1 etc for the next release.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Cantrell</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-781</link>
		<dc:creator>David Cantrell</dc:creator>
		<pubDate>Thu, 13 Aug 2009 14:18:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-781</guid>
		<description>This++

I&#039;m sorely tempted to make the problem go away and just have my release process just set $VERSION=N.YYYYMMDDHHMMSS where I may or may not remember to update N for major changes.  Indeed, two of my modules (Number::Phone::UK::{Data&#124;Exchanges}) already do that.

That has the advantage over your method of not requiring a manual sequence number, and also not overflowing a 32 bit signed int.</description>
		<content:encoded><![CDATA[<p>This++</p>
<p>I'm sorely tempted to make the problem go away and just have my release process just set $VERSION=N.YYYYMMDDHHMMSS where I may or may not remember to update N for major changes.  Indeed, two of my modules (Number::Phone::UK::{Data|Exchanges}) already do that.</p>
<p>That has the advantage over your method of not requiring a manual sequence number, and also not overflowing a 32 bit signed int.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: demerphq</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-777</link>
		<dc:creator>demerphq</dc:creator>
		<pubDate>Thu, 13 Aug 2009 12:20:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-777</guid>
		<description>Ben: I dont think that is completely true. I have worked a number of times on projects where VERSION!=XS_VERSION. I dont recall the details, but it is possible to setup makemaker so that you can have two numbers be different.</description>
		<content:encoded><![CDATA[<p>Ben: I dont think that is completely true. I have worked a number of times on projects where VERSION!=XS_VERSION. I dont recall the details, but it is possible to setup makemaker so that you can have two numbers be different.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dagolden</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-776</link>
		<dc:creator>dagolden</dc:creator>
		<pubDate>Thu, 13 Aug 2009 10:10:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-776</guid>
		<description>In my own code, I include the eval() line even if I don&#039;t technically need it (e.g. for &#039;0.46) so that if I ever decided I needed &#039;0.46_01&#039;, I don&#039;t need to remember to add eval().  My recommendation is intended to be something that you can add once to your code, then stop thinking about ever again except to bump up the number.</description>
		<content:encoded><![CDATA[<p>In my own code, I include the eval() line even if I don't technically need it (e.g. for '0.46) so that if I ever decided I needed '0.46_01', I don't need to remember to add eval().  My recommendation is intended to be something that you can add once to your code, then stop thinking about ever again except to bump up the number.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Sawyer</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-775</link>
		<dc:creator>Sawyer</dc:creator>
		<pubDate>Thu, 13 Aug 2009 09:12:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-775</guid>
		<description>Alright, so that&#039;s for those type of string. I get that.

If you use &#039;0.46&#039; or that sort of schematic, do you still require the eval(), or would you keep it just for good practice?</description>
		<content:encoded><![CDATA[<p>Alright, so that's for those type of string. I get that.</p>
<p>If you use '0.46' or that sort of schematic, do you still require the eval(), or would you keep it just for good practice?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Abigail</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-712</link>
		<dc:creator>Abigail</dc:creator>
		<pubDate>Wed, 12 Aug 2009 08:47:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-712</guid>
		<description>My biggest peeve with version numbers is that their ordening is non-intuitive to me. I&#039;ve always seen version numbers as integers separated by dots - and that&#039;s how many tools and other people see them as well. For me, &#039;9&#039; is followed by &#039;10&#039;. But in Perls toolchain, version &quot;x.10&quot; is considered to be older than version &quot;x.9&quot;.  That, and all the stuff mentioned in your article had me recently decide to switch to DNS style version numbers: YYYYMMDDXX, where YYYYMMDD is the date I make the release, and XX a sequence number to be reset to &quot;01&quot; each day (for those cases I spot a typo immediately after putting in on PAUSE).

This loses the convention of signalling the impact of the change by updating a part of the version number that isn&#039;t after the last dot, but that was a convention that everyone uses differently anyway. With YYYYMMDDXX numbers, there are no dots, no unexpected translations (AFAIK), and every tool and human orders them the same.</description>
		<content:encoded><![CDATA[<p>My biggest peeve with version numbers is that their ordening is non-intuitive to me. I've always seen version numbers as integers separated by dots - and that's how many tools and other people see them as well. For me, '9' is followed by '10'. But in Perls toolchain, version "x.10" is considered to be older than version "x.9".  That, and all the stuff mentioned in your article had me recently decide to switch to DNS style version numbers: YYYYMMDDXX, where YYYYMMDD is the date I make the release, and XX a sequence number to be reset to "01" each day (for those cases I spot a typo immediately after putting in on PAUSE).</p>
<p>This loses the convention of signalling the impact of the change by updating a part of the version number that isn't after the last dot, but that was a convention that everyone uses differently anyway. With YYYYMMDDXX numbers, there are no dots, no unexpected translations (AFAIK), and every tool and human orders them the same.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Piers Harding (piers) 's status on Tuesday, 11-Aug-09 14:11:39 UTC - Identi.ca</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-676</link>
		<dc:creator>Piers Harding (piers) 's status on Tuesday, 11-Aug-09 14:11:39 UTC - Identi.ca</dc:creator>
		<pubDate>Tue, 11 Aug 2009 14:11:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-676</guid>
		<description>[...]  http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/  [...]</description>
		<content:encoded><![CDATA[<p>[...]  <a href="http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/" rel="nofollow">http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/</a>  [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ben Morrow</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-673</link>
		<dc:creator>Ben Morrow</dc:creator>
		<pubDate>Tue, 11 Aug 2009 13:43:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-673</guid>
		<description>You missed the all-important rule for XS authors that the version passed to &lt;code&gt;XSLoader::load&lt;/code&gt; or &lt;code&gt;DynaLoader-&gt;bootstrap&lt;/code&gt; must match exactly the version string MakeMaker compiled into the module. Hence the common idiom&lt;code&gt;
our $XS_VERSION = our $VERSION = &quot;0.01_02&quot;;
$VERSION = eval $VERSION;
XSLoader::load __PACKAGE__, $XS_VERSION;
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>You missed the all-important rule for XS authors that the version passed to <code>XSLoader::load</code> or <code>DynaLoader-&gt;bootstrap</code> must match exactly the version string MakeMaker compiled into the module. Hence the common idiom<code><br />
our $XS_VERSION = our $VERSION = "0.01_02";<br />
$VERSION = eval $VERSION;<br />
XSLoader::load __PACKAGE__, $XS_VERSION;<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dagolden</title>
		<link>http://www.dagolden.com/index.php/369/version-numbers-should-be-boring/comment-page-1/#comment-672</link>
		<dc:creator>dagolden</dc:creator>
		<pubDate>Tue, 11 Aug 2009 13:29:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.dagolden.com/?p=369#comment-672</guid>
		<description>The eval converts the &lt;i&gt;string&lt;/i&gt; &quot;0.001_001&quot; to a number, following the rules for Perl numeric literals (which allow underscores for visual separation).  The result is the &lt;i&gt;number&lt;/i&gt; 0.001001.  

Without the eval, the string is converted to a number following the rule for converting strings, which stops at the first non-numeric character.  

E.g.:  perl -e &#039;print &quot;0.001_001&quot; + 0&#039;</description>
		<content:encoded><![CDATA[<p>The eval converts the <i>string</i> "0.001_001" to a number, following the rules for Perl numeric literals (which allow underscores for visual separation).  The result is the <i>number</i> 0.001001.  </p>
<p>Without the eval, the string is converted to a number following the rule for converting strings, which stops at the first non-numeric character.  </p>
<p>E.g.:  perl -e 'print "0.001_001" + 0'</p>
]]></content:encoded>
	</item>
</channel>
</rss>
