it-swarm-ja.com

「上流」とは何ですか?

ソフトウェアの設計などに関しては、「アップストリームをマージする」などの方がいいとよく言われます。私はそれが主流のLinuxカーネルのものに関係していると感じていますが、私はおそらく間違っています。

そしてまた、「上流」の反対です。 「上流」に行くのが良くない場合、代替手段は何ですか?なぜですか?

28
n0pe

上流は、議論されているコンポーネントの創始者を指します。

例えば。 libtransmissionに基づくtorrentクライアントを作成した場合、libtransmissionまで追跡されるバグがクライアントで見つかります。このバグは、クライアントに含まれているパッチで修正されています。

このコンテキストでパッチをアップストリームにマージすることは、パッチをlibtransmissionの作者に送信して含めることを意味します。このようにして、修正はlibtransmissionに基づくすべてのプロジェクトに伝播されます。

アップストリームをマージする代わりに、パッチを自分で保管することもできます。

33
plco

Ubuntuを例として使用します。

Ubuntuは、大小さまざまなソフトウェアをまとめたディストリビューションです。グラフィックドライバ、Xサーバー、Gnomeなどがあります。 Ubuntu自体はそれらのソフトウェアを開発していません。 Ubuntuはソフトウェアを「ただ」パッキングし、個々のコンポーネントが確実に連携するようにします。 Ubuntuがまとめてパックしているすべてのソフトウェアは、Ubuntuの観点からupstreamと呼ばれます。

すべてのソフトウェアを組み合わせるプロセスで、バグが発生する可能性があります。バグは、例えばgnomeなどのソフトウェアコンポーネントの1つにあるか、Ubuntuが特別な方法で実行している可能性があります。結局のところ、ディストリビューションは独自の特別な方法でいくつかのことを行うため、ディストリビューションです。

バグの原因がUbuntuの動作にある場合、Ubuntuはそのバグを自分で修正する必要があります。バグが実際にソフトウェアコンポーネントの1つ、たとえばGnomeにある場合、UbuntuはGnomeにパッチを適用する必要があります。 UbuntuがパッチをGnomeに送り返すと、他の人もパッチの恩恵を受けることができるので、Ubuntuはそのパッチを送信していますupstream

Ubuntuがそのパッチをアップストリームに送信しないと決定した場合、またはアップストリームプロジェクトがパッチを拒否した場合(ただし、ubuntuは引き続きパッチを保持することを決定した場合)、Ubuntuは技術的に forked プロジェクトです。

アップストリームの反対はダウンストリーム、UbuntuはGnomeのダウンストリームです。よく使われる用語を聞いたり読んだりしません。

Wikipediaの 上流に関する記事 も参照してください。

21
lesmana