Tag Archives: Microsoft

10 Useful Windows Commands You Should Know

by Chris Hoffman on August 1st, 2017

xtcp_top.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.JHHyiYBrVe

There are some things you can only do from the command line—even in Windows. Some of these tools don’t have graphical equivalents, while others are just plain faster to use than their graphical interfaces.

If you’re into using PowerShell over Command Prompt, you should note that all the commands we’re covering in this article work just the same in either tool. And obviously, we can’t possibly cover all the useful commands that these tools offer. Instead, we’ll be focusing on commands that should be useful even if you’re not a command-line person.

ipconfig: Quickly Find Your IP Address


xtcp_1.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.MG36CB80Ac

You can find your IP address from the Control Panel, but it takes a few clicks to get there. The ipconfig command is a fast way of determining your computer’s IP address and other information, such as the address of its default gateway—useful if you want to know the IP address of your router’s web interface.

To use the command, just type ipconfig at the Command Prompt. You’ll see a list of all the network connections your computer is using. Look under “Wireless LAN adapter” if you’re connected to Wi-Fi or “Ethernet adapter” if you’re connected to a wired network. For even more details, you can use the ipconfig /all command.

ipconfig /flushdns: Flush Your DNS Resolver Cache


xtcp_2.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.8e0VMXna1M

If you change your DNS server, the effects won’t necessarily take place immediately. Windows uses a cache that remembers DNS responses it’s received, saving time when you access the same addresses again in the future. To ensure Windows is getting addresses from the new DNS servers instead of using old, cached entries, run the ipconfig /flushdns command after changing your DNS server.

ping and tracert: Troubleshoot Network Connection Issues


xtcp_3.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.-e-jLXjD7r

If you’re experiencing issues connecting to a website or other network connection issues, Windows and other operating systems have some standard tools you can use to identify problems.

First, there’s the ping command. Type ping howtogeek.com (or whatever Internet server you want to test) and Windows will send packets to that address. You can use either a name or the actual IP address. The server at that IP address (in our case, the How-To Geek server) will respond and let you know it’s received them. You’ll be able to see if any packets didn’t make it to the destination—perhaps you’re experiencing packet loss—and how long it took to get the response—perhaps the network is saturated and packets are taking a while to reach their destinations.

The tracert command traces the route it takes for a packet to reach a destination and shows you information about each hop along that route. For example, if you run tracert howtogeek.com, you’ll see information about each node the packet interacts with on its way to reach our server. If you’re having issues connecting to a website, tracert can show you where the problem is occurring.

xtcp_4.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.mPhRpVqns4

For more information about using these commands—and other great tools for figuring out why your network or Internet connection is giving you problems—check out our introduction to troubleshooting Internet connection problems.

shutdown: Create Shutdown Shortcuts for Windows


xtcp_5.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.Ph7qGkzzEI

The shutdown command lets you shut down or restart Windows. Admittedly, it was more useful in Windows 8 (where the shut down button was harder to access), but still handy no matter what version of Windows you use. You can use the command to create your own shortcuts and place them on your Start menu, desktop, or even taskbar.

In Windows 8 and 10, you can even use a special switch to restart your computer into the advanced startup options menu. To use the command at the Command Prompt or when creating a shortcut, just type one of the following:

  • shutdown /s /t 0: Performs a regular shut down.
  • shutdown /r /t 0: Restart the computer.
  • shutdown /r /o: Restarts the computer into advanced options.

sfc /scannow: Scan System Files for Problems


xtcp_6.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.62Ahd7n2X6

Windows includes a system file checker tool that scans all the Windows system files and looks for problems. If system files are missing or corrupted, the system file checker will repair them. This may fix problems with some Windows systems.

To use this tool, open a Command Prompt window as Administrator and run the sfc /scannow command.

telnet: Connect to Telnet Servers


xtcp_7.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.LKqdsSsA0d

The telnet client isn’t installed by default. Instead, it’s one of the optional Windows features that you can install through the Control Panel. Once installed, you can use the telnet command to connect to telnet servers without installing any third-party software.

You should avoid using telnet if you can help it, but if you’re connected directly to a device and it requires that you use telnet to set something up—well, that’s what you have to do.

cipher: Permanently Delete and Overwrite a Directory


xtcp_8.png.pagespeed.gp+jp+jw+pj+ws+js+rj+rp+rw+ri+cp+md.ic.PJPOVN6X07

