About the author

Steven HarmanSteven Harman is a passionate developer who believes that writing great software isn't just a job, its a craft.

ASP.NET MVP

For recent posts and more about me, scroll to the bottom.

Subscribe

  • Subscribe to my feed. via RSS
  • Subscribe via email via email

Jobs

Badges

  • Subtext Project
  • Support Subtext
  • HiddenNetwork.com Banner

Software Versioning vs. Naming

Hello, my name is... This rant started as a comment to Jeff 'Coding Horror' Atwood's recent posted entitled "What's In a Version Number, Anyway?" In his post Jeff take a look at some of the What, Why, and How software gets its version numbers and how those influence the product's name.

The topic is particularly interesting to me as not too long ago Phil and I were discussing a possible change in the naming scheme used for Subtext. Anyone who has been following Subtext development (and releases) lately has probably noticed the flurry of version numbers that are leaking into the product name.

Subtext releases to date:

Up to and including the 1.9 release I didn't mind having the version number included in the name because it was an easy way to distinguish between the various flavors available. However now that there are 4 different 1.9.x releases alone it is starting to get a bit ugly and possibly confusing for users.

Keep in mind that we (the Subtext Project) do have a pretty sweet CI setup that automagically versions each build in an incremental manner. So internally the product has version numbers that follow the MSDN Versioning Scheme and I realize the need to keep those version numbers around for tracking purposes. However, I'm more interested in how to name a product - using the versioning scheme as a basis.

What about cute names?

