バックポートとは、比較的新しいバージョンのソフトウェア向けに開発されたソフトウェアアップデートを、古いバージョンのソフトウェアに移植するプロセスです。これは、ソフトウェア開発プロセスにおける保守活動の一つです。バックポートされたアップデートはソフトウェアのあらゆる側面を変更する可能性がありますが、この手法は通常、ソフトウェアのバグ修正やセキュリティ脆弱性の修正など、比較的小規模な変更に使用されます。
例えば、あるアプリケーションのバージョン2には脆弱性があり、アップデートを作成して公開することで対処しました。同じ脆弱性はバージョン1にも存在し、バージョン1は現在も使用されています。バージョン2に最初に適用された変更はバージョン1にバックポートされ、バージョン1に適用できるように調整されます。[ 1 ]
変更をバックポートする作業に影響を与える要素の1つは、バージョン間でソフトウェアがどの程度変更されているか(バックポートする変更以外の部分)です。コードが数行しか変更されていない場合はバックポートは比較的簡単ですが、大幅に変更されたコードの場合は複雑になります。そのため、変更をバックポートすべきかどうかを判断するために、費用対効果分析が行われる場合があります。[ 2 ]
バックポートは、一般的に次の 2 つの方法のいずれかで開始されます。最新のコードに対して変更が開発されているときに、問題が古いバージョンにも適用されることがわかっている場合があり、そのため、バックポートに価値があることがわかります。価値があると判断された場合、変更はバックポートされます。しかし、問題を修正する際に古いバージョンが考慮されない場合もあります。古いバージョンで問題が発見または報告され、その後、新しいバージョンで問題が修正されていると判断された場合、修正を再発明するよりもバックポートの方が経済的な選択肢となるため、バックポート プロセスが開始される場合もあります。既存の変更がバックポートされた後は、開発プロセスは他の変更と同様です。変更されたコードは、修正された動作を示し、以前の機能を維持していることを確認するために品質管理されます。その後、配布されます。複数の変更は通常、単一のソフトウェア アップデートにバンドルされます。 [ 1 ]
あらゆるアップデートと同様に、クローズドソースソフトウェアの場合、バックポートアップデートはソフトウェアの所有者によって作成および配布されますが、オープンソースソフトウェアの場合は、誰でもバックポートアップデートを作成および配布できます。
注目すべきプロセスは、Linuxカーネルのコードベースに関するものです。バックポートは、Linuxディストリビューターによって作成され、その後、変更されたコンポーネントのメンテナーに変更を提出することによって、コアコードベースにアップストリームされます。[ 2 ]
Windows Vistaの多くの機能は、Service Pack 3 がリリースされたときにWindows XPにバックポートされ、元々 Vista を最小要件としていたアプリケーション (主にゲーム) が、代わりに XP SP3 を最小要件として実行できるように互換性が高まりました。 [ 3 ] .NET Frameworkバージョン 2.0 および 3.5 のWindows 95への非公式バックポートも作成されています。[ 4 ] [ 5 ]
Debianプロジェクトは2010年9月以降[ 6 ]、一部のDebian Linuxソフトウェアパッケージに対して公式のバックポートサービスを提供しており、Ubuntu Linuxもバックポートをサポートしています[ 7 ]。