The cipher command is mostly used for managing encryption, but it also has an option that will write garbage data to a drive, clearing its free space and ensuring no deleted file can be recovered. Deleted files normally stick around on disk unless you’re using a solid state drive. The cipher command effectively allows you to “wipe” a drive without installing any third-party tools.

To use the command, specify the drive you want to wipe like so:

cipher /w:C:\

Notice that there is no space between the switch ( /w: ) and the drive ( C:\ )

netstat -an: List Network Connections and Ports


tcp_9

The netstat command is particularly useful, displaying all sorts of network statistics when used with its various options. One of the most interesting variants of netstat is netstat -an , which will display a list of all open network connections on their computer, along with the port they’re using and the foreign IP address they’re connected to.

nslookup: Find the IP Address Associated With a Domain


tcp_10

When you type a domain name (say, into a browser address bar), your computer looks up the IP address associated with that domain name. You can use the nslookupcommand to find that information out for yourself. For example, you could type nslookup howtogeek.com at the Command Prompt to quickly find out our server’s assigned IP address.

You can also perform a reverse lookup by typing an IP address to find out the associated domain name.


This is not a comprehensive list of all the commands you might find useful, but we hope it’s given you some idea of the many powerful tools lurking under the surface. Have your own favorites we didn’t mention? Join in the discussion and let us know!


 

 

Comparison of Microsoft Windows Versions

From Wikipedia, the free encyclopedia

Microsoft Windows is the name of several families of computer software operating systems created by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces (GUIs).

General information


Basic general information about Windows.

DOS shells

DOS shells

Windows 9x

Windows 9x

Windows NT

Windows NT

^N has also an N-edition
^K has also an N-edition
^KN has also an N-edition
^x64 has a separate x64-edition
^Core has also a Core-edition
^wHV has also an edition without HyperV
^CwHV has also a Core-edition without HyperV

Windows Embedded Compact

Windows Embedded Compact (Windows CE) is a variation of Microsoft’s Windows operating system for minimalistic computers and embedded systems. Windows CE is a distinctly different kernel, rather than a trimmed-down version of desktop Windows. It is supported on Intel x86 and compatibles, MIPS, ARM, and Hitachi SuperH processors.

Windows Embedded Compact

Windows Mobile

Windows Mobile is Microsoft’s discontinued line of operating systems for smartphones.

Windows Mobile

Windows Phone

As of 2013 Windows Phone is Microsoft’s active line of operating systems for smartphones.

Windows Phone

Technical Information


DOS Shells

DOS shells - TECH

Windows 9x

Windows 9x TECH

It is possible to install the MS-DOS variants 7.0 and 7.1 without the graphics user interface of Windows. If an independent installation of both, DOS and Windows is desired, DOS ought to be installed prior to Windows, at the start of a small partition. The system must be transferred by the (dangerous) “SYSTEM” DOS-command, while the other files constituting DOS can simply be copied (the files located in the DOS-root and the entire COMMAND directory). Such a stand-alone installation of MS-DOS 8 is not possible, as it’s designed to work as real mode for Windows Me and nothing else.

Windows NT

The Windows NT kernel powers all recent Windows operating systems. It runs on IA-32, x64 and Itanium processors.

Windows NT TECH

Windows Phone

Windows Phone TECH

Supported File Systems


Various versions of Windows support various file systems, including: FAT12, FAT16, FAT32, HPFS, or NTFS, along with network file systems shared from other computers, and the ISO 9660 and UDF file systems used for CDs, DVDs, and other optical discs such as Blu-ray. Each file system is usually limited in application to certain media, for example CDs must use ISO 9660 or UDF, and as of Windows Vista, NTFS is the only file system which the operating system can be installed on. Windows Embedded CE 6.0, Windows Vista Service Pack 1, and Windows Server 2008 onwards support exFAT, a file system more suitable for USB flash drives.

Windows 9x

Windows 9x SUPPORT

Windows NT

Windows NT SUPPORT

Windows Phone

Windows Phone SUPPORT

Hardware Requirements


Installing Windows requires an internal or external optical drive. A keyboard and mouse are the recommended input devices, though some versions support a touchscreen. For operating systems prior to Vista, the drive must be capable of reading CD media, while in Windows Vista onwards, the drive must be DVD-compatible. The drive may be detached after installing Windows.

Windows 9x

Windows 9x HW

Windows NT

Windows NT HW

Windows Phone

Windows Phone HW

Physical Memory Limits


Maximum limits on physical memory (RAM) that Windows can address vary depending on both the Windows version and between IA-32 and x64versions.[8][9]

  • Windows 9x[edit]
  • Windows 95: 480 MB[10]
  • Windows 98: 1 GB
  • Windows Me: 1.5 GB

