Wykorzystując Ubuntu jako przykład.
Ubuntu to dystrybucja, która zawiera wiele programów, zarówno małych, jak i dużych. Istnieją między innymi sterowniki graficzne, serwer X i Gnome. Sam Ubuntu nie rozwija tego oprogramowania. Ubuntu „po prostu” pakuje oprogramowanie razem, upewniając się, że poszczególne komponenty współpracują ze sobą. Całe to oprogramowanie, które Ubuntu pakuje razem, nazywa się upstream z punktu widzenia Ubuntu.
W procesie łączenia całego tego oprogramowania mogą pojawić się błędy. Błąd może dotyczyć jednego z komponentów oprogramowania, na przykład gnome, lub może być szczególny sposób, w jaki Ubuntu robi różne rzeczy. W końcu dystrybucja jest dystrybucją, ponieważ robi pewne rzeczy na swój własny, wyjątkowy sposób.
Jeśli błąd jest spowodowany przez sposób, w jaki Ubuntu robi rzeczy, to Ubuntu będzie musiał naprawić ten błąd dla siebie. Jeśli błąd jest w rzeczywistości jednym z komponentów oprogramowania, na przykład Gnome, Ubuntu będzie musiał załatać Gnome. Kiedy Ubuntu wysyła łatkę z powrotem do Gnome, aby inni mogli również skorzystać z łatki, wtedy Ubuntu wysyła tę łatkę w górę .
Jeśli Ubuntu zdecyduje się nie wysyłać tej łatki w górę lub projekt nadrzędny odrzuca łatkę (ale ubuntu decyduje się zachować łatkę), to Ubuntu technicznie rozwidlił projekt.
Przeciwieństwem upstream byłoby downstream, Ubuntu jest downstream od Gnome. Nie słyszę / nie używam tego terminu często.
Zobacz także artykuł o upstream w Wikipedii.