Backporting


Backporting is the action of taking parts from a newer version of a software system or software component and porting them to an older version of the same software. It forms part of the maintenance step in a software development process, and it is commonly used for fixing security issues in older versions of the software and also for providing new features to older versions.

Overview

The simplest and probably most common situation of backporting is a fixed security hole in a newer version of a piece of software. Consider this simplified example:
By taking the modification that fixes Software v2.0 and changing it so that it applies to Software v1.0, one has effectively backported the fix.
In real-life situations, the modifications that a single aspect of the software has undergone may be simple up to heavy and massive. In the latter case, backporting may become tedious and inefficient and should only be undergone if the older version of the software is really needed in favour of the newer.

Procedures

The process of backporting can be roughly divided into these steps:
Usually, multiple such modifications are bundled in a patch set.
Backports can be provided by the core developer group of the software. Since backporting needs access to the source code of a piece of software, this is the only way that backporting is done for closed source software the backports will usually be incorporated in binary upgrades along the old version line of the software. With open-source software, backports are sometimes created by software distributors and later sent upstream.

Examples

Many features of Windows Vista were backported to Windows XP when Service Pack 3 was released for Windows XP, thereby facilitating compatibility of applications originally with Vista as a minimum requirement to run on XP SP3 as a minimum requirement instead.
Debian Project since September 2010 provides an official backporting service for some Debian Linux software packages, and Ubuntu Linux also supports backports, however Ubuntu Backports receives no support at all from Canonical, and is entirely community-maintained.