¿Qué es "aguas arriba"?

27

Siempre escucho a la gente decir que es mejor "fusionar upstream" y cosas así cuando se trata de diseñar software y similares. Tengo la sensación de que tiene que ver con el núcleo de Linux, pero probablemente me equivoque.

Y también, ¿qué es lo contrario de "aguas arriba". Si no es bueno ir "río arriba", ¿cuál es la alternativa y por qué?

n0pe
fuente

Respuestas:

33

Upstream se refiere al creador del componente que se está discutiendo.

Por ejemplo, si escribió un cliente de torrent que se basa en libtransmission, se encuentra un error en su cliente que se remonta a libtransmission. El error se soluciona con un parche que ahora está incluido en su cliente.

La fusión del parche aguas arriba en este contexto significaría enviar el parche a los autores de la transmisión gratuita para su inclusión. De esta forma, la solución se propagaría a cada proyecto que se basa en la transmisión de libtransmisión.

La alternativa a la fusión aguas arriba es quedarse con el parche.

plco
fuente
Entonces, ¿fusionar todo aguas arriba con la mentalidad de código abierto? ¿Una solución para varias piezas de software?
n0pe
44
La fusión ascendente es algo que puede hacer con el software de código abierto porque tiene acceso a la fuente y puede encontrar y corregir errores usted mismo. En código cerrado, la mayoría de las partes no tienen dicho acceso (aunque en algunas situaciones la licencia puede incluirlo), por lo que se limitan a informar el error y / o encontrar soluciones. Upstream se refiere a un enfoque multicapa para desarrollar software y también se aplica a mejoras, no solo a correcciones de errores.
plco
Para decirlo de otra manera: "ascendente" significa "de quién obtuvo la fuente"; fuera del mundo de código abierto, no hay flujo ascendente, ya que no obtuvo la fuente en absoluto. =)
rakslice
21

Usando Ubuntu como ejemplo.

Ubuntu es una distribución que agrupa mucho software, pequeño y grande. Hay controladores gráficos, el servidor X y Gnome, entre otros. Ubuntu en sí no está desarrollando ese software. Ubuntu "simplemente" empaqueta el software, asegurándose de que los componentes individuales funcionen juntos. Todo ese software que Ubuntu está empaquetando se llama ascendente desde el punto de vista de Ubuntu.

En el proceso de combinar todo ese software, pueden aparecer errores. El error podría estar en uno de los componentes del software, por ejemplo gnome, o podría estar en la forma muy especial en que Ubuntu está haciendo las cosas. Después de todo, una distribución es una distribución porque hace algunas cosas de una manera muy especial.

Si el error es causado por la forma en que Ubuntu está haciendo las cosas, entonces Ubuntu tendrá que corregir ese error por sí mismo. Si el error está en uno de los componentes de software, por ejemplo, Gnome, Ubuntu tendrá que parchear Gnome. Cuando Ubuntu envía el parche de vuelta a Gnome, para que otros también puedan beneficiarse del parche, Ubuntu está enviando ese parche en sentido ascendente .

Si Ubuntu decide no enviar ese parche ascendente, o el proyecto ascendente rechaza el parche (pero ubuntu decide mantener el parche), entonces Ubuntu técnicamente ha bifurcado el proyecto.

Lo opuesto a aguas arriba sería aguas abajo, Ubuntu está aguas abajo de Gnome. No escucho / leo ese término usado a menudo.

Vea también el artículo sobre el flujo ascendente en Wikipedia.

lesmana
fuente