Co to jest „upstream”?

27

Zawsze słyszę, jak ludzie mówią, że lepiej „scalić upstream” i takie tam, jeśli chodzi o projektowanie oprogramowania i tym podobne. Mam wrażenie, że ma to związek z głównym jądrem Linuksa, ale prawdopodobnie się mylę.

A także, co jest przeciwieństwem „upstream”. Jeśli pójście „pod prąd” nie jest dobre, jaka jest alternatywa i dlaczego?

n0pe
źródło

Odpowiedzi:

33

Upstream odnosi się do twórcy omawianego komponentu.

Np. Jeśli napisałeś klienta torrenta opartego na libtransmission, wtedy w twoim kliencie znaleziono błąd, który jest śledzony do libtransmission. Błąd został naprawiony dzięki łatce, która jest teraz zawarta w twoim kliencie.

Scalenie łatki w tym kontekście oznaczałoby wysłanie łatki autorom libtransmisji w celu włączenia. W ten sposób poprawka byłaby propagowana do każdego projektu opartego na libtransmisji.

Alternatywą dla połączenia w górę jest zachowanie łatki dla siebie.

plco
źródło
Więc łączenie wszystkiego pod prąd idzie w parze z mentalnością Open-Source? Jedna poprawka na kilka programów?
n0pe
4
Scalanie w górę jest czymś, co można zrobić z oprogramowaniem open source, ponieważ masz dostęp do źródła i możesz sam znaleźć i naprawić błędy. W zamkniętym źródle większość stron nie ma takiego dostępu (chociaż w niektórych sytuacjach licencja może go obejmować), więc ograniczają się do zgłaszania błędu i / lub znalezienia obejścia. Upstream odnosi się do wielowarstwowego podejścia do tworzenia oprogramowania, a także dotyczy ulepszeń, a nie tylko poprawek błędów.
plco
Innymi słowy: „upstream” oznacza „od kogo masz źródło”; poza światem Open Source nie ma żadnego źródła, ponieważ w ogóle nie masz źródła. =)
rakslice
21

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.

lesmana
źródło