Windows NT

Windows NT MEMORY

Security Features


Security features

Features


Features

Timeline


6da855d32e819ac4fc08794da83c0e22

 

 

Microsoft Version Numbering

From Wikipedia, the free encyclopedia

Software Versioning

144px-VersionNumbers.svg

Software versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software. Within a given version number category (major, minor), these numbers are generally assigned in increasing order and correspond to new developments in the software. At a fine-grained level, revision control is often used for keeping track of incrementally different versions of information, whether or not this information is computer software.

Modern computer software is often tracked using two different software versioning schemes—internal version number that may be incremented many times in a single day, such as a revision control number, and a released version that typically changes far less often, such as semantic versioning or a project code name.

Contents
1 Schemes
1.1 Sequence-based identifiers
1.1.1 Change significance
1.1.2 Degree of compatibility
1.1.3 Designating development stage
1.1.4 Incrementing sequences
1.1.5 Separating sequences
1.1.6 Number of sequences
1.1.7 Using negative numbers
1.2 Date of release
1.3 Alphanumeric codes
1.4 TeX
1.5 Apple
1.6 Other schemes
2 Internal version numbers
3 Pre-release versions
4 Modifications to the numeric system
4.1 Odd-numbered versions for development releases
4.2 Apple
5 Political and cultural significance of version numbers
5.1 Version 1.0 as a milestone
5.2 To describe program history
5.3 Matching competitor’s numbers
5.4 Apple
6 Dropping the most significant element
6.1 Superstition
6.2 Geek culture
7 Overcoming perceived marketing difficulties
8 Significance in software engineering
9 Significance in technical support
10 Version numbers for files and documents
11 Version number ordering systems
12 Use in other media

Schemes


A variety of version numbering schemes have been created to keep track of different versions of a piece of software. The ubiquity of computers has also led to these schemes being used in contexts outside computing.

Sequence-based Identifiers

In sequence-based software versioning schemes, each software release is assigned a unique identifier that consists of one or more sequences of numbers or letters. This is the extent of the commonality; however, schemes vary widely in areas such as the quantity of sequences, the attribution of meaning to individual sequences, and the means of incrementing the sequences.

Change Significance

In some schemes, sequence-based identifiers are used to convey the significance of changes between releases: changes are classified by significance level, and the decision of which sequence to change between releases is based on the significance of the changes from the previous release, whereby the first sequence is changed for the most significant changes, and changes to sequences after the first represent changes of decreasing significance.

For instance, in a scheme that uses a four-sequence identifier, the first sequence may be incremented only when the code is completely rewritten, while a change to the user interface or the documentation may only warrant a change to the fourth sequence.

This practice permits users (or potential adopters) to evaluate how much real-world testing a given software release has undergone. If changes are made between, say, 1.3rc4 (a release candidate) and the production release of 1.3, then that release, which asserts that it has had a production-grade level of testing in the real world, in fact contains changes which have not necessarily been tested in the real world at all. This approach commonly permits the third level of numbering (“change”), but does not apply this level of rigor to changes in that number: 1.3.1, 1.3.2, 1.3.3, 1.3.4… 1.4.1, etc.

In principle, in subsequent releases, the major number is increased when there are significant jumps in functionality such as changing the framework which could cause incompatibility with interfacing systems, the minor number is incremented when only minor features or significant fixes have been added, and the revision number is incremented when minor bugs are fixed. A typical product might use the numbers 0.9 (for beta software), 0.9.1, 0.9.2, 0.9.3, 1.0, 1.0.1, 1.0.2, 1.1, 1.1.1, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, etc. Developers may choose to jump multiple minor versions at a time to indicate significant features have been added, but are not enough to warrant incrementing a major version number; for example Internet Explorer 5 from 5.1 to 5.5, or Adobe Photoshop 5 to 5.5. This may be done to emphasize the value of the upgrade to the software user, or, as in Adobe’s case, to represent a release halfway between major versions (although levels of sequence based versioning are not limited to a single digit, as in Drupal version 7.12).

A different approach is to use the major and minor numbers, along with an alphanumeric string denoting the release type, e.g. “alpha”, “beta” or “release candidate”. A software release train using this approach might look like 0.5, 0.6, 0.7, 0.8, 0.9 == 1.0b1, 1.0b2 (with some fixes), 1.0b3 (with more fixes) == 1.0rc1 (which, if it is stable enough) == 1.0. If 1.0rc1 turns out to have bugs which must be fixed, it turns into 1.0rc2, and so on. The important characteristic of this approach is that the first version of a given level (beta, RC, production) must be identical to the last version of the release below it: you cannot make any changes at all from the last beta to the first RC, or from the last RC to production. If you do, you must roll out another release at that lower level.[dubious – discuss]

