18

Probably the most widespread software version numbering scheme in use today takes the form of a dotted sequence of integers. Variants of this scheme usually share the following characteristics:

  • Version numbers consist of at least two (often three, rarely four) non-negative integers written in decimal notation and separated from each other by full stops, sometimes with an extra tag appended at the end (alpha, beta, rc, sometimes with further numbers following);
  • The ordering is big-endian: the first number denotes the most significant kind of change. As such, version tuples can be (usually) sorted lexicographically;
  • The first integer is called the ‘major’ release number, the second the ‘minor’ release number, and the third (if present) is usually called the ‘patch’ release number;
  • The first stable version is commonly denoted 1.0; major version 0 denotes pre-release or unstable versions.

Other version naming systems do exist (code names, date-based version numbers, TeX’s ‘asymptotic’ numbering), but this one is probably the most well-known. It has even made its way into popular culture, with phrases like ‘Web 2.0’ and its snowclones entering the popular lexicon. Semantic Versioning is a modern form of it (though far from universally adopted). Also, sometimes, with only major and minor release numbers present, the full version number was commonly thought of as a decimal fraction (for example, Windows 3.1 is internally known as 3.10, and these version numbers are considered equivalent; version number 0.9 or 0.99 often suggests that it’s very close to 1.0), though today this usage seems to be slowly fading away.

Where was this version numbering scheme invented? What was the first software package to use it? Did the ‘minor’ number originally denote a fraction or was it an independent number from the start?

user3840170
  • 23,072
  • 4
  • 91
  • 150
  • Does LISP 1.5 count? It came after LISP 1 and before LISP 2 (which never really took off). – texdr.aft Jun 02 '21 at 03:32
  • 2
    Maybe? Though I’d also welcome a more ‘classical’ example where the first release was numbered 1.0 and the next one 1.1 or 2.0 – user3840170 Jun 02 '21 at 03:49
  • It appears that Emacs has had this sort of numbering system since the mid-1980s. Also TeX82 used a conventional style until version 3. – texdr.aft Jun 02 '21 at 04:19
  • 4
    LISP possibly had 1.5 because it wasn't quite 2 but it was different enough from 1. I am wondering if this form of numbering appeared after SCCS was released (1977) . SCCS used 1.1, 1.2 numbering for the files. – cup Jun 02 '21 at 07:01
  • @cup LISP 1.5 was nearly identical to LISP 1, but LISP 2 was very, very different from LISP 1.5 (and thus LISP 1). – texdr.aft Jun 02 '21 at 07:15
  • 4
    This numbering scheme was used in printed documents long before is was applied to software versions, so I think that the question may be ill-formed, perhaps it should ask when the dot notation originated or when it was first applied to software versions. – Frog Jun 02 '21 at 11:00
  • 1
    @Frog Was it ever used for printed document versioning? I find it rather improbable that printed document versioning was sufficiently complex that it required numbering major and minor revisions separately. – user3840170 Jun 02 '21 at 11:44
  • 6
    I think we're just going to have to play "who can find the oldest document". Certainly DEC was using this form in the early 1960s (TOPS-10 release history), though it was somewhat product-dependent; forms like "V6B" rather than "V6.1" were also used until the late 1970s. – dave Jun 02 '21 at 13:04
  • 3
    At the same time, ICT in the UK were using a similar scheme, at least for the GEORGE 3 operating system, though since American had not yet been adopted as the language of computing, they were "marks" rather than "versions" - as in GEORGE 3 Mark 8.67. – dave Jun 02 '21 at 13:11
  • 7
    At one rather large company where I worked, they told me; When the third number gets bumped, that's a bug fix that is pushed out to all customers on record, when the second number gets bumped, that's a UI/performance/feature enhancement that gets pushed out to customers who pay for support, and when the first number gets bumped, that is considered to be a new product. – Solomon Slow Jun 02 '21 at 14:19
  • @user3840170 I don’t know about revision control, but the numbering scheme was common for chapter/paragraph/sentence identification; it would be a small logical step to apply the same principle to software and indeed hardware versions. – Frog Jun 02 '21 at 19:36
  • 2
    There was a time when manufacturers preferred to keep the major revision number small to show that the product was stable. Nowadays changing the major revision shows progress and new features and nobody bothers how high any of the numbers go. – cup Aug 11 '22 at 05:03
  • Semantic versioning (https://semver.org/) for APIs and libraries bumps the major number for breaking changes to the API, the minor number for non-breaking API changes, and the patch number for bug fixes. Sadly, there's no equivalent standard that I know of for applications. – Wayne Conrad Aug 11 '22 at 18:37

3 Answers3

6

In the early days of modern operating systems and software development there was no internet. A software release was a big deal and you couldn't easily ship a patch out to all the users. Thus, point releases were not used. Releases were numbered as early as FORTRAN II in 1958 from IBM.

Similarly Unix v1, from Bell labs in 1971, came in numbered editions.

An early example of dot notation in versioning is seen in TRS-DOS 2.0 released by RadioShack in July 1978. TRSDOS 2.1, released September 1978, contained bugfixes for version 2.0 and so the dot notation used in the 70's was similar to the dot-notation you see in modern semantic versioning. While these systems were not network capable, the ability to go get an update disk at Radio Shack allowed them to have this sort of patch release cycle not available to Bell labs or IBM, who would have mailed disks to users.

From these examples we see that this dot notation was common between 1971-1978 and that it did have a similar meaning at the time it was seen in public releases.

EDITs: This PDP history found by @another-dave shows dot notation being used in 1964. I consider the PDP, and the Unix OS it ran, to be the birth of modern computing so it would seem that this pattern was there from the beginning.

It should be noted that revision history control started in other engineering fields before computers existed. In mechanical engineering there was a need to show that one plan superseded a previous manufacturing plan. A drawing revision often used letters, numbers, or a combination of the two. There was a need to distinguish when a change affected "fit, form, or function" of the part being manufactured. This is where you would begin to see a {major}.{minor} revision numbering scheme. You could roll the minor number to indicate that the physical product at the end should be identical to the part made from all drawings of the same major revision. This is similar to the software concept of "breaking change" so a similar pattern is used. Revision control is now codified in engineering standards like ASME Y14.35M and ISO 9001:2015.

HackSlash
  • 505
  • 4
  • 6
  • 3
    In my opinion, by answering this question at all you accept its basic assumption (the numbering scheme being an "IT invention") - which I think is just plain wrong. – tofro Aug 10 '22 at 17:24
  • 4
    @tofro I don’t think I presuppose that anywhere in the question. If this is a convention imported from somewhere else, I’d be perfectly happy with an answer showing that. I only note that computing is where it’s best known from. – user3840170 Aug 11 '22 at 05:13
  • Now it's much better ;) (Even if the second part of the answer somewhat invalidates the first) – tofro Aug 11 '22 at 16:35
3

I encountered dot-notations when I played around with revision control systems. And SCCS used this notation for the revisions of files, potentially including the executable of the specific project. SCCS was written in 1972.

the busybee
  • 1,054
  • 6
  • 15
2

The dotted notation was used for the Soviet operating system DISPAK (Russian wiki), some time in the late 70s, to indicate branching due to a disagreement between the co-developers from two organizations.

The main branch retained "integer" version numbers (at the time of the split, 94, if memory serves), where the "renegade" branch version number was dubbed 94.1, thus earning the nickname "the dot" (точка, 'tochka').

While being superior in some aspects, unfortunately, it was not met with sufficient customer acceptance to survive.

Leo B.
  • 19,082
  • 5
  • 49
  • 141