Skip to content
Feb 19 2007

Version Numbers

Jeff Atwood recently wrote a post about software version numbers, and as usual, he makes a good case for using some form of dates for version numbers instead of the typical Major.Minor.Revision.Build numbers we geeks like to get caught up in. I agree with Jeff that is makes sense for the non-developer consumer to buy Office 2003 instead of Office 12.

But this got me thinking about version numbers from the developer perspective, especially for such things as agile and open source projects, in particular for projects that are small enough to be revved frequently, as in several times a year. For instance, since launching EViL back in December, there have been 4 releases: 1.0.0, 1.0.1, 1.0.2, and 1.0.3. And there will probably be a few other releases throughout the rest of this year. So if I were to use dates instead of version numbers, how would I have labeled the releases? EViL 12-06-2006, EViL 12-20-2006, EViL 1-25-2007, and EViL 2-15-2007? That just seems odd to me for something released so frequently.

On the other hand, an open source project the size of NHibernate doesn’t get updated very often. It’s release schedule falls somewhere in between EViL (every month or so) and Microsoft Office (every 4-5 years). So for NHibernate I can see how using a date might make sense, and instead of NHibernate 1.2 we’d have NHibernate 2007 (assuming it’s released later this year). However, NHibernate is only used by developers and not the general public, which leads me to believe that NHibernate 1.2 will work just fine.

In trying to wrap my head around this, I think there are actually three criteria to consider when deciding whether a product version should be number-based or date-based:

  • How often is the product released?
    • More than once per year probably takes you down the route of using number-based versions.
  • How big is the product? (Knowing that “big” means different things to different people)
    • If your product is “big”, then chances are you’ll only release your product at most once per year anyway, which takes you down the route of using date-based versions.
  • Who is the consumer of the product?
    • If the product will be used by your parents, date-based versions are the way to go. If it’s for developers, then either one will do, depending on the other two criteria above.

 

Similar Posts:

    None Found

  • http://stevenharman.net/ Steve Harman

    I’m struggling with similar questions with how to version/name Subtext.

    Our situation is somewhere between EViL (nearly monthly release) and NHibernate (about yearly releases) as we tend to release about every 3-4 monts… on average. I wrote more about it here.