However, since version numbers are human-generated, not computer-generated, there is nothing that prevents arbitrary changes that violate such guidelines: for example, the first sequence could be incremented between versions that differ by not even a single line of code, to give the (false) impression that very significant changes were made.

Other schemes impart meaning on individual sequences:

major.minor[.build[.revision]]

or

major.minor[.maintenance[.build]]

Again, in these examples, the definition of what constitutes a “major” as opposed to a “minor” change is entirely subjective and up to the author, as is what defines a “build”, or how a “revision” differs from a “minor” change.

Shared libraries in Solaris and Linux may use the current.revision.age format where

current: The most recent interface number that the library implements.
revision: The implementation number of the current interface.
age: The difference between the newest and oldest interfaces that the library implements.
A similar problem of relative change significance and versioning nomenclature exists in book publishing, where edition numbers or names can be chosen based on varying criteria.

In most proprietary software, the first released version of a software product has version 1.

Degree of Compatibility

Some projects use the major version number to indicate incompatible releases. Two examples are Apache APR and the FarCry CMS.

Semantic Versioning is a formal convention for specifying compatibility using a three-part version number: major version; minor version; and patch. The patch number is incremented for minor changes and bug fixes which do not change the software’s application programming interface (API). The minor version is incremented for releases which add new, but backward-compatible, API features, and the major version is incremented for API changes which are not backward-compatible. For example, software which relies on version 2.1.5 of an API is compatible with version 2.2.3, but not necessarily with 3.2.4.

Often programmers write new software to be backward compatible, i.e., the new software is designed to interact correctly with older versions of the software (using old protocols and file formats) and the most recent version (using the latest protocols and file formats). For example, IBM z/OS is designed to work properly with 3 consecutive major versions of the operating system running in the same sysplex. This enables people who run a high availability computer cluster to keep most of the computers up and running while one machine at a time is shut down, upgraded, and restored to service.

Often packet headers and file format include a version number – sometimes the same as the version number of the software that wrote it; other times a “protocol version number” independent of the software version number. The code to handle old deprecated protocols and file formats is often seen as cruft.

Designating development stage
Some schemes use a zero in the first sequence to designate alpha or beta status for releases that are not stable enough for general or practical deployment and are intended for testing or internal use only.

It can be used in the third position:

  • 0 for alpha (status)
  • 1 for beta (status)
  • 2 for release candidate
  • 3 for (final) release

For instance:

  • 1.2.0.1 instead of 1.2-a1
  • 1.2.1.2 instead of 1.2-b2 (beta with some bug fixes)
  • 1.2.2.3 instead of 1.2-rc3 (release candidate)
  • 1.2.3.0 instead of 1.2-r (commercial distribution)
  • 1.2.3.5 instead of 1.2-r5 (commercial distribution with many bug fixes)

Incrementing Sequences

There are two schools of thought regarding how numeric version numbers are incremented. Most free and open-source software packages, including MediaWiki, treat versions as a series of individual numbers, separated by periods, with a progression such as 1.7.0, 1.8.0, 1.8.1, 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.11.2, and so on. On the other hand, some software packages identify releases by decimal numbers: 1.7, 1.8, 1.81, 1.82, 1.9, etc. Decimal versions were common in the 1980s, for example with NetWare, DOS, and Microsoft Windows, but even in the 2000s have been for example used by Opera and Movable Type. In the decimal scheme, 1.81 is the minor version following 1.8, while maintenance releases (i.e. bug fixes only) may be denoted with an alphabetic suffix, such as 1.81a or 1.81b.

The standard GNU version numbering scheme is major.minor.revision, but emacs is a notable example using another scheme where the major number (1) was dropped and a user site revision was added which is always zero in original emacs packages but increased by distributors. Similarly, Debian package numbers are prefixed with an optional “epoch”, which is used to allow the versioning scheme to be changed.

Separating Sequences

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 may or may not represent a decimal point, — see “Incrementing sequences” section for various interpretation styles.

Number of Sequences

There is sometimes a fourth, unpublished number which denotes the software build (as used by Microsoft). Adobe Flash is a notable case where a four-part version number is indicated publicly, as in 10.1.53.64. Some companies also include the build date. Version numbers may also include letters and other characters, such as Lotus 1-2-3 Release 1a.

