<?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: Software Versioning is Ridiculous</title>
	<atom:link href="http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/feed/" rel="self" type="application/rss+xml" />
	<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/</link>
	<description>work. life. open source. diatribes.</description>
	<lastBuildDate>Mon, 14 May 2012 23:38:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Chris Aniszczyk</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-1490</link>
		<dc:creator>Chris Aniszczyk</dc:creator>
		<pubDate>Mon, 23 Nov 2009 14:54:24 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-1490</guid>
		<description>&lt;a href=&quot;#comment-1484&quot; rel=&quot;nofollow&quot;&gt;@Richard Steele&lt;/a&gt;, I disagree with your assertion around version numbers being arbitrary especially when it comes to module systems.

&lt;blockquote cite=&quot;#commentbody-1484&quot;&gt;
&lt;strong&gt;&lt;a href=&quot;#comment-1484&quot; rel=&quot;nofollow&quot;&gt;Richard Steele&lt;/a&gt; :&lt;/strong&gt;
&lt;p&gt;...Versions are arbitrary, as long as they can uniquely identify a specific release of the product...&lt;/p&gt;
&lt;/blockquote&gt;

Let me give you twos examples from OSGi land to think about. In OSGi, you can depend on different bundles using the &lt;code&gt;Require-Bundle&lt;/code&gt; header. You can depend on ranges. Let&#039;s say you were writing an application that needed to use log4j. What version of log4j do you want to depend on? The first stab of your dependency can be written like this...

&lt;code&gt;Require-Bundle: org.apache.log4j&lt;/code&gt;

You go to deploy your bundle on one system. It works, yay!

You know go to deploy your bundle on some other system or someone else deploys your bundle... you get some crazy exceptions. It turns out, you were developing against log4j 1.1 and that worked great when deployed into the first system that was running 1.1... however... the second system your bundle was deployed to was running 1.2 and in version 1.2... the log4j team decided to break binary compatibility. Ok, you can now fix your bundle with this dependency statement:

&lt;code&gt;Require-Bundle: org.apache.log4j;version=[1.1,1.2)&lt;/code&gt;

Now imagine that you needed commons collections? How should you depend on commons collections... what version ranges... what verison policy does the commons collections team follow? 

&lt;code&gt;Require-Bundle: org.apache.commons.collections;version=[2.1,3.0)&lt;/code&gt;

It turns out that commons collection 3.0 is binary compatible with 2.1...

You see what I&#039;m getting it?

