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é?
fuente
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.
fuente