Using Negative Numbers

Some projects use negative version numbers. One example is the SmartEiffel compiler which started from -1.0 and counted upwards to 0.0.

Date of Release

The Wine project formerly used a date versioning scheme, which uses the year followed by the month followed by the day of the release; for example, “Wine 20040505”. Ubuntu Linux uses a similar versioning scheme—Ubuntu 11.10, for example, was released October 2011. Some video games also use date as versioning, for example the arcade game Street Fighter EX. At startup it displays the version number as a date plus a region code, for example 961219 ASIA.

When using dates in versioning, for instance, file names, it is common to use the ISO 8601 scheme: YYYY-MM-DD, as this is easily string sorted to increasing/decreasing order. The hyphens are sometimes omitted.

Microsoft Office build numbers are an encoded date: the first two numbers is the number of months passed from the January of the year the project started (with each major Office release being a different project), and the last two numbers are the day of that month. So 3419 is the 19th day of the 34th month after the month of January of the year the project started.

Other examples that identify versions by year include Adobe Illustrator 88 and WordPerfect Office 2003. When a date is used to denote version, it is generally for marketing purposes, and an actual version number also exists. For example, Microsoft Windows 95 is internally versioned as MS-DOS 7.00 and Windows 4.00, Microsoft Windows 2000 Server is internally versioned as Windows NT 5.0 (“NT” being a reference to the original product name).

Alphanumeric codes

Examples:

Macromedia Flash MX

TeX

TeX has an idiosyncratic version numbering system. Since version 3, updates have been indicated by adding an extra digit at the end, so that the version number asymptotically approaches π; this is a form of unary numbering – the version number is the number of digits. The current version is 3.14159265. This is a reflection of the fact that TeX is now very stable, and only minor updates are anticipated. TeX developer Donald Knuth has stated that the “absolutely final change (to be made after my death)” will be to change the version number to π, at which point all remaining bugs will become permanent features.

In a similar way, the version number of METAFONT asymptotically approaches e.

Apple

Apple has a formalised version number structure based around the NumVersion struct, which specifies a one- or two-digit major version, a one-digit minor version, a one-digit “bug” (i.e. revision) version, a stage indicator (drawn from the set development/prealpha, alpha, beta and final/release), and a one-byte (i.e. having values in the range 0–255) pre-release version, which is only used at stages prior to final. In writing these version numbers as strings, the convention is to omit any parts after the minor version whose value are zero (with “final” being considered the zero stage), thus writing 1.0.2 (rather than 1.0.2b12), 1.0.2 (rather than 1.0.2f0), and 1.1 (rather than 1.1.0f0).

Other Schemes

Some software producers use different schemes to denote releases of their software. For example, the Microsoft Windows operating system was first labelled with standard version numbers for Windows 1.0 through Windows 3.11. After this Microsoft excluded the version number from the product name. For Windows 95 (version 4.0), Windows 98 (4.10) and Windows 2000 (5.0), year of the release was included in the product title. After Windows 2000, Microsoft created the Windows Server family which continued the year-based style with a difference: For minor releases, Microsoft suffixed “R2” to the title, e.g., Windows Server 2008 R2. This style had remained consistent to this date. The client versions of Windows however did not adopt a consistent style. First, they received names with arbitrary alphanumeric suffixes as with Windows ME (4.90), Windows XP (5.1) and Windows Vista (6.0). Then, once again Microsoft adopted incremental numbers in the title, but this time, they were not version numbers; the version numbers of Windows 7, Windows 8 and Windows 8.1 are respectively 6.1, 6.2 and 6.3. In Windows 10, the version number leaped to 10.0.

The Debian project uses a major/minor versioning scheme for releases of its operating system, but uses code names from the movie Toy Story during development to refer to stable, unstable and testing releases.

BLAG Linux and GNU features very large version numbers: major releases have numbers such as 50000 and 60000, while minor releases increase the number by 1 (e.g. 50001, 50002). Alpha and beta releases are given decimal version numbers slightly less than the major release number, such as 19999.00071 for alpha 1 of version 20000, and 29999.50000 for beta 2 of version 30000. Starting at 9001 in 2003, the most recent version as of 2011 is 140000.

Internal Version Numbers


