views:

599

answers:

8

Is there a historic reason that periods are used instead of any other separator for software versions?

One of our products was previously version 3.5, and now it's 3.08 -- I'm sure this was management saying that putting a leading zero would make it less confusing for our customers once we hit 3.10. But as a software developer, version 3.08 looks strange to me.

If we didn't use periods, the difference between version 3:9 and 3:10 or 3-9 to 3-10 would be more apparent, because it wouldn't be read as a decimal number. Moreover, to someone who is generally unfamiliar with software versioning, the decimal number seems to imply that version 3.5 is halfway to the next major release, when in reality we can't make any assumptions about the number of minor releases until the next major release.

I understand that now we typically use periods as a convention because that's what everyone else is doing - but was there a reason for using periods in the first place?

+1  A: 

It's not a decimal point. It's just a version seperator. People on continental europe still use a period for version seperation.

Pod
+5  A: 

The only interesting thing I find is this part of the Wikipedia entry about Software verisonning, which states (quoting) :

When printed, the sequences may be separated with characters. The choice of characters and their usage varies by scheme. The following list shows hypothetical examples of separation schemes for the same release (the thirteenth third-level revision to the fourth second-level revision to the second first-level revision):

  • A scheme may use the same character between all sequences: 2.4.13, 2/4/13, 2-4-13
  • A scheme choice of which sequences to separate may be inconsistent, separating some sequences but not others: 2.413
  • A scheme's choice of characters may be inconsistent within the same identifier: 2.4_13

When a period is used to separate sequences, it does not represent a decimal point, and the sequences do not have positional significance. An identifier of 2.5, for instance, is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision, and would not be appropriate[citation needed] unless there had been a 2.1, 2.2, 2.3, and 2.4.

Pascal MARTIN
it's not appropriate unless you're trying to catch up to the competition :) http://en.wikipedia.org/wiki/Oracle_Corporation#RDBMS_release_timeline
Jeremy Powell
...or actually according to the wikipedia article because no one wants to buy the first rev of a product.
Jeremy Powell
+2  A: 

You can also wonder why decimal point is the sign used to terminate sentences.08 How confusing!

+6  A: 

I'm not certain of the exact reason, but one possible influence may have been the versioning imposed by code repository systems (such as RCS/CVS) - which of course find the numbers much easier to manipulate than strings.

In addition, whoever came up with using decimal notation probably wasn't thinking at the time of either greater-than-nine subversions, or sub-subversioning. Those two limitations aside, decimal notation does serve as a decently intuitive approximation to software version's status.

DVK
cvs is a pain with periods... it doesn't allow them in tag names :)
ShuggyCoUk
A: 

That's not a decimal point, just a separator. Why they used this symbol is unknown and of little interest as a programming question...

But too much people think this is a decimal point, leading to confusion. But what about Firefox 3.0.13 or whatever 1.9.0.5213? Major number, minor number, revision number and build number are not uncommon (at least in the Microsoft world...).

PhiLho
+10  A: 

As DVK suggested, it almost certainly derives from SCCS, the original Source Code Control System. The numbers it used were 1.1, 1.2, ... 3.14, 3.15, ... etc.

If you want a deeper reason than that, you might want to ask Marc Rochkind (created SCCS).

Edit: okay, I emailed Marc Rochkind myself, and he said:

I think this started by analogy with decimal numbers. Version 1, version 2, version 2.1, etc., etc. Then adding more decimals, which makes no mathematical sense at all, but it's just a string anyway.

I don't think it originated with SCCS. I think this scheme was already in use by 1972 when I first started work on SCCS, so for us at Bell Labs it would have been the normal thing. So it's "earlier convention that SCCS used as its own inspiration".

... So, I wonder if ALGOL had been coded to use the European convention for the radix point, if we would all be using commas for our version separators instead ...

Zac Thompson
So, once again, we find it all starts with al-Khwārizmī
Zac Thompson
Thanks for doing the research, it's interesting to know that the convention was at least as early as Bell Labs. I already upvoted you before the edit, so sorry I can't upvote again.
Mark Rushakoff
+6  A: 

My guess is it has something to do with early operating system naming conventions. The first thing you want to do when you have a second version, is label any files and directories that are specific to that version.

Looking at Wikipedia, "/", "\", ":" and even "%" and "#" have implications to the location of the file, and would therefore be problematic as file names, particularly in a fairly primitive operating system.

"-", "_" and "." are all regularly used in filenames, so they'd be available for version naming.

But "-" has been used in date formats for a long time.

I'd actually argue that the model of decimal isn't such a bad one. While it does suggest that 1.5 is halfway between 1 and 2 -- it also suggests that the 1.1 version is not not as big a change from the 1.0 version as the 2.0 version will be. And it makes it possible to point out noticeable shifts in the baseline.

bethlakshmi
A: 

I think it's easier to just come up with a new number than a new name. Even Microsoft has returned to their regular numbering scheme again, going from Windows 2, 3, 3.1, 3.11 to 95, 98, ME, 2000, XP, Vista and now back to 7. Besides, using letter codes might result in unwanted associations. E.g. we have Windows CE, ME and NT which are three different Windows system that were all operational at about the same moment. (Just put the letters together.) At least, with numbers you don't have the risk of accidently spelling out some strange words. (Then again, Borland/Codegear/Embarcadero did skip version 13 of the Delphi RAD studio.) People also tend to avoid version numbers like 6.66 or 6.6.6 for some devilish reasons...

Workshop Alex
I agree with you except for the microsoft example. I think they're going back to number because it looks more serious for companies, and they'll do anything that might avoid them a second world wide FAIL like Vista...
p4bl0