Question

How do you distinguish between a "patch" and an "upgrade"? Where do you draw the line?

A certain specification says I need to do "X" whenever I release an upgrade to the product. I need to draw the line somewhere. I don't want to violate this spec, but I've never really explicitly defined it before.

Was it helpful?

Solution

With respect to software versioning (especially semantic versioning), patching will upgrade a software's patch version number, and updates upgrade their minor version number. For applications that follow semantic versioning (in MAJOR.MINOR.PATCH format), a patch is defined as:

increment the [...] PATCH version when you make backwards-compatible bug fixes.

In most cases, patches update the third number, the maintenance version. Updates update the minor version number. Furthermore, patches usually fix problems while maintaining compatibility, whereas updates can both fix problems as well as add new features which may not be compatible with previous versions. One may additionally append a build or revision number past the patch number:

MAJOR.MINOR.PATCH    or    MAJOR.MINOR.PATCH.BUILD

So a version number 2.1.3.089 is the second major version, first minor revision (so there has been one major update), third maintenance build (so three patches since version 2.1.0.X was released), and build 089 (no significance to builds/patches, can be thought of as additional metadata specifying a unique version ID/number).

The Wikipedia article on software versioning is an interesting read. The reason I specify the M.M.M.B style is that it is commonly used in Visual Studio during application development.

In some cases, however, the last number (build) is omitted - for end users, rarely is this ever needed. It's mostly for development purposes only.

OTHER TIPS

A patch is generally something that is pushed out to fix a critical error or issue or security issue. Updates or releases are probably more along the lines of additional functionality and features to the software.

I don't think there's any "standard definition" although the generally accepted definition is that a patch fixes bugs and an upgrade introduces new features.

It would really depend on how the people who wrote your specification defined patches vs. upgrades, not on how I or anyone else defines it.

For me the biggest thing is what drives the issue.

A patch is usually to fix a problem and therefore requested from a user.

An upgrade is usually to add new functionality and although sometimes driven by users are more often started internally.

There is also a great lot of marketing involved.

I'm not wiling to pay for a patch while I might pay for an update (I'm looking at you OSX users).

If the spec doesn't define patch or upgrade, then you get to draw the line wherever you like (and think you can get away with). Assuming you don't want to go back to the spec writer for guidance, I'd draw the line between 'bug fix' and 'new feature'.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top