Backporting: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>HyperAccelerated
 
imported>Curlyquote
m Punctuation
 
Line 1: Line 1:
{{short description|Process for fixing older software versions}}
{{short description|Developing an update for older software based on an update to a newer version}}


'''Backporting''' is the action of taking parts from a newer [[Software versioning|version]] of a [[software system]] or [[software component]] and [[porting]] them to an older version of the same software. It forms part of the [[software maintenance|maintenance]] step in a [[software development process]], and it is commonly used for fixing [[Security bug|security issues]] in older versions of the software and also for providing new features to older versions.
'''Backporting''' is the process of [[porting]] a [[software update]] that was developed for a relatively current [[Software versioning|version]] of a [[software]] entity, to an older version of the software. It is a [[software maintenance|maintenance]] activity of the [[software development process]]. Although a backported update can modify any aspect of the software, the technique is typically used for relatively small scope changes {{endash}} such as fixing a [[software bug]] or [[security vulnerability]].


==Overview==
For example, v2 of an application had a vulnerability that was addressed by creating and publishing an update. The same vulnerability exists in v1 and the version is still in use. The modification that was originally applied to v2 is backported to v1 and adapted to apply to v1.<ref name="redhat-backporting">{{cite web | url = https://access.redhat.com/security/updates/backporting/ | title = Backporting Security Fixes | publisher = [[Red Hat]] | access-date = 2020-05-11 | archive-date = 2020-05-12 | archive-url = https://web.archive.org/web/20200512171443/https://access.redhat.com/security/updates/backporting/ | url-status = live }}</ref>
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:


* Software v2.0 had a [[security vulnerability]] that is fixed by changing the text 'is_unsecured' to 'is_secured'.
One aspect that affects the effort to backport a change is the degree to which the software has changed between versions (for aspects other than the backported change). Backporting can be relatively simple if only a few lines of [[Source code|code]] have changed, but complex for heavily modified code. As such, [[cost–benefit analysis]] analysis may be performed to determine whether a change should be backported.<ref name="fedora-upstream">{{cite web | url = https://fedoraproject.org/wiki/Staying_close_to_upstream_projects | title = Staying close to upstream projects | author = Rahul Sundaram | date = 2016-01-14 | publisher = [[Fedora Project]] | access-date = 2020-05-11 | archive-date = 2011-08-05 | archive-url = https://web.archive.org/web/20110805082914/http://fedoraproject.org/wiki/Staying_close_to_upstream_projects | url-status = live }}</ref>
* The same security hole exists in Software v1.0, from which the [[codebase]] for the newer version is derived, but there the text may read 'is_notsecure'.


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.<ref name="redhat-backporting">{{cite web | url = https://access.redhat.com/security/updates/backporting/ | title = Backporting Security Fixes | publisher = [[Red Hat]] | access-date = 2020-05-11 | archive-date = 2020-05-12 | archive-url = https://web.archive.org/web/20200512171443/https://access.redhat.com/security/updates/backporting/ | url-status = live }}</ref>
==Procedures==
Backporting generally starts one of two ways. Sometimes, as a change is being developed for the latest code, the issue is known to apply to older versions and therefore, backporting is known to have value. If it's determined to be worthwhile, the change is backported. But, sometimes older versions are not considered when fixing an issue. Sometimes the backporting process starts when an issue is discovered or reported in an older version and then it's determined that the issue was fixed in a new version, making backporting an economical option as opposed to re-inventing a fix. After the existing change is backported, the development process is like for any change. The changed code is [[quality control]]led to verify that it exhibits fixed behavior and maintains previous functionality. Then, it is distributed. Multiple modifications are commonly bundled into a single [[software update]].
<ref name="redhat-backporting" />


In real-life situations, the modifications that a single aspect of the software has undergone may be simple (only a few lines of [[Source code|code]] have changed) up to heavy and massive (many modifications spread across multiple [[Computer file|files]] of the code). In the latter case, backporting may become tedious and inefficient and should only be undertaken if the older version of the software is really needed in favour of the newer (if, for example, the newer version still suffers [[Robustness (computer science)|stability]] problems that prevent its use in mission-critical situations).<ref name="fedora-upstream">{{cite web | url = https://fedoraproject.org/wiki/Staying_close_to_upstream_projects | title = Staying close to upstream projects | author = Rahul Sundaram | date = 2016-01-14 | publisher = [[Fedora Project]] | access-date = 2020-05-11 | archive-date = 2011-08-05 | archive-url = https://web.archive.org/web/20110805082914/http://fedoraproject.org/wiki/Staying_close_to_upstream_projects | url-status = live }}</ref>
As for any update, for [[closed-source software]], backport updates are produced and distributed by the owner of the software, but for [[open-source software]], anyone can produce and distribute a backported update.  


==Procedures==
A notable process is for the [[Linux kernel]] codebase. Backports are sometimes created by [[Linux distribution|Linux distributors]] and later [[Upstream (software development)|upstreamed]] to the core codebase by submitting changes to the maintainer of the changed component.<ref name="fedora-upstream" />
The process of backporting can be roughly divided into these steps:<ref name="redhat-backporting" />
# identification of the problem in the older version of the software that needs to be fixed by a backport
# finding out which (usually recent) modification of the code fixed the problem
# adapting the modification to the old code situation (the proper backporting)
# one or several levels of [[quality control]]{{snd}} testing whether the backported version maintains previous functionality as well as if it properly implements the new functionality.


Usually, multiple such modifications are bundled in a [[Patch (computing)|patch]] set.
==Examples==


Backports can be provided by the core [[Software developer|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]]{{snd}} the backports will usually be incorporated in [[Binary file|binary]] [[upgrade]]s along the old version line of the software. With [[open-source software]], backports are sometimes created by [[Linux distribution|software distributors]] and later sent [[Upstream (software development)|upstream]] (that is, submitted to the core developers of the afflicted software).<ref name="fedora-upstream" />
Many features of [[Windows Vista]] were backported to [[Windows XP]] when Service Pack 3 was released for Windows XP, thereby facilitating compatibility of applications (mostly games) originally with Vista as a minimum requirement to run on XP SP3 as a minimum requirement instead.<ref>{{cite web | url = https://www.engadget.com/2007-10-09-microsoft-backports-vista-features-for-new-windows-xp-sp3-beta.html | title = Microsoft backports Vista features for new Windows XP SP3 beta | date = 2007-10-09 | author = Donald Melanson | publisher = [[Engadget]] | access-date = 2020-05-11 | archive-date = 2016-03-04 | archive-url = https://web.archive.org/web/20160304033042/http://www.engadget.com/2007/10/09/microsoft-backports-vista-features-for-new-windows-xp-sp3-beta/ | url-status = live }}</ref>


==Examples==
The [[Debian Project]] since September 2010<ref>{{cite web| url = https://www.debian.org/News/2010/20100905| title = Backports service becoming official| date = 2010-09-05| publisher = [[Debian Project]]| access-date = 2020-05-11| archive-date = 2011-09-03| archive-url = https://web.archive.org/web/20110903172855/http://www.debian.org/News/2010/20100905| url-status = live}}</ref> has provided an official backporting service for some [[Debian Linux]] software packages, and [[Ubuntu]] Linux also supports backports.<ref>{{cite web | url = https://help.ubuntu.com/community/UbuntuBackports | title = UbuntuBackports | date = 2015-11-29 | publisher = [[Ubuntu Project]] | access-date = 2020-05-11 | archive-date = 2019-05-03 | archive-url = https://web.archive.org/web/20190503051547/https://help.ubuntu.com/community/UbuntuBackports | url-status = live }}</ref>


* Many features of [[Windows Vista]] were backported to [[Windows XP]] when Service Pack 3 was released for Windows XP, thereby facilitating compatibility of applications (mostly games) originally with Vista as a minimum requirement to run on XP SP3 as a minimum requirement instead.<ref>{{cite web | url = https://www.engadget.com/2007-10-09-microsoft-backports-vista-features-for-new-windows-xp-sp3-beta.html | title = Microsoft backports Vista features for new Windows XP SP3 beta | date = 2007-10-09 | author = Donald Melanson | publisher = [[Engadget]] | access-date = 2020-05-11 | archive-date = 2016-03-04 | archive-url = https://web.archive.org/web/20160304033042/http://www.engadget.com/2007/10/09/microsoft-backports-vista-features-for-new-windows-xp-sp3-beta/ | url-status = live }}</ref>
In 2024, a [[YouTuber]] named MattKC backported [[.NET Framework]] versions 2.0 and 3.5 to [[Windows 95]], which did not officially support the framework.<ref>{{Cite web |last=Harper |first=Christopher |date=2024-04-14 |title=Thousands of apps ported back to Windows 95 twenty-eight years later — .NET Framework port enables backward compatibility for modern software |url=https://www.tomshardware.com/software/operating-systems/thousands-of-apps-ported-back-to-windows-95-twenty-eight-years-later-net-framework-port-enables-backward-compatibility-for-modern-software |access-date=2024-07-01 |website=[[Tom's Hardware]] |language=en |archive-date=2024-05-31 |archive-url=https://web.archive.org/web/20240531170725/https://www.tomshardware.com/software/operating-systems/thousands-of-apps-ported-back-to-windows-95-twenty-eight-years-later-net-framework-port-enables-backward-compatibility-for-modern-software |url-status=live }}</ref><ref>{{Cite web |last=Posch |first=Maya |date=2024-04-14 |title=Porting Modern Windows Applications To Windows 95 |url=https://hackaday.com/2024/04/14/porting-modern-windows-applications-to-windows-95/ |access-date=2024-07-01 |website=[[Hackaday]] |language=en-US |archive-date=2024-07-01 |archive-url=https://web.archive.org/web/20240701121659/https://hackaday.com/2024/04/14/porting-modern-windows-applications-to-windows-95/ |url-status=live }}</ref>
* The [[Debian Project]] since September 2010<ref>{{cite web| url = https://www.debian.org/News/2010/20100905| title = Backports service becoming official| date = 2010-09-05| publisher = [[Debian Project]]| access-date = 2020-05-11| archive-date = 2011-09-03| archive-url = https://web.archive.org/web/20110903172855/http://www.debian.org/News/2010/20100905| url-status = live}}</ref> has provided an official backporting service for some [[Debian Linux]] software packages, and [[Ubuntu]] Linux also supports backports.<ref>{{cite web | url = https://help.ubuntu.com/community/UbuntuBackports | title = UbuntuBackports | date = 2015-11-29 | publisher = [[Ubuntu Project]] | access-date = 2020-05-11 | archive-date = 2019-05-03 | archive-url = https://web.archive.org/web/20190503051547/https://help.ubuntu.com/community/UbuntuBackports | url-status = live }}</ref>
* In 2024, a [[YouTuber]] named MattKC backported [[.NET Framework]] versions 2.0 and 3.5 to [[Windows 95]], which did not officially support the framework.<ref>{{Cite web |last=Harper |first=Christopher |date=2024-04-14 |title=Thousands of apps ported back to Windows 95 twenty-eight years later — .NET Framework port enables backward compatibility for modern software |url=https://www.tomshardware.com/software/operating-systems/thousands-of-apps-ported-back-to-windows-95-twenty-eight-years-later-net-framework-port-enables-backward-compatibility-for-modern-software |access-date=2024-07-01 |website=[[Tom's Hardware]] |language=en |archive-date=2024-05-31 |archive-url=https://web.archive.org/web/20240531170725/https://www.tomshardware.com/software/operating-systems/thousands-of-apps-ported-back-to-windows-95-twenty-eight-years-later-net-framework-port-enables-backward-compatibility-for-modern-software |url-status=live }}</ref><ref>{{Cite web |last=Posch |first=Maya |date=2024-04-14 |title=Porting Modern Windows Applications To Windows 95 |url=https://hackaday.com/2024/04/14/porting-modern-windows-applications-to-windows-95/ |access-date=2024-07-01 |website=[[Hackaday]] |language=en-US |archive-date=2024-07-01 |archive-url=https://web.archive.org/web/20240701121659/https://hackaday.com/2024/04/14/porting-modern-windows-applications-to-windows-95/ |url-status=live }}</ref>


==See also==
==See also==
* [[Backward compatibility]]
* {{Annotated link|Backward compatibility}}
* [[Retrofitting]]
* {{Annotated link|Retrofitting}}


==References==
==References==

Latest revision as of 08:52, 19 December 2025

Template:Short description

Backporting is the process of porting a software update that was developed for a relatively current version of a software entity, to an older version of the software. It is a maintenance activity of the software development process. Although a backported update can modify any aspect of the software, the technique is typically used for relatively small scope changes

  1. REDIRECT Template:En dash

Template:R protected such as fixing a software bug or security vulnerability.

For example, v2 of an application had a vulnerability that was addressed by creating and publishing an update. The same vulnerability exists in v1 and the version is still in use. The modification that was originally applied to v2 is backported to v1 and adapted to apply to v1.[1]

One aspect that affects the effort to backport a change is the degree to which the software has changed between versions (for aspects other than the backported change). Backporting can be relatively simple if only a few lines of code have changed, but complex for heavily modified code. As such, cost–benefit analysis analysis may be performed to determine whether a change should be backported.[2]

Procedures

Backporting generally starts one of two ways. Sometimes, as a change is being developed for the latest code, the issue is known to apply to older versions and therefore, backporting is known to have value. If it's determined to be worthwhile, the change is backported. But, sometimes older versions are not considered when fixing an issue. Sometimes the backporting process starts when an issue is discovered or reported in an older version and then it's determined that the issue was fixed in a new version, making backporting an economical option as opposed to re-inventing a fix. After the existing change is backported, the development process is like for any change. The changed code is quality controlled to verify that it exhibits fixed behavior and maintains previous functionality. Then, it is distributed. Multiple modifications are commonly bundled into a single software update. [1]

As for any update, for closed-source software, backport updates are produced and distributed by the owner of the software, but for open-source software, anyone can produce and distribute a backported update.

A notable process is for the Linux kernel codebase. Backports are sometimes created by Linux distributors and later upstreamed to the core codebase by submitting changes to the maintainer of the changed component.[2]

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 (mostly games) originally with Vista as a minimum requirement to run on XP SP3 as a minimum requirement instead.[3]

The Debian Project since September 2010[4] has provided an official backporting service for some Debian Linux software packages, and Ubuntu Linux also supports backports.[5]

In 2024, a YouTuber named MattKC backported .NET Framework versions 2.0 and 3.5 to Windows 95, which did not officially support the framework.[6][7]

See also

References

<templatestyles src="Reflist/styles.css" />

  1. a b Script error: No such module "citation/CS1".
  2. a b Script error: No such module "citation/CS1".
  3. Script error: No such module "citation/CS1".
  4. Script error: No such module "citation/CS1".
  5. Script error: No such module "citation/CS1".
  6. Script error: No such module "citation/CS1".
  7. Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".