Software may have an “internal” version number which differs from the version number shown in the product name (and which typically follows version numbering rules more consistently). Java SE 5.0, for example, has the internal version number of 1.5.0, and versions of Windows from NT 4 on have continued the standard numerical versions internally: Windows 2000 is NT 5.0, XP is Windows NT 5.1, Windows Server 2003 and Windows XP Professional x64 Edition are NT 5.2, Windows Server 2008 and Vista are NT 6.0, Windows Server 2008 R2 and Windows 7 are NT 6.1, Windows Server 2012 and Windows 8 are NT 6.2, and Windows Server 2012 R2 and Windows 8.1 are NT 6.3. Note, however, that Windows NT is only on its fourth major revision, as its first release was numbered 3.1 (to match the then-current Windows release number).

Pre-release Versions


In conjunction with the various versioning schemes listed above, a system for denoting pre-release versions is generally used, as the program makes its way through the stages of the software release life cycle.

Programs that are in an early stage are often called “alpha” software, after the first letter in the Greek alphabet. After they mature but are not yet ready for release, they may be called “beta” software, after the second letter in the Greek alphabet. Generally alpha software is tested by developers only, while beta software is distributed for community testing.

Some systems use numerical versions less than 1 (such as 0.9), to suggest their approach toward a final “1.0” release. This is a common convention in open source software. However, if the pre-release version is for an existing software package (e.g. version 2.5), then an “a” or “alpha” may be appended to the version number. So the alpha version of the 2.5 release might be identified as 2.5a or 2.5.a.

An alternative is to refer to pre-release versions as “release candidates”, so that software packages which are soon to be released as a particular version may carry that version tag followed by “rc-#”, indicating the number of the release candidate – and when the final version is released, the “rc” tag is removed.

Modifications to the Numeric System


This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged and removed. (September 2010) (Learn how and when to remove this template message)
Various modifications have been introduced to distinguish versions or sets of versions. A set of releases or versions having the same major or minor version number may be collectively referred to as .x, for example version 2.2.x to refer to versions 2.2, 2.2.1, 2.2.2, and all other versions in the 2.2 branch of that software.

Odd-numbered versions for development releases

Between the 1.0 and the 2.6.x series, the Linux kernel used odd minor version numbers to denote development releases and even minor version numbers to denote stable releases; see Linux kernel: Version numbering. For example, Linux 2.3 was a development family of the second major design of the Linux kernel, and Linux 2.4 was the stable release family that Linux 2.3 matured into. After the minor version number in the Linux kernel is the release number, in ascending order; for example, Linux 2.4.0 → Linux 2.4.22. Since the 2004 release of the 2.6 kernel, Linux no longer uses this system, and has a much shorter release cycle.

The same odd-even system is used by some other software with long release cycles, such as GNOME.

Apple

Apple had their own twist on this habit during the era of the classic Mac OS: although there were minor releases, they rarely went beyond 1, and when they did, they twice jumped straight to 5, suggesting a change of magnitude intermediate between a major and minor release (thus, 8.5 really means ‘eight and a half’, and 8.6 is ‘eight and a half point one’). The complete sequence of versions (neglecting revision releases) is 1.0, 1.1, 2.0, 2.1, 3.0, 3.2 (skipping 3.1), 4.0, 4.1, 5.0, 5.1, 6.0, 7.0, 7.1, 7.5, 7.6, 8.0, 8.1, 8.5, 8.6, 9.0, 9.1, 9.2.

Mac OS X (since renamed macOS) departed from this trend, in large part because “X” (the Roman numeral for 10) is in the name of the product. As a result, all versions of OS X begin with the number 10. The first major release of OS X was given the version number 10.0, but the next major release was not 11.0. Instead, it was named version 10.1, followed by 10.2, 10.3, and so on for each subsequent major release.

In this system, the third number (instead of the second) denotes a minor release, and a fourth number (instead of the third) denotes bug-fix/revision releases. Because the first number is always 10, and because the subsequent numbers are not decimal, but integer values, the 11th major version of OS X is labeled “10.10” rather than “11.0”.

Political and Cultural Significance of Version Numbers


Version 1.0 as a Milestone

Proprietary software developers often start at version 1 for the first release of a program and increment the major version number with each significant update.

In contrast to this, the free-software community tends to use version 1.0 as a major milestone, indicating that the software is “complete”, that it has all major features, and is considered reliable enough for general release.

In this scheme, the version number slowly approaches 1.0 as more and more bugs are fixed in preparation for the 1.0 release. The developers of MAME do not intend to release a version 1.0 of their emulator program. The argument is that it will never be truly “finished” because there will always be more arcade games. Version 0.99 was simply followed by version 0.100 (minor version 100 > 99). In a similar fashion Xfire 1.99 was followed by 1.100. After 8 years of development, eMule reached version 0.50a.

