現在位置: ホーム / みらくるブログ / アップストリームとダウンストリームとは何か?

アップストリームとダウンストリームとは何か?

オープンソースソフトウェアやLinuxディストリビューションの解説においては、しばしば アップストリーム や ダウンストリームという用語が使われます。 また CentOS Stream が RHEL のアップストリーム である解説は、どういう意味なのでしょうか? 馴染みの薄い方も多いと思いますので、改めて解説を行います。

アップストリームとダウンストリームとは

オープンソースソフトウェアやLinuxディストリビューションの文化ではしばしば、アップストリーム(Upstream) や ダウンストリーム(Downstream)という用語が登場します。オープンソースの文化やサプライチェーンに詳しくない方にはそれほど馴染みがない言葉かもしれません。日本語では「上流」「下流」という単語に相当しますが、システム開発・設計の「上流工程」や「下流工程」といった用語とは意味合いが異なります。この記事ではこの二つの用語と Fedora・RHEL(Red Hat Enterprise Linux)・CentOS の関係などについて解説を行います。

オープンソースライセンスとソフトウェアの再配布

あるソフトウェアが オープンソースの定義[1]に従ったライセンスによって提供されるとき、そのソフトウェアをオープンソースソフトウェアと呼ぶことができます。この定義によれば、ソフトウェアを受け取ったいかなる人や団体は、ライセンスの許す条項の範囲内で再配布を行うことができます。[2]


ライセンスによって、許諾される権利を行使し再配布を行い、配布するソフトウェアの配布のフローを説明するとき、アップストリームとダウンストリームという用語が登場します。


例えば 「あなた」が「エンドユーザー」向けにオープンソースソフトウェアを再配布する(再配布するソフトウェアは開発元から配布を受ける)と仮定します。すると以下のような図に三者の関係を表すことができます。


図.1 再配布のフロー
図.1 再配布のフロー


このとき、オープンソースソフトウェアの開発元が アップストリーム、あなたがダウンストリームに該当します。開発元やあなたは独立してソフトウェアの配布を行うため、それぞれ違った主体として活動します。

アップストリームが新しいバージョンをリリースしたとしても、あなたは独立して配布を行っているため、新しいバージョンを取り込んでリリースする義務はありません。(ただし 新しいバージョンをリリースするメリットは存在します)

図.2 アップストリームとダウンストリームのフロー
図.2 アップストリームとダウンストリームのフロー


このような 配布を行う関係の実例を紹介します。例えば LinuxカーネルとLinuxディストリビューションです。



図.3 ディストリビューションによる再配布
図.3 ディストリビューションによる再配布


各ディストリビューションは必要に応じてリリースされたカーネルの最新のバージョンや、古いバージョン、あるいは古いバージョンに対して変更をバックポートするなどして、独自に再配布を行います。また ライセンスがコピーを受け取ったいかなる人・団体に対しても再配布を許諾するので、世界には多数のLinuxディストリビューションとその配布を行うディストリビューターが存在します。(Distrowatch というディストリビューションの情報収集を行っているサイトには数百のディストリビューションの情報が記載されています[3]) 上述したように、それぞれのディストリビューションは、独立して再配布を行うため、同じソフトウェアでも収録するバージョンがしばしば異なります。

図.4 カーネルバージョンとメジャーなディストリビューションの対応
図.4 カーネルバージョンとメジャーなディストリビューションの対応

アップストリームディストリビューション・ダウンストリームディストリビューション


またディストリビューションの間にも、アップストリームとダウンストリームの関係が存在します。


例えば Red Hat社が後援する Fedora ディストリビューションは、Fedora Project というコミュニティによって、開発されているディストリビューションです。このディストリビューションは各パッケージのアップストリームからリリースされた新しいバージョンをディストリビューションに含んだり、先進的・実験的な機能を搭載するため開発されています。また Fedoraは 将来の Red Hat Enterprise Linux のベースに使うためのディストリビューション候補としても開発されています。[4] 例えば RHEL 8(2019年リリース )は Fedora 28(2018年リリース) をベースに開発されています。 RHEL 8 は Fedora 28 をそのままリリースしているわけではなく、様々な変更が加えられていますが、ベースとして利用しているため、Fedora 28がアップストリーム、RHEL 8 がダウンストリームに該当します。

