Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Historic reason for using periods in version numbers?

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?

like image 217
Mark Rushakoff Avatar asked Aug 26 '09 16:08

Mark Rushakoff


People also ask

What do the numbers in a version mean?

Reading version numbersThe leftmost number (1) is called the major version. The middle number (2) is called the minor version. The rightmost number (3) is called the revision but it may also be referred to as a "point release" or "subminor version".

What is the purpose of versioning?

In software development, versioning allows development teams to keep track of changes they make to the project code. The changes may include new functions, features or bug fixes. Minor changes can also be tracked in a similar manner.

How do you read a version number?

Structure of Version Numbers Version numbers are usually divided into sets of numbers, separated by decimal points. Typically, a change in the leftmost number indicates a major change in the software or driver. Changes in the rightmost number often indicate a minor change.

What is the first version in semantic versioning?

Major version zero (0. y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.


2 Answers

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 ...

like image 192
Zac Thompson Avatar answered Oct 10 '22 03:10

Zac Thompson


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.

like image 23
bethlakshmi Avatar answered Oct 10 '22 04:10

bethlakshmi