To describe Program History

Winamp released an entirely different architecture for version 3 of the program. Due to lack of backward compatibility with plugins and other resources from the major version 2, a new version was issued that was compatible with both version 2 and 3. The new version was set to 5 (2+3), skipping version 4. A similar situation occurred with UnixWare 7, which was the combination of UnixWare 2 and OpenServer 5.

Matching Competitor’s Numbers

A practice in the software industry is to make major jumps in numeric major or minor version numbers for reasons which do not seem (to many members of the program’s audience) to merit the marketing version numbers.

This can be seen in many examples of product version numbering by Microsoft, America Online, Sun Solaris, Java Virtual Machine, SCO Unix, WordPerfect, the filePro DB/RAD programming package, which went from 2.0 to 3.0 to 4.0 to 4.1 to 4.5 to 4.8 to 5.0, and is about to go to 5.6, with no intervening release. A slightly different version can be seen in AOL’s PC client software, which tends to have only major releases (5.0, 6.0, 7.0, etc.). Likewise, Microsoft Access jumped from version 2.0 to version 7.0, to match the version number of Microsoft Word.

Microsoft has also been the target of ‘catch-up’ versioning, with the Netscape browsers skipping version 5 to 6, in line with Microsoft’s Internet Explorer, but also because the Mozilla application suite inherited version 5 in its user agent string during pre-1.0 development and Netscape 6.x was built upon Mozilla’s code base.

Another example of keeping up with competitors is when Slackware Linux jumped from version 4 to version 7 in 1999.

Apple

Apple has a particular form of version number skipping, in that it has leveraged its use of the Roman numeral X in its marketing across multiple product lines. Both Quicktime and Final Cut Pro jumped from versions 7 directly to version 10. Like with Mac OS X, the products were not upgrades to previous versions, but brand new programs, branded as Quicktime X and Final Cut Pro X, but unlike Apple’s desktop operating systems, there were no major versions 8 or 9. As with OS X, however, minor releases are denoted using a third digit, rather than a second digit. Consequently, major releases for these programs also employ the second digit, as Apple does with OS X. In WWDC 2016, they announced that Mac OS X will now onwards be called macOS.

Dropping the most Significant Element


Sun’s Java has at times had a hybrid system, where the internal version number has always been 1.x but has been marketed by reference only to the x:

  • JDK 1.0.3
  • JDK 1.1.2 through 1.1.8
  • J2SE 1.2.0 (“Java 2”) through 1.4.2
  • Java 1.5.0, 1.6.0, 1.7.0, 1.8.0 (“Java 5, 6, 7, 8”)

Sun also dropped the first digit for Solaris, where Solaris 2.8 (or 2.9) is referred to as Solaris 8 (or 9) in marketing materials.

A similar jump took place with the Asterisk open-source PBX construction kit in the early 2010s, whose project leads announced that the current version 1.8.x would soon be followed by version 10.

This approach, panned by many because it breaks the semantic significance of the sections of the version number, has been adopted by an increasing number of vendors including Mozilla (for Firefox).

Superstition

  • The Office 2007 release of Microsoft Office has an internal version number of 12. The next version Office 2010 has an internal version of 14, due to superstitions surrounding the number 13.
  • Roxio Toast went from version 12 to version 14, likely in an effort to skip the superstitions surrounding the number 13.
  • Corel’s WordPerfect Office, version 13 is marketed as “X3” (Roman number 10 and “3”). The procedure has continued into the next version, X4. The same has happened with Corel’s Graphic Suite (i.e. CorelDRAW, Corel Photo-Paint) as well as its video editing software “Video Studio”.
  • Sybase skipped major versions 13 and 14 in its Adaptive Server Enterprise relational database product, moving from 12.5 to 15.0.
    ABBYY Lingvo Dictionary uses numbering 12, x3 (14), x5 (15).

Geek Culture

  • The SUSE Linux distribution started at version 4.2, to reference 42, “the answer to the ultimate question of life, the universe and everything” mentioned in Douglas Adams’ The Hitchhiker’s Guide To The Galaxy.
  • A Slackware Linux distribution was versioned 13.37, referencing leet.
  • Finnix skipped from version 93.0 to 100, partly to fulfill the assertion, “There Will Be No Finnix ’95”, a reference to Windows 95.
  • The Tagged Image File Format specification has used 42 as internal version number since its inception, its designers not expecting to alter it anymore during their (or its) lifetime since it would conflict with its development directives.

