<?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; software</title>
	<atom:link href="http://rwec.co.uk/blog/tag/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://rwec.co.uk/blog</link>
	<description>Rowan&#039;s World, Et Cetera</description>
	<lastBuildDate>Wed, 25 Apr 2012 08:36:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>My Top 3 LibreOffice Wishes</title>
		<link>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/</link>
		<comments>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/#comments</comments>
		<pubDate>Tue, 28 Sep 2010 21:53:37 +0000</pubDate>
		<dc:creator>Rowan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bugbears]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[libreoffice]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[openoffice]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rwec.co.uk/blog/?p=152</guid>
		<description><![CDATA[So, OpenOffice.org is to be forked from Oracle's control to the new "developer-friendly" Document Foundation. Let's hope this will give "LibreOffice" the boost it needs to really gain some polish. So here are my top 3 personal bug-bears that shouldn't be too hard to fix. Pretty please? The Installer The first screen of the Windows [...]]]></description>
			<content:encoded><![CDATA[<p>So, <a href="http://www.theregister.co.uk/2010/09/28/openoffice_independence_from_oracle/">OpenOffice.org is to be forked from Oracle's control</a> to the new "developer-friendly" <a href="http://www.documentfoundation.org">Document Foundation</a>. Let's hope this will give "LibreOffice" the boost it needs to really gain some polish. So here are my top 3 personal bug-bears that shouldn't be too hard to fix. Pretty please?</p>
<p><span id="more-152"></span></p>
<h2>The Installer</h2>
<p><img style="float: right;" src="/media/blog/openoffice-installer.png" alt="" title="The first screen of the OpenOffice.org 3.2 installer on Windows 7" /></p>
<p>The first screen of the Windows installer for OpenOffice.org asks a question which most users won't know how to answer, and gives them the wrong default. </p>
<p>It asks the user where to unpack the <em>temporary</em> files needed by the installer - files which the user should never need to see - and defaults to unpacking them <em>on the user's desktop</em>. </p>
<p>There are several things wrong with this dialog:</p>
<ol>
<li>
	<strong>It doesn't tell you why you'd ever change it.</strong> The way the dialog is worded, it sounds like the product itself will live in the selected location. But in actual fact, the only situations I can think of where you would need to change it are if you have limitted space on a particular disk partition, or an unusual permission setup. The default wording should reflect this: </p>
<blockquote><p>"The LibreOffice installer needs to unpack some temporary files to proceed. This will require roughly <strong>X</strong>MB of space. If the location shown below is not appropriate, please specify an alternative location."</p></blockquote>
</li>
<li>
	<strong>The desktop is not a temp folder.</strong> The "desktop cleanup wizard" is one of those bits of Windows that should never have been necessary, and it is abuses like this that mean it is. Quite simply, the default location for <em>temporary</em> installation files should be the <em>temp</em> directory provided by Windows.
</li>
<li>
	More subtly, <strong>these files aren't actually cleaned up</strong>. This is possibly the reason (or, excuse) for unpacking to the desktop rather than a temp folder: a successful installation of OpenOffice.org currently leaves a folder of unpacked installation files lying around, and it's up to the user to notice and delete these. I can only imagine that there are some problems with the installation executable deleting itself, but surely a stub could be placed in the permanent install directory to clean up the files once everything else has finished?
</li>
</ol>
<h2>The Help Assistant</h2>
<p><img style="float: right;" src="/media/blog/openoffice-help-popup.png" alt="" title="The OpenOffice.org Help Assistant: Not very helpful." /></p>
<p>The OpenOffice.org Help Assistant cunningly implements the least popular part of Microsoft's infamous "Office Assistant" feature - the cutesy cartoon graphic that pops up while you're working - without implementing its actual purpose - showing context-sensitive tips with a minimum of user interaction, and without using up too much screen space.</p>
<p>If the light-bulb graphic pops up while you're typing in a Writer document, you know that the help system is trying to tell you something. But you know absolutely nothing else - there is no polite speech bubble, no hint if you mouse over the icon, <em>nothing at all</em> until you click the icon <em>at which point a full-size help window appears</em> (and, in my experience, appears slowly). This is, frankly, worse than useless.</p>
<p>The simplest solution to this, frankly, is just to remove the feature. But if they really want this feature, then there is a small change that would change it from completely pointless to actually quite helpful: <strong>show a one-line summary of what the tip is actually about, <em>before</em> you click the graphic</strong>!</p>
<h2>Conditional Formatting in Spreadsheets</h2>
<p><img style="float: right;" src="/media/blog/openoffice-conditional-formatting.png" alt="" title="The OpenOffice.org Calc Conditional Formatting dialog" /></p>
<p>This one isn't such a big deal, really, but it's one of those little details that puts people off switching from, ahem, <em title="Microsoft Excel">rival applications</em>. It's also one of those cases where a bit of pragmatism is required.</p>
<p>Basically, if you want to have the formatting of cells in a spreadsheet in OpenOffice.org, you have to specify a <em>named style</em> for each rule.</p>
<p>Now, don't get me wrong, the style manager is one of the things I really like about OpenOffice.org when I'm working in Writer - to me, it makes all the difference between a "rich text editor" and a "word processor", and is much better than the versions of MS Word I've used. I can also see the reasoning behind <em>allowing</em> any styling to be applied by the conditional formatting, and the interface makes it easy to add a new style if you need to.</p>
<p>But 99% of the time, people will want to change two aspects of the matched cells: <em>the text colour</em> and <em>the background colour</em>. This is all most spreadsheet applications <em>allow</em> you to change, but they allow you to change them <em>really easily</em>. So, I'm happy for a new style to be created behind the scenes, but can I please have two little boxes labelled "Text colour" and "Background colour"?</p>
<h2>Yeah, I know...</h2>
<p>It's open source, I should</p>
<ol>
<li>Check the issue tracker for previous discussion of these issues.</li>
<li>Download the source code and fix them myself.</li>
</ol>
<p>But, y'know, I have to go and make some dinner now. Nobody's perfect, eh?</p>
]]></content:encoded>
			<wfw:commentRss>http://rwec.co.uk/blog/2010/09/my-top-3-libreoffice-wishes/feed/</wfw:commentRss>
		<slash:comments>0</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>