When there is no consistent set of versioning semantics when it comes to module systems... it&#039;s a world of pain.</description>
		<content:encoded><![CDATA[<p><a href="#comment-1484" rel="nofollow">@Richard Steele</a>, I disagree with your assertion around version numbers being arbitrary especially when it comes to module systems.</p>
<blockquote cite="#commentbody-1484"><p>
<strong><a href="#comment-1484" rel="nofollow">Richard Steele</a> :</strong></p>
<p>&#8230;Versions are arbitrary, as long as they can uniquely identify a specific release of the product&#8230;</p>
</blockquote>
<p>Let me give you twos examples from OSGi land to think about. In OSGi, you can depend on different bundles using the <code>Require-Bundle</code> header. You can depend on ranges. Let&#8217;s say you were writing an application that needed to use log4j. What version of log4j do you want to depend on? The first stab of your dependency can be written like this&#8230;</p>
<p><code>Require-Bundle: org.apache.log4j</code></p>
<p>You go to deploy your bundle on one system. It works, yay!</p>
<p>You know go to deploy your bundle on some other system or someone else deploys your bundle&#8230; you get some crazy exceptions. It turns out, you were developing against log4j 1.1 and that worked great when deployed into the first system that was running 1.1&#8230; however&#8230; the second system your bundle was deployed to was running 1.2 and in version 1.2&#8230; the log4j team decided to break binary compatibility. Ok, you can now fix your bundle with this dependency statement:</p>
<p><code>Require-Bundle: org.apache.log4j;version=[1.1,1.2)</code></p>
<p>Now imagine that you needed commons collections? How should you depend on commons collections&#8230; what version ranges&#8230; what verison policy does the commons collections team follow? </p>
<p><code>Require-Bundle: org.apache.commons.collections;version=[2.1,3.0)</code></p>
<p>It turns out that commons collection 3.0 is binary compatible with 2.1&#8230;</p>
<p>You see what I&#8217;m getting it?</p>
<p>When there is no consistent set of versioning semantics when it comes to module systems&#8230; it&#8217;s a world of pain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Aniszczyk</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-3162</link>
		<dc:creator>Chris Aniszczyk</dc:creator>
		<pubDate>Mon, 23 Nov 2009 14:54:00 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-3162</guid>
		<description>&lt;a href=&quot;#comment-1484&quot; rel=&quot;nofollow&quot;&gt;@Richard Steele&lt;/a&gt;, I disagree with your assertion around version numbers being arbitrary especially when it comes to module systems.

&lt;blockquote cite=&quot;#commentbody-1484&quot;&gt;
&lt;strong&gt;&lt;a href=&quot;#comment-1484&quot; rel=&quot;nofollow&quot;&gt;Richard Steele&lt;/a&gt; :&lt;/strong&gt;
...Versions are arbitrary, as long as they can uniquely identify a specific release of the product...
&lt;/blockquote&gt;

Let me give you twos examples from OSGi land to think about. In OSGi, you can depend on different bundles using the &lt;code&gt;Require-Bundle&lt;/code&gt; header. You can depend on ranges. Let&#039;s say you were writing an application that needed to use log4j. What version of log4j do you want to depend on? The first stab of your dependency can be written like this...

&lt;code&gt;Require-Bundle: org.apache.log4j&lt;/code&gt;

You go to deploy your bundle on one system. It works, yay!

You know go to deploy your bundle on some other system or someone else deploys your bundle... you get some crazy exceptions. It turns out, you were developing against log4j 1.1 and that worked great when deployed into the first system that was running 1.1... however... the second system your bundle was deployed to was running 1.2 and in version 1.2... the log4j team decided to break binary compatibility. Ok, you can now fix your bundle with this dependency statement:

&lt;code&gt;Require-Bundle: org.apache.log4j;version=[1.1,1.2)&lt;/code&gt;

Now imagine that you needed commons collections? How should you depend on commons collections... what version ranges... what verison policy does the commons collections team follow? 

&lt;code&gt;Require-Bundle: org.apache.commons.collections;version=[2.1,3.0)&lt;/code&gt;

It turns out that commons collection 3.0 is binary compatible with 2.1...

You see what I&#039;m getting it?

When there is no consistent set of versioning semantics when it comes to module systems... it&#039;s a world of pain.</description>
		<content:encoded><![CDATA[<p><a href="#comment-1484" rel="nofollow">@Richard Steele</a>, I disagree with your assertion around version numbers being arbitrary especially when it comes to module systems.</p>
<blockquote cite="#commentbody-1484"><p>
<strong><a href="#comment-1484" rel="nofollow">Richard Steele</a> :</strong><br />
&#8230;Versions are arbitrary, as long as they can uniquely identify a specific release of the product&#8230;
</p></blockquote>
<p>Let me give you twos examples from OSGi land to think about. In OSGi, you can depend on different bundles using the <code>Require-Bundle</code> header. You can depend on ranges. Let&#8217;s say you were writing an application that needed to use log4j. What version of log4j do you want to depend on? The first stab of your dependency can be written like this&#8230;</p>
<p><code>Require-Bundle: org.apache.log4j</code></p>
<p>You go to deploy your bundle on one system. It works, yay!</p>
<p>You know go to deploy your bundle on some other system or someone else deploys your bundle&#8230; you get some crazy exceptions. It turns out, you were developing against log4j 1.1 and that worked great when deployed into the first system that was running 1.1&#8230; however&#8230; the second system your bundle was deployed to was running 1.2 and in version 1.2&#8230; the log4j team decided to break binary compatibility. Ok, you can now fix your bundle with this dependency statement:</p>
<p><code>Require-Bundle: org.apache.log4j;version=[1.1,1.2)</code></p>
<p>Now imagine that you needed commons collections? How should you depend on commons collections&#8230; what version ranges&#8230; what verison policy does the commons collections team follow? </p>
<p><code>Require-Bundle: org.apache.commons.collections;version=[2.1,3.0)</code></p>
<p>It turns out that commons collection 3.0 is binary compatible with 2.1&#8230;</p>
<p>You see what I&#8217;m getting it?</p>
<p>When there is no consistent set of versioning semantics when it comes to module systems&#8230; it&#8217;s a world of pain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Steele</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-1484</link>
		<dc:creator>Richard Steele</dc:creator>
		<pubDate>Fri, 20 Nov 2009 02:22:01 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-1484</guid>
		<description>While I agree that this does seem to cause problems, in my experience it&#039;s as much a &quot;techno-political&quot; issue than anything else.  Versions are arbitrary, as long as they can uniquely identify a specific release of the product.  Don&#039;t forget another important reason for version numbers: support.  &quot;What version are you running, and what version of the OS are you running it on?&quot; are very often the first questions we need answered to address a support call.</description>
		<content:encoded><![CDATA[<p>While I agree that this does seem to cause problems, in my experience it&#8217;s as much a &#8220;techno-political&#8221; issue than anything else.  Versions are arbitrary, as long as they can uniquely identify a specific release of the product.  Don&#8217;t forget another important reason for version numbers: support.  &#8220;What version are you running, and what version of the OS are you running it on?&#8221; are very often the first questions we need answered to address a support call.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Richard Steele</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-3161</link>
		<dc:creator>Richard Steele</dc:creator>
		<pubDate>Fri, 20 Nov 2009 02:22:00 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-3161</guid>
		<description>While I agree that this does seem to cause problems, in my experience it&#039;s as much a &quot;techno-political&quot; issue than anything else.  Versions are arbitrary, as long as they can uniquely identify a specific release of the product.  Don&#039;t forget another important reason for version numbers: support.  &quot;What version are you running, and what version of the OS are you running it on?&quot; are very often the first questions we need answered to address a support call.</description>
		<content:encoded><![CDATA[<p>While I agree that this does seem to cause problems, in my experience it&#8217;s as much a &#8220;techno-political&#8221; issue than anything else.  Versions are arbitrary, as long as they can uniquely identify a specific release of the product.  Don&#8217;t forget another important reason for version numbers: support.  &#8220;What version are you running, and what version of the OS are you running it on?&#8221; are very often the first questions we need answered to address a support call.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Stanchfield</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-1483</link>
		<dc:creator>Scott Stanchfield</dc:creator>
		<pubDate>Thu, 19 Nov 2009 22:00:27 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-1483</guid>
		<description>&lt;a href=&quot;#comment-1481&quot; rel=&quot;nofollow&quot;&gt;@oisin &lt;/a&gt; 

&lt;blockquote cite=&quot;#commentbody-1481&quot;&gt;
5) you’re going to have to re-write your code, sorry, by the way we have a new training course.&lt;/blockquote&gt;

Hehehe... I bet that was a great driver for the marketing team to up the version numbers artificially...</description>
		<content:encoded><![CDATA[<p><a href="#comment-1481" rel="nofollow">@oisin </a> </p>
<blockquote cite="#commentbody-1481"><p>
5) you’re going to have to re-write your code, sorry, by the way we have a new training course.</p></blockquote>
<p>Hehehe&#8230; I bet that was a great driver for the marketing team to up the version numbers artificially&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Stanchfield</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-3160</link>
		<dc:creator>Scott Stanchfield</dc:creator>
		<pubDate>Thu, 19 Nov 2009 22:00:00 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-3160</guid>
		<description>&lt;a href=&quot;#comment-1481&quot; rel=&quot;nofollow&quot;&gt;@oisin &lt;/a&gt;
&lt;blockquote cite=&quot;#commentbody-1481&quot;&gt;
5) you’re going to have to re-write your code, sorry, by the way we have a new training course.&lt;/blockquote&gt;

Hehehe... I bet that was a great driver for the marketing team to up the version numbers artificially...</description>
		<content:encoded><![CDATA[<p><a href="#comment-1481" rel="nofollow">@oisin </a></p>
<blockquote cite="#commentbody-1481"><p>
5) you’re going to have to re-write your code, sorry, by the way we have a new training course.</p></blockquote>
<p>Hehehe&#8230; I bet that was a great driver for the marketing team to up the version numbers artificially&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Stanchfield</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-1482</link>
		<dc:creator>Scott Stanchfield</dc:creator>
		<pubDate>Thu, 19 Nov 2009 20:56:23 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-1482</guid>
		<description>&lt;a href=&quot;#comment-1479&quot; rel=&quot;nofollow&quot;&gt;@Eugene Ostroukhov &lt;/a&gt; 
I agree - latest/old would work great when you&#039;re in an update manager. Won&#039;t work so well on a box at the store though ;)</description>
		<content:encoded><![CDATA[<p><a href="#comment-1479" rel="nofollow">@Eugene Ostroukhov </a><br />
I agree &#8211; latest/old would work great when you&#8217;re in an update manager. Won&#8217;t work so well on a box at the store though <img src='http://aniszczyk.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Stanchfield</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-3159</link>
		<dc:creator>Scott Stanchfield</dc:creator>
		<pubDate>Thu, 19 Nov 2009 20:56:00 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-3159</guid>
		<description>&lt;a href=&quot;#comment-1479&quot; rel=&quot;nofollow&quot;&gt;@Eugene Ostroukhov &lt;/a&gt; 
I agree - latest/old would work great when you&#039;re in an update manager. Won&#039;t work so well on a box at the store though ;)</description>
		<content:encoded><![CDATA[<p><a href="#comment-1479" rel="nofollow">@Eugene Ostroukhov </a><br />
I agree &#8211; latest/old would work great when you&#8217;re in an update manager. Won&#8217;t work so well on a box at the store though <img src='http://aniszczyk.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Oisin Hurley</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-1481</link>
		<dc:creator>Oisin Hurley</dc:creator>
		<pubDate>Thu, 19 Nov 2009 20:54:26 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-1481</guid>
		<description>Marketing is the major driver for a &#039;public&#039; version number in most cases. You get some interesting stories - for example, at one point our (now ex-) marketing team decided that products with a major version &quot;4&quot; were bad luck. So we had products go from 3.1 straight to 5.0 (which basically allows you to break binary compatibility twice!). People who don&#039;t care so much about that side of things have fun instead - like the π incident and negative range numbers. There&#039;s also plain old intransigence like the silly Scala 2.7 vs 2.8 affair.

@Scott - I&#039;ve seen that happen sooo many times. I&#039;ve always used version to tell a story - basically how hosed you are going to be once you upgrade. This ranges from 0) drop-in replacement; 1) we&#039;ve changed some third-party stuff; 2) you&#039;re going to have to re-write your scripts; 3) you&#039;re going to have to re-link all your binaries, sorry; 4) you&#039;re going to have to recompile everything, sorry; 5) you&#039;re going to have to re-write your code, sorry, by the way we have a new training course.</description>
		<content:encoded><![CDATA[<p>Marketing is the major driver for a &#8216;public&#8217; version number in most cases. You get some interesting stories &#8211; for example, at one point our (now ex-) marketing team decided that products with a major version &#8220;4&#8243; were bad luck. So we had products go from 3.1 straight to 5.0 (which basically allows you to break binary compatibility twice!). People who don&#8217;t care so much about that side of things have fun instead &#8211; like the π incident and negative range numbers. There&#8217;s also plain old intransigence like the silly Scala 2.7 vs 2.8 affair.</p>
<p>@Scott &#8211; I&#8217;ve seen that happen sooo many times. I&#8217;ve always used version to tell a story &#8211; basically how hosed you are going to be once you upgrade. This ranges from 0) drop-in replacement; 1) we&#8217;ve changed some third-party stuff; 2) you&#8217;re going to have to re-write your scripts; 3) you&#8217;re going to have to re-link all your binaries, sorry; 4) you&#8217;re going to have to recompile everything, sorry; 5) you&#8217;re going to have to re-write your code, sorry, by the way we have a new training course.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Oisin Hurley</title>
		<link>http://aniszczyk.org/2009/11/19/software-versioning-is-ridiculous/comment-page-1/#comment-3158</link>
		<dc:creator>Oisin Hurley</dc:creator>
		<pubDate>Thu, 19 Nov 2009 20:54:00 +0000</pubDate>
		<guid isPermaLink="false">http://aniszczyk.org/?p=1376#comment-3158</guid>
		<description>Marketing is the major driver for a &#039;public&#039; version number in most cases. You get some interesting stories - for example, at one point our (now ex-) marketing team decided that products with a major version &quot;4&quot; were bad luck. So we had products go from 3.1 straight to 5.0 (which basically allows you to break binary compatibility twice!). People who don&#039;t care so much about that side of things have fun instead - like the π incident and negative range numbers. There&#039;s also plain old intransigence like the silly Scala 2.7 vs 2.8 affair.

@Scott - I&#039;ve seen that happen sooo many times. I&#039;ve always used version to tell a story - basically how hosed you are going to be once you upgrade. This ranges from 0) drop-in replacement; 1) we&#039;ve changed some third-party stuff; 2) you&#039;re going to have to re-write your scripts; 3) you&#039;re going to have to re-link all your binaries, sorry; 4) you&#039;re going to have to recompile everything, sorry; 5) you&#039;re going to have to re-write your code, sorry, by the way we have a new training course.</description>
		<content:encoded><![CDATA[<p>Marketing is the major driver for a &#8216;public&#8217; version number in most cases. You get some interesting stories &#8211; for example, at one point our (now ex-) marketing team decided that products with a major version &#8220;4&#8243; were bad luck. So we had products go from 3.1 straight to 5.0 (which basically allows you to break binary compatibility twice!). People who don&#8217;t care so much about that side of things have fun instead &#8211; like the π incident and negative range numbers. There&#8217;s also plain old intransigence like the silly Scala 2.7 vs 2.8 affair.</p>
<p>@Scott &#8211; I&#8217;ve seen that happen sooo many times. I&#8217;ve always used version to tell a story &#8211; basically how hosed you are going to be once you upgrade. This ranges from 0) drop-in replacement; 1) we&#8217;ve changed some third-party stuff; 2) you&#8217;re going to have to re-write your scripts; 3) you&#8217;re going to have to re-link all your binaries, sorry; 4) you&#8217;re going to have to recompile everything, sorry; 5) you&#8217;re going to have to re-write your code, sorry, by the way we have a new training course.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