Overcoming perceived Marketing Difficulties


In the mid-1990s, the rapidly growing CMMS, Maximo, moved from Maximo Series 3 directly to Series 5, skipping Series 4 due to that number’s perceived marketing difficulties in the Chinese market, where the number 4 is associated with “death” (see tetraphobia). This did not, however, stop Maximo Series 5 version 4.0 being released. (It should be noted the “Series” versioning has since been dropped, effectively resetting version numbers after Series 5 version 1.0’s release.)

Significance in Software Engineering


Version numbers are used in practical terms by the consumer, or client, to identify or compare their copy of the software product against another copy, such as the newest version released by the developer. For the programmer or company, versioning is often used on a revision-by-revision basis, where individual parts of the software are compared and contrasted with newer or older revisions of those same parts, often in a collaborative version control system.

In the 21st century, more programmers started to use a formalised version policy, such as the Semantic Versioning policy. The purpose of such policies is to make it easier for other programmers to know when code changes are likely to break things they have written. Such policies are especially important for software libraries and frameworks, but may also be very useful to follow for command-line applications (which may be called from other applications) and indeed any other applications (which may be scripted and/or extended by third parties).

Versioning is also a required practice to enable many schemes of patching and upgrading software, especially to automatically decide what and where to upgrade to.

Significance in Technical Support


Version numbers allow people providing support to ascertain exactly which code a user is running, so that they can rule out bugs that have already been fixed as a cause of an issue, and the like. This is especially important when a program has a substantial user community, especially when that community is large enough that the people providing technical support are not the people who wrote the code. The semantic meaning of version.revision.change style numbering is also important to information technology staff, who often use it to determine how much attention and research they need to pay to a new release before deploying it in their facility. As a rule of thumb, the bigger the changes, the larger the chances that something might break (although examining the Changelog, if any, may reveal only superficial or irrelevant changes). This is one reason for some of the distaste expressed in the “drop the major release” approach taken by Asterisk et alia: now, staff must (or at least should) do a full regression test for every update.

Version Numbers for Files and Documents


Some computer file systems, such as the OpenVMS Filesystem, also keep versions for files.

Versioning amongst documents is relatively similar to the routine used with computers and software engineering, where with each small change in the structure, contents, or conditions, the version number is incremented by 1, or a smaller or larger value, again depending on the personal preference of the author and the size or importance of changes made.

Version Number Ordering Systems


Version numbers very quickly evolve from simple integers (1, 2, …) to rational numbers (2.08, 2.09, 2.10) and then to non-numeric “numbers” such as 4:3.4.3-2. These complex version numbers are therefore better treated as character strings. Operating systems that include package management facilities (such as all non-trivial Linux or BSD distributions) will use a distribution-specific algorithm for comparing version numbers of different software packages. For example, the ordering algorithms of Red Hat and derived distributions differ to those of the Debian-like distributions.

As an example of surprising version number ordering implementation behavior, in Debian, leading zeroes are ignored in chunks, so that 5.0005 and 5.5 are considered as equal, and 5.5<5.0006. This can confuse users; string-matching tools may fail to find a given version number; and this can cause subtle bugs in package management if the programmers use string-indexed data structures such as version-number indexed hash tables.

In order to ease sorting, some software packages will represent each component of the major.minor.release scheme with a fixed width. Perl represents its version numbers as a floating-point number, for example, Perl’s 5.8.7 release can also be represented as 5.008007. This allows a theoretical version of 5.8.10 to be represented as 5.008010. Other software packages will pack each segment into a fixed bit width, for example, on Windows, version number 6.3.9600.16384 would be represented as hexadecimal 0x0006000325804000. The floating-point scheme will break down if any segment of the version number exceeds 999; a packed-binary scheme employing 16 bits apiece after 65535.

Use in Other Media


Software-style version numbers can be found in other media.

In some cases, the use is a direct analogy (for example: Jackass 2.5, a version of Jackass Number Two with additional special features; the second album by Garbage, titled Version 2.0; or Dungeons & Dragons 3.5, where the rules were revised from the third edition, but not so much as to be considered the fourth).

More often it’s used to play on an association with high technology, and doesn’t literally indicate a ‘version’ (e.g., Tron 2.0, a video game followup to the film Tron, or the television series The IT Crowd, which refers to the second season as Version 2.0). A particularly notable usage is Web 2.0, referring to websites from the early 2000s that emphasized user-generated content, usability and interoperability.