We do give each release a codename that is supposed to follow a nautical theme (though a couple of times we've strayed away from that), but even those "cute" names don't clearly distinguish the progress of the software. I have the same problem with how Apple names each release of OS X.

Don't get me wrong, the code names are nice as they give each release a little character and they help for tracking and discussing the product. I mean, it sure is easier to talk about the Windward code set or release than it is to have to say "Oh, you're still running on the version-one-dot-nine-dot-two code..." That is just a big mouthful and sounds way too much like geek-speak for the average user.

Why not take a cue from the big guys?

As Jeff mentions, Microsoft has (for the most part) moved away from using version numbers in the consumer-friendly names of their products. They tend to use either the yeah (as in Office 2003, Office 2007, etc...) or marketing speak in the case of Windows XP and Windows Vista.

Those naming conventions work fine for products that have release schedules that span a couple of years. But using the year as part of the product name/version quickly fails when we're talking about software that releases several times per year. A good example is Subtext.

Since or goal is to release early and often we will ideally be pushing out a new release every 3 to 4 months... or at least twice a year. So how would you fit a year into our naming convention? I supposed we could use Jeff's suggestion and go with something like Subtext 2007, followed by Subtext 2007 (June), etc... but that just feel dirty to me.

Ok... how about Service Packs?

One idea that Phil and I have been tossing around is starting with Subtext 2.0 use just the major and minor version numbers for the name. And then we could use the "Service Pack" designation for those in between releases. If we were to retroactively apply this convention to the Subtext v1.9.x family we would have the following lineup:

  • Subtext 1.9 "Daedelus"
  • Subtext 1.9 Service Pack 1 "Shields Up"
  • Subtext 1.9 Service Pack 2 "Repair Job"
  • Subtext 1.9 Service Pack 3 "Windward"
  • Subtext 2.0 "Poseidon"
  • Subtext 2.1 "Red October"

I'm not sure I'm totally sold on this idea either. Maybe it would be better to just stick with the Major version number, and then have each minor version release be a Service Pack. But then what do we call something like the 1.9.4 release?

At any rate, I think that the Service Pack idea is an improvement over our current process/convention.

Ideas, suggestions?

So I'm interested to know, what ideas and/or suggestions do you all have for the versioning and naming of products with short release schedules like Subtext? Do you have any specific examples that have worked - or failed - that you can share?

What others are saying.

# re: Software Versioning vs. Naming
Gravatar Aaron
Feb 16, 2007
I am working on a theory. Customer + Version number = thing of the past. Bare with me, with the proper automated update routine a customer would never worry/know about a version number. Their software would just consistently get better.
Any way in the real world I don't have an answer. The next best thing would be to look to the publishing world SubText February 2007?
# re: Software Versioning vs. Naming
Gravatar Steve Harman
Feb 22, 2007
@Aaron: I wish we could figure out a way to make software automagically update itself to the most recent most appropriate version - and there seem to be others of the same opinion.

But back here in the real world I'll shoot for more realistic goals... like dating Scarlett or Natalie.

# re: Version Numbers
Gravatar Dave Donaldson's Blog
Feb 23, 2007
re: Version Numbers
# re: Software Versioning vs. Naming
Gravatar Sinister Shadow
Mar 13, 2007
You could consider adopting an approach similar to the one that the Ubuntu distribution uses. Ubuntu's next release is 7.04 scheduled for April 2007. Their last release was 6.10 and was available in October 2006. For a project that is updated every few months it seems like it could work quite nicely.
# re: Software Versioning vs. Naming
Gravatar Steve Harman
Mar 13, 2007
@Sinister: That is an interesting idea... but what happens in a few years when we're into 2010 and beyond?

I've just heard that using versions above 10 don't have the same impact as the lower ones... like it's to amateur or something? And we are just a few years from that point.

Thoughts?
# re: Software Versioning vs. Naming
Gravatar Sinister Shadow
Mar 13, 2007
I can think of 3 major companies that have publicly used version numbers larger than 9: Apple (Mac OS X aka Mac OS 10.x), Oracle (Oracle Database 10g) and, arguably, Microsoft (Office 12). I personally haven't considered the software or the vendors to be inferior or amateurish for using those labels.

I think most development teams don't even think about getting to version number 10 with their software. When they do, if they don't like the way it looks/sounds/etc they will come up with an alternative as you are trying to do now. As with anything, if something suits your purpose then you could use it now and, if you do, re-evaluate its usefulness later to see if it still meets your needs.

Also, you currently have a codename for each release so you could use that name more often in public and get people people refer to Subtext *codename* instead of Subtext *version number*. You can still keep the version number around for internal use and for those that are curious, similar to Microsoft's approach to Windows' versioning (XP is NT 5.1 and Vista is NT 6.0) and Ubuntu's approach to their releases (Edgy Eft is 6.10 and Feisty Fawn will be 7.04).



*******
-Subtext releases using Year.Month versioning-

Subtext 6.03 Nautilus
Subtext 6.06 Nautilus R&R Edition
Subtext 6.08 Daedelus
Subtext 6.10 Shields Up
Subtext 6.12 Repair Job
Subtext 7.02 Windward

/* insert another 15-20 releases */

Subtext 10.04 *codename*
Subtext 10.07 *codename*
...

*******


I'm currently working on a software project that will initially have a lot of releases so I'm thinking about using a variation of Ubuntu's Year.Month versioning and going for Year.DayOfYear[.Release/Build] but the Year.Month model seems to apply better to your release pattern.
# re: Software Versioning vs. Naming
Gravatar Steve Harman
Mar 13, 2007
Sinister, I certainly realize that many of the big guys are using version numbers in the 10+ range, and I'm not saying they are wrong in doing so... I was just looking for (OK, I was trying to bait you into giving) your feedback on the practice. And it seems to have worked. :)

Also, I think you raise a great point in that

if something suits your purpose then you could use it now and... re-evaluate its usefulness later to see if it still meets your needs.


Perhaps I'm falling into the old YAGNI trap and I should worry less about finding something that will work forever and focus more on what will suit our needs in the short term.

Thanks again for the feedback, the insight, and for giving me some more to think about!
# re: Software Versioning vs. Naming
Gravatar Sinister Shadow
Mar 13, 2007
Bait me? I'm not too sure I appreciate that! ;-)

I can rest easy tonight knowing that I've probably helped induce a headache in another person all in the name of helping them! Glad to have helped.

It will be nice to see what you settle down on.

On another note, almost nothing will work forever. Even the Sun will stop working one day! Besides, 3 years isn't considered short term by many people... is it? If it is then all the projects I've worked have been really short term!
# re: Software Versioning vs. Naming
Gravatar Steve Harman
Mar 13, 2007
Ah, touché!

I guess I didn't really mean forever when I used the word forever... stupid lexicon!
Comments have been closed on this topic.