アップストリーム (ソフトウェア開発)

アップストリーム (英: upstream)とは、ソフトウェア開発において、ソースコードをソフトウェアの元の作成者またはソフトウェア保守者へ配布する方向のことを指す。アップストリームに配布されるのは、元の作成者がアップストリームのソースコードに基づいてリリースしたバージョン、バグ修正、パッチ等である場合がある。

実際の例：

 アップストリームに送信されたパッチは、ソフトウェアの元の作成者または保守者に提供される。承認された場合、作成者または保守者、パッチをソフトウェアにすぐに、または将来のリリースに含める。拒否された場合、パッチを提出した人は、作成したソフトウェアを独自で配布し続ける必要がある。
 アップストリームリポジトリまたはソースコードディストリビューションバージョンとは、ソースコードが具体的にパッケージ化されたバージョンタグ付きリリース、特定のコミット、またはマスター（最新コミット）のいずれかである。 （すべての）アップストリームパッチをマージしなかった場合は、カスタムディストリビューション（フォークなど）がバグ修正と改善（元の作成者に関連付けられたプロジェクトの成熟、アップストリーム）が適用されていない可能性がある。このような場合、カスタムディストリビューションは、それを使用または保守するユーザーの特定のニーズや要件に合わせて調整されている場合もある。これは、依存関係（ベンダーパッケージ）でもよく見られる。依存関係（ベンダーパッケージ）では、利用者はベースバージョンに一度落ち着き、それに固執する傾向があり、時間の経過とともに、環境内で非常に多くの（任意の）変更または非標準の使用が蓄積され、最新のものがマージされる。カスタムディストリビューションへのアップストリームパッチは、パッチと機能の互換性のための主要な追加作業がなければ不可能であり、アップストリームにもパッチがありながら、自分で（そして独自の方法で）解決したバグの重複パッチを回避する必要がある。多くのカスタムディストリビューションユーザーは、依然として重要なアップストリームパッチ（セキュリティの脆弱性関連など）を選択してマージする。

アップストリーム開発により、他のディストリビューションが将来のリリースを取得したり、最近の（またはすべての）アップストリームパッチをマージしたりするときに、その恩恵を受けることができる。 同様に、元の作成者（アップストリームを維持している）は、ユーザーがパッチをアップストリームに送信する場合、カスタムディストリビューションから発生する貢献から利益を得ることができる。

この用語はバグにも関係する。バグの責任は、ディストリビューションの移植、アップストリーム以外での変更、または統合によって発生したものでない場合、アップストリームにあると言われている。

関連項目 

 バックポート
 ダウンストリーム (ソフトウェア開発)
 フォーク（ソフトウェア開発）

脚注 

ソフトウェアプロジェクト管理
コンピュータ用語