<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rwec.co.uk &#187; compromise</title>
	<atom:link href="http://rwec.co.uk/blog/tag/compromise/feed/" rel="self" type="application/rss+xml" />
	<link>http://rwec.co.uk/blog</link>
	<description>Rowan&#039;s World, Et Cetera</description>
	<lastBuildDate>Sun, 27 Nov 2011 19:13:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Why I Hate Shopping</title>
		<link>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/</link>
		<comments>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 12:58:36 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[advertising]]></category>
		<category><![CDATA[choice]]></category>
		<category><![CDATA[compromise]]></category>
		<category><![CDATA[consumerism]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[shopping]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=197</guid>
		<description><![CDATA[I've never been very good at spending money. I'm lucky enough to have always had money to spend, but it often ends up sitting in the bank, unused. It's not that I don't know what I want or need to spend it on - for a geek, I have remarkably few shiny gadgets - but [...]]]></description>
			<content:encoded><![CDATA[<p>I've never been very good at spending money. I'm lucky enough to have always had money to spend, but it often ends up sitting in the bank, unused. It's not that I don't know what I want or need to spend it on - for a geek, I have remarkably few shiny gadgets - but simply that <strong>I don't like shopping</strong>.</p>
<p><span id="more-197"></span></p>
<p>When I was little, I used to like choosing things like digital watches, or my parents' new fridge or washing machine. I would go round all the shops, making notes on the candidates to be bought - I found some of them when I was clearing out a cupboard recently. I think it was my attempt to introduce a kind of scientific order into the chaos that is modern shopping - I guess you could call it the "Money Supermarket" method.</p>
<p>My least favourite kind of shopping is shoe shopping, closely followed by clothes shopping, both of which utterly defy this "scientific" analysis - other than price, there aren't any variables you can line up in a comparison grid. A pair of shoes either fits or not, as does a pair of trousers (judging by the stock in the shops, I must be the skinniest man in Eastbourne...); the rest is down to personal opinion - the problem being that my opinion when looking at a t-shirt in a shop is generally "oh, look, it's a t-shirt", which doesn't get me very far.</p>
<p>I have managed by a series of flukes never to buy a mobile phone, and consequently baffle my friends by always having out-dated and under-powered phones; and what kind of a geek uses his netbook as his only PC for 7 months simply because he hasn't got round to buying or building a replacement desktop? For one thing, there are simply <em>too many</em> variables to analyse, and I don't have the enthusiasm I had when I was 13 to sit there tabulating them all. But on top of that, the sheer quantity of hype and advertising around mobile phones makes me want to run away - the very idea of walking into Phones4U gives me the shudders, such is the unintended effect of their relentless marketing.</p>
<p>I have a general theory that <strong>everything in life is ultimately about compromise</strong> (well, probably not quite everything; I'm willing to compromise on that point...), and modern shopping is no exception. Generally, unless you are the richest person in the world, you will not be able to order something tailor-made to your exact requirements; but (in the Western / Developed World at least) you'll probably have a fair few options to choose from. But that means there's going to be pros and cons to weigh up, and ultimately you have to decide which compromise you like best or hate least. </p>
<p>Trying to turn all that hype, and all those compromises into a quantifiable, logical system - which is, most of the time, how my mind works - is tiring, and ultimately futile: eventually, you just have to plump for something, and live with it. Which is why I still haven't bought a smartphone.</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2011/06/why-i-hate-shopping/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Golden Rules of Version Naming</title>
		<link>http://rwec.co.uk/blog/2010/02/golden-rules-of-version-naming/</link>
		<comments>http://rwec.co.uk/blog/2010/02/golden-rules-of-version-naming/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 20:45:06 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[compromise]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[golden rules]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[semantic versioning]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[version name]]></category>
		<category><![CDATA[version number]]></category>
		<category><![CDATA[versioning]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=91</guid>
		<description><![CDATA[I've been pondering version numbers a lot recently - there's a lot of new "libraries" and major upgrades going on at work, and I've seen a few examples "in the wild" lately of people having to choose version numbers - and not always getting it right. It may seem like it's "just a label", but [...]]]></description>
			<content:encoded><![CDATA[<p>I've been pondering version numbers a lot recently - there's a lot of new "libraries" and major upgrades going on at work, and I've seen a few examples "in the wild" lately of people having to choose version numbers - and not always getting it right. It may seem like it's "just a label", but give something the "wrong" version number, and you can cause a lot of unnecessary confusion, as people <em>will</em> make assumptions based on it.</p>
<p>By an interesting coincidence, just as I was thinking about this post, I came upon Tom Preston-Warner's <a href="http://semver.org/">"Semantic Versioning Specification"</a>, which covers some of the issues nicely. But while he is mainly considering the problems of "dependency hell" - very important to consider when writing a library or tool which is likely to become a dependency for some other project downstream - there are wider issues with what a version number means to <em>people</em>, even if you are making a desktop application for use by "ordinary folks".</p>
<p>So, here are my "Golden Rules of Version Naming" - as with everything in life, they are often mutually contradictory, and full of exceptions; life is all about compromise, but that doesn't mean you have to compromise everything.</p>
<p><span id="more-91"></span></p>
<h1>Be Consistent</h1>
<h2>Be Consistent About Progression</h2>
<p>The most obvious thing that a version number should show is <strong>an obvious and consistent progression</strong> - the numbers should be getting higher, in some meaningful way. This may sound so obvious as not to mention, but it's possible to get it wrong - consider:</p>
<ul>
<li> The current version of <a href="http://www.pgadmin.org/">pgAdmin</a> - the popular open source desktop admin tool for PostgreSQL databases - is <em>pgAdmin III 1.10.1</em>. Now, I don't know the history of the project, but presumably at some point "pgAdmin 3" was started as a major rewrite of "pgAdmin 2"; but why not simply start it at version 3.0? The only reason I can think of is that they wanted to have "0.x" releases of the new codebase; but this is hardly an unsolved problem - Firefox 3.0 had <a href="https://wiki.mozilla.org/Firefox3/Schedule">8 Alpha and 5 Beta releases</a> without needing to reset to 1.0 afterwards...</li>
<li>The incredibly popular <em>Street Fighter 2</em> was infamous throughout the '90s for increasingly hyperbolic "edition" names, such as "Super Street Fighter II Turbo". To be fair, it seems a <em>Street Fighter 3</em> was finally released in 1997, although that too received 3 "editions".</li>
<li>An interesting problem comes up if your versions aren't just numbers. <em>Ubuntu</em> releases have both a version "number" which is actually an abbreviated year and month, and an alliterative animal code-name (such as "Dapper Drake" for version 6.06). Cunningly, these code-names are now being assigned in alphabetical order, so you can tell at a glance that an "Intrepid Ibex" is more out of date than a "Karmic Koala".</li>
</ul>
<h2>Be Consistent in Your Logic</h2>
<p>It's also important to be <strong>consistent with your own versioning scheme</strong> - you could adopt <a href="http://semver.org/">"Semantic Versioning"</a>, or something like it; or perhaps you could adopt the convention used by Linux, GNOME, and others that "every odd minor release is unstable" (so Linux 2.4.x was stable, and once 2.5.x became stable, it was renamed 2.6.x), but either way, you need to decide early on, and stick to it.</p>
<ul>
<li>A recent failure of this is <a href="http://www.mozilla.org/projects/calendar/lightning/"><em>Lightning</em></a>, the popular calendar plugin for <em>Thunderbird</em>. Having released versions numbered from 0.1 to 0.9, they released something called "1.0 beta 1", the first release compatible with Thunderbird 3. This led to plenty of users - myself included - waiting patiently for version 1.0, which was presumably just around the corner. Wrong - the developers clarified the situation with a <a href="http://weblogs.mozillazine.org/calendar/2010/01/statement_on_the_recent_lightn.html">blog post proclaiming this "the best Lightning release ... released to the public"</a>. Evidently, they considered 0.9 to also be a "beta" release, but in that case surely this is not "beta 1" but "beta 10"?</li>
<li>Sometimes, of course, you define your convention wrong, and have to change it; Firefox 2.0.x.x had a very strict four-part versioning scheme. However, in practice, the highest release in that series was 2.0.0.20; so they waited until version 3, and revised it to have just three parts, as in version 3.5.8.</li>
</ul>
<h2>Be Consistent Across Related Products</h2>
<p>If you have a series of closely related products, or products which you sell as a bundle, it's a good idea to <strong>give them consistent version names</strong>.</p>
<ul>
<li>The prime example of this is probably <em>Microsoft Office</em>, which originally bundled together separate versions of <em>Word</em> and <em>Excel</em>. As the suite began to gain more common functionality, branding, and additional tools, Microsoft decided to give every program in the suite the same version, starting with 7.0 for <em>Office 95</em> - even though only Word had reached 6.0, itself skipping versions 3, 4, and 5 on Windows as they had been used for separate Mac releases.</li>
<li>An interesting case it <a href="http://tortoisesvn.net/"><em>TortoiseSVN</em></a>, which is built against the strictly-versioned <em>Subversion</em> libraries. Most (but not all) fixes to underlying <em>Subversion</em> code require a new version or <em>Tortoise</em>, but there are also bug and even functionality improvements to the interface itself. The solution they've chosen is to track the <em>first two parts</em> of the <em>Subversion </em>version, but track there own releases with the third part - so the latest version is 1.6.7, built against <em>Subversion </em>1.6.9.</li>
<li>The author of the Lightning <a href="https://addons.mozilla.org/en-US/thunderbird/addon/4631">Provider for Google Calendar</a> extension fell foul of this consistency when updating to support the badly named "1.0 beta 1" release mentioned above - the extension had only reached version 0.6, but he duly added "beta 1" to the name, explaining thus:<br />
<blockquote><p>"Even though the version number suggests this is beta level software, it has been tested just as well as the previous releases. The naming is aligned to the Lightning version numbers."</p></blockquote>
</li>
<li>Although careful with their over-all logic, the Mozilla project has a rather odd inconsistency between the <a href="https://wiki.mozilla.org/Releases/Branches">internal branch versions</a> of the "Gecko" core and the applications built from it. Namely, Firefox 3.6 is Gecko 1.9.2, while Thunderbird 3.0 is Gecko 1.9.1 (as was Firefox 3.5); these apparently follow a very slow progression from the versions of the original Mozilla suite, which ceased at version 1.7.13 three years ago.</li>
</ul>
<h2>Be Consistent With Your Branding</h2>
<p>The naming scheme that makes sense for programmers may not make for great branding, and vice versa; but that's no reason not to at least <em>attempt</em> to <strong>keep version-like branding consistent with your actual versioning</strong>.</p>
<ul>
<li>Probably the most famous failure of this recently has been Windows 7 - not only does <em>no-one know </em>why it got that name, but its internal (kernel) version number is actually 6.1 - if you want to concoct your own theory, you can consult <a href="http://rwec.co.uk/q/winver">my handy table of Windows versions</a>. At some point, a version of Windows will presumably be released with an internal version number of 7.0, leading to the fun of distinguishing "Windows 7"<em></em> from "Windows version 7.0". I guess if they have any sense, the developers can skip the internal version to 8.0...</li>
<li>On the other hand, <em>MacOS X</em>, despite being an almost entirely different system from <em>MacOS</em> 9 and earlier, has had subsequent releases numbered as 10.1, 10.2, and so on, so that the "X for 10" branding is still valid.</li>
<li>Sun's branding around Java is (or has been) a total minefield; my favourite example is a paragraph from <em>Computer Weekly</em> magazine, which I unfortunately no longer have, but went something along the lines of "at the upcoming JavaOne '03 conference, Sun will launch the Java2 J2SE JRE 1.4, along with Sun One Studio 5 and Sun One Application Server 7" (versions based on <a href="http://www.computerweekly.com/Articles/2003/06/13/195248/sun-has-java-update-in-the-works.htm">this article, which is almost as bad</a>). If "Java 2" was so much better than "Java 1", why did <strong>none</strong> of the tools receive a major version increment!?</li>
</ul>
<h1>Be Bold</h1>
<h2>Be Bold With Numbers Above 9</h2>
<p>A common problem with version numbers is that they look like decimal numbers - version 0.2 looks like something you can do maths with, and version 0.2.0 could just be "0.2 with a .0 stuck on". This leads programmers to the quite erroneous assumption that unless they started with 0.01, they will run out of digits at 0.9 - <strong>there is nothing wrong with version 0.10</strong>.</p>
<p>One way to look at this is that version strings <em>are</em> numbers, but not in base 10 but some arbitrarily high base; the dots aren't decimal points, they're to separate the "digits", each of which is written in base 10 to keep the alphabet small. Or just say "it's not a number" and get on with it.</p>
<p>The only problem comes when trying to sort lists, such as files in a directory, but that's because string sorting algorithms are generally pretty awful at sorting numbers anyway - <em>this is not a bug in your naming convention, it's a bug in your file manager</em>.</p>
<ul>
<li>This is probably what caused the mess with <em>Lightning</em> mentioned earlier - having reached version 0.9, but not ready for the big 1.0, the developers panicked, and picked a confusing fudge. If they'd stuck to 0.10, they could have carried on with 0.11 if necessary, and no-one would be in any doubt what they meant.</li>
<li>Another great example is <a href="http://flyspray.org/"><em>Flyspray</em></a>, a bug tracking system which branched for 1.0, then seemed to approach it asymptotically with increasingly daft version numbers, including 0.9.9.5.1! Sadly, the project seems to have stalled, and I suspect it's unlikely 1.0 will ever be released.</li>
</ul>
<h2>Be Bold With Major Versions</h2>
<p>The other thing developers are always reluctant to do is increase the "major" version number. Projects will continue for years on versions in a 1.x - or even 0.x - sequence, because the new version is somehow never "quite different enough". Indeed, given a three- or four-part versioning scheme, people will try to mark as little change as possible - version 1.1 happens far more often than version 2.0, but the actual change varies wildly.</p>
<p>This, in part, is what the <a href="http://semver.org/">"Semantic  Versioning Specification"</a> is trying to solve (he even covers the 1.0 problem in the FAQ). But in general <strong>don't be afraid of version 1.0, or 2.0</strong>; and every now and then, when planning the next release, ask yourself <strong>"why <em>not </em>bump the major version?"<br />
</strong></p>
<ul>
<li>One of our main projects at work for a long time had 2 main branches, numbered 2.3.x and 2.5.x. Eventually, someone decided it was time to call it 2.6, but we continued to have releases like 2.6.2.5 until we could reset the scheme (like Firefox!) with version 3.0.</li>
<li>This is, of course, what motivated both <em>Lightning</em> and <em>Flyspray</em> to odd release numbers - they didn't feel they'd "done enough" for version 1.0</li>
<li>This is also part of the problem with <em>pgAdmin</em> - how many times can you release 1.0, and update to 1.x, before you have to admit you've reached 2.0?</li>
<li>On the other hand, one project that has recently made <a href="http://archives.postgresql.org/pgsql-hackers/2010-01/msg02168.php">a considered decision</a> to bump a major rather than minor version number is PostgreSQL itself - the <a href="http://archives.postgresql.org/pgsql-hackers/2010-01/msg02056.php">next release will be not 8.5 but 9.0</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2010/02/golden-rules-of-version-naming/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

