O que é "upstream"?

27

Eu sempre ouço pessoas dizendo que é melhor "mesclar a montante" e coisas assim quando se trata de projetar software e coisas do gênero. Eu tenho a sensação de que isso tem a ver com as coisas principais do kernel Linux, mas provavelmente estou errado.

E também, o que é o oposto de "upstream". Se não é bom ir "a montante", qual é a alternativa e por quê?

n0pe
fonte

Respostas:

33

A montante refere-se ao criador do componente que está sendo discutido.

Por exemplo, se você escreveu um cliente de torrent que é baseado na libtransmission, um bug é encontrado no seu cliente que é rastreado até a libtransmission. O bug foi corrigido com um patch que agora está incluído no seu cliente.

A mesclagem do patch a montante neste contexto significaria enviar o patch aos autores da libtransmission para inclusão. Dessa forma, a correção seria propagada para todos os projetos baseados na libtransmission.

A alternativa para mesclar a montante é manter o patch para você.

plco
fonte
Então, mesclar tudo a montante acompanha a mentalidade de código aberto? Uma correção para várias partes do software?
N12pe 12/04
4
Mesclar o upstream é algo que você pode fazer com o software de código aberto, porque você tem acesso ao código-fonte e pode encontrar e corrigir erros sozinho. Em código fechado, a maioria das partes não tem esse acesso (embora em algumas situações a licença possa incluí-lo), portanto, eles estão limitados a relatar o bug e / ou encontrar soluções alternativas. O upstream se refere a uma abordagem multicamada para o desenvolvimento de software e também se aplica a melhorias, não apenas a correções de bugs.
12125 plco
Em outras palavras: "upstream" significa "de quem você obteve a fonte"; fora do mundo do código aberto, não há upstream, pois você não conseguiu o código. =)
rakslice 27/09/12
21

Usando o Ubuntu como um exemplo.

O Ubuntu é uma distribuição que reúne muitos softwares, pequenos e grandes. Existem drivers gráficos, o servidor X e o Gnome, entre outros. O próprio Ubuntu não está desenvolvendo esses softwares. O Ubuntu está "apenas" reunindo o software, garantindo que os componentes individuais funcionem juntos. Todo esse software que o Ubuntu está reunindo é chamado upstream do ponto de vista do Ubuntu.

No processo de combinar todo esse software, erros podem aparecer. O bug pode estar em um dos componentes do software, por exemplo, gnome, ou pode ser da maneira mais especial que o Ubuntu está fazendo. Afinal, uma distribuição é uma distribuição porque faz algumas coisas de uma maneira muito especial.

Se o bug for causado pela maneira como o Ubuntu está fazendo as coisas, o Ubuntu precisará corrigi-lo. Se o bug estiver de fato em um dos componentes do software, por exemplo, o Gnome, o Ubuntu precisará corrigir o Gnome. Quando o Ubuntu envia o patch de volta ao Gnome, para que outros também possam se beneficiar do patch, o Ubuntu está enviando esse patch a montante .

Se o Ubuntu decidir não enviar esse patch a montante, ou o projeto upstream rejeitar o patch (mas o ubuntu decidir continuar com o patch), o Ubuntu tecnicamente bifurcou o projeto.

O oposto de upstream seria downstream, o Ubuntu está downstream do Gnome. Não ouço / leio esse termo usado com frequência.

Veja também o artigo sobre upstream na Wikipedia.

lesmana
fonte