O que é “upstream”?

26

Sempre ouço as pessoas dizendo que é melhor "fundir-se com o desenvolvedor" e coisas assim quando se trata de projetar softwares e afins. Eu tenho a sensação de que isso tem a ver com o kernel mainstream do Linux, mas eu provavelmente estou errado.

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

    
por n0pe 12.04.2011 / 18:34

2 respostas

32

Upstream refere-se ao originador do componente que está sendo discutido.

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

A fusão do patch upstream nesse contexto significaria enviar o patch aos autores da libtransmission para inclusão. Dessa forma, a correção seria propagada para todo projeto que é baseado na libtransmissão.

A alternativa para mesclar upstream é manter o patch por si mesmo.

    
por 12.04.2011 / 18:39
18

Usando o Ubuntu como 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 esse software. O Ubuntu está "apenas" empacotando o software juntos, certificando-se de que os componentes individuais funcionem juntos. Todo esse software que o Ubuntu está juntando é chamado upstream do ponto de vista do Ubuntu.

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

Se o bug é causado pela maneira como o Ubuntu está fazendo as coisas, então o Ubuntu terá que consertar esse bug. Se o bug estiver em um dos componentes do software, por exemplo, o Gnome, então o Ubuntu terá que 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 o patch upstream .

Se o Ubuntu decidir não enviar o patch upstream, ou o projeto upstream rejeitar o patch (mas o ubuntu decidir manter o patch), então o Ubuntu tecnicamente bifurcou o projeto.

O oposto do upstream seria downstream, o Ubuntu é downstream do Gnome. Eu não ouço / leio esse termo usado com frequência.

Veja também o artigo sobre upstream na Wikipedia.

    
por 12.04.2011 / 19:00