図.5 Fedora と RHEL 8の関係
図.5 Fedora と RHEL 8の関係

CentOS と RHEL・Fedora の関係

また、Red Hat Enterprise Linux に関わるディストリビューションとして、CentOS Project というコミュニティがリリースする2つのディストリビューションが存在します。CentOS Linux と CentOS Stream はそれぞれ、RHEL のダウンストリームとアップストリームとして位置づけられています。

図.6 CentOS と RHEL の関係
図.6 CentOS と RHEL の関係


過去の CentOS 関連の記事で解説したように、CentOS Stream では RHEL よりも先にパッケージの変更がリリースされ、RHELは CentOS Streamよりもダウンストリームに位置づけられるため、従来のCentOS Linux とは異なり RHEL のリビルドではありません。(フロー上 は順序が逆転しています)
さらにFedoraとRHEL 8、CentOS Linux 8、CentOS Stream 8 の関係を図.5に追加するとこのような関係になります。

図.7 四つのディストリビューションの関係
図.7 四つのディストリビューションの関係


複雑な図になりますが、Fedora 28 は RHEL 8 の最初の開発のときにベースにした 1つ目のアップストリームであり、その後の開発プロセスにおいて用いる2つ目のアップストリームとして CentOS Stream 8 が用意されていることがこの図のフローからわかります。(とはいえこの図でもフローをある程度単純化しており、CentOS Stream に入った変更が必ず RHEL でもリリースされるとは限らず、CentOS Stream を経由しないパッケージリリースも行われます)


2021年12月以降、CentOS Linux 8 は更新が終了するため、もしも CentOS Stream 8 へ移行するなら こういったディストリビューション間の関係などについての理解がある程度必要になるでしょう。
フロー以外の詳細な違いについては 過去の記事で解説しています。

CentOS Stream はどのような利用・運用ができるか?

この記事が読者の皆様の業界用語やディストリビューション間の関係の理解の助けになれば幸いです。

注釈

[1]: https://opensource.org/osd-annotated
[2]: The Open Source Definition より 「1. Free Redistribution」 及び 「3. Derived Works」 がこれを許可します。
[3]: https://distrowatch.com/
[4]: 歴史的には Fedora Project は Red Hat 社が 無償で提供する 「Red Hat Linux」(1994-2003) から有償で提供する 「Red Hat Enterprise Linux」(2002~) へ開発の方向転換を行ったときに、コミュニティによって開発される、先進的な機能を取り入れるディストリビューションとして公認を受けたという経緯があります。 https://listman.redhat.com/archives/rhl-list/2003-September/msg00064.html


当記事の図のいくつかは2021年5月現在での状態を解説し、細かい部分を単純化したり、詳細を省略しています。例えば図.4 では 現在の最新の安定版である Debian 10 で採用されているLinuxカーネルのバージョンを “4.19を採用” として説明していますが、近々正式リリースされる Debian 11では 5.10.28 が採用されるはずです。 また Ubuntu は 最新のLTSである 20.04 の情報を基にしています。Arch Linux ではローリングリリースであるため、日々リリースされるカーネルのバージョンは上がっていきます。

関連記事

CentOS 8 EoL 変更と CentOS 8 Stream との違い、影響について
CentOS 8 Stream パッケージ調査
CentOS Stream はどのような利用・運用ができるか?

 

更新履歴

2021年 5月 19日 新規公開

 

CentOS, Red Hat Enterprise Linux, Fedora はRed Hat, Inc.の登録商標または商標です。
Debian は Software in the Public Interest, Inc の登録商標です。
Ubuntu は Canonical Ltd., の登録商標です。
openSUSE は SUSE LLC. の登録商標です。
「Linux」は、Linus Torvalds氏の米国及びその他の国における、登録商標または商標です。
その他会社名及びロゴ、製品名などは該当する会社の登録商標または商標です。

Author: サイバートラスト株式会社 OSS・IoT事業部 Linuxエバンジェリスト・シニアエンジニア 弦本 春樹(Haruki TSURUMOTO)