
Condiciones: río arriba y río abajo es un término bastante ambiguo, creo, no muy utilizado por el público. Si es un usuario de Linux y no escribe ni mantiene software, estos términos probablemente no significan nada para usted, pero guían cómo funciona la comunicación entre grupos en el mundo de Linux.
Estos términos se utilizan en redes, programación, núcleos e incluso en campos no informáticos como la cadena de suministro. El contexto importa cuando hablamos de upstream y downstream.
En su forma más simple, aguas arriba y aguas abajo son las direcciones del flujo de información.
Dado que todos leemos este artículo mientras estamos conectados a Internet, veamos un ejemplo de flujo ascendente/descendente para un proveedor de servicios de Internet (ISP). Aquí, el ISP se preocupa por el tráfico. El tráfico ascendente son datos de usuarios de diferentes ISP. Por ejemplo, si tiene un sitio web que ofrece suscripciones a un boletín informativo, la información de suscripción que envío son datos preliminares.
El tráfico descendente son datos enviados de un usuario a otro usuario en un ISP diferente, que luego se considera tráfico descendente. Usando el mismo ejemplo de suscripción, digamos que se aprueba mi solicitud de suscripción y recibo una notificación de «Bienvenida» en un correo electrónico y el último boletín en otro. En este caso, los datos son descendentes porque usted me los envía (bueno, probablemente un software automatizado que se ejecuta en su nombre) desde usuarios de diferentes ISP.
Resumen: algo que necesito o quiero (su boletín) está en sentido ascendente. Lo que me das (carta de bienvenida y boletín de noticias) me pasa a mí.
Si los datos son ascendentes o descendentes puede que no nos importe a nosotros como usuarios, pero es importante para los administradores de servidores que controlan el uso del ancho de banda, así como para los distribuidores y programadores de aplicaciones.
En el mundo de Linux, hay dos contextos principales aguas arriba y aguas abajo. Uno está relacionado con el núcleo y el otro está relacionado con la aplicación. Hay otros, pero espero poder captar la idea a través de estos dos.
Upstream y downstream en el contexto del kernel de Linux
linux sí núcleo. Al crear una distribución (a menudo llamada «distribución»), una distribución de Linux utiliza inicialmente el código fuente de un kernel no modificado. Agregue los parches necesarios, luego configure el kernel. La configuración del kernel se basa en las características y opciones que la distribución quiera brindar. Una vez decidido, el núcleo se creará en consecuencia.
El kernel original está aguas arriba de la distribución. Cuando la distribución obtiene el código fuente, fluye hacia abajo. Una vez que una distribución tiene código, hace el trabajo en el creador de la distribución. Como usuario, todavía está disponible para nosotros hasta que esté listo para su lanzamiento.
La versión del kernel creada por la distribución agregará parches y habilitará ciertas funciones y opciones. Esta configuración la determina el generador de distribución. Esta es la razón por la que hay múltiples versiones de Linux: Debian Comparado sombrero rojo, Por ejemplo. Los constructores de la distribución deciden las opciones disponibles para su base de usuarios y compilan el núcleo en consecuencia.
Una vez que este trabajo esté completo, se puede publicar en el repositorio y podemos tomar una copia. Esta copia fluye río abajo hacia nosotros.
Del mismo modo, si un distribuidor encuentra un error en el kernel, lo corrige y luego envía el parche a los desarrolladores del kernel para que puedan parchear el kernel para todos los usuarios posteriores. Esto se denomina contribución al upstream, porque aquí el tráfico sube a la fuente original.
Aguas arriba y aguas abajo en el contexto de la aplicación
De nuevo, técnicamente Linux es el núcleo y todo lo demás es software adicional. Los desarrolladores de distribución también agregan software adicional a sus proyectos. En este caso, hay varias aguas arriba. Una distribución puede contener cualquier cantidad de aplicaciones, como X, KDE, Gnome, etc.
asumiendo que estás usando Nano editor y descubrió que no funcionaba, por lo que envió un informe de errores al distribuidor. Los programadores que trabajan en la distribución lo examinarán y, si descubren que han insertado un error en nano, lo arreglarán y proporcionarán una nueva versión en sus repositorios. Si descubren que no cometieron un error, el distribuidor presentará un informe de error a los nanoprogramadores.
Cuando se trata de informes de errores, solicitudes de funciones, etc., es mejor enviárselos a su distribuidor, ya que mantienen el kernel y otras aplicaciones para la distribución que está utilizando.Por ejemplo, yo uso un archivo llamado Q4OS en varias máquinas. Si encuentro un error en el programa, lo informaré a la gente de Q4OS. Si sucede que está usando, digamos, menta, lo reportarás al proyecto Mint.
Por ejemplo, si publica una pregunta en un foro genérico de Linux y menciona que está usando Mint, seguramente obtendrá una respuesta como: «Esto se maneja mejor en el foro de Mint». error» Por ejemplo, los programadores de Mint pueden haber realizado cambios en nano para que funcione mejor en su distribución. Si cometen un error, querrán saberlo, y después de cometer un error, serán ellos quienes lo arreglarán.
Una vez corregido, el programa actualizado se colocará en el repositorio disponible para usted. Cuando recibe una actualización, se le pasa en sentido descendente de esta manera:
- Si el editor hace una corrección, la nueva versión está disponible en el repositorio de distribución.
- Si el programador de la aplicación realiza una corrección, se envía a los distribuidores posteriores que prueban el nuevo código.Una vez que se encuentra que funciona, se coloca en el repositorio para que fluya hacia usted.
Descendente automático
Hubo un tiempo en que los usuarios tenían que obtener actualizaciones ellos mismos. El usuario obtendrá el código fuente actualizado y compilará el nuevo ejecutable. Con el tiempo, se crearon utilidades como apt para permitir a los usuarios extraer binarios actualizados (ejecutables) de los repositorios. El programa apt es Debian, pero otras distribuciones tienen sus propios programas similares.
Programas como apt se encargan del trabajo upstream/downstream. Si ejecuta apt con la opción de actualización como esta:
sudo apt upgrade
Buscará (hacia arriba) en los repositorios de distribución, encontrará los paquetes de actualización necesarios y los extraerá (hacia abajo) en su máquina y los instalará.
Algunas distribuciones van un paso más allá. Los programadores y mantenedores de distribuciones siempre están revisando sus productos. Muchas veces, los programadores de aplicaciones mejoran sus programas. Las bibliotecas del sistema se actualizan con frecuencia, se tapan los agujeros de seguridad, etc. Estas actualizaciones se ponen a disposición de los distribuidores, quienes luego ponen a disposición nuevas versiones en los repositorios de la distribución.
Algunas distribuciones no le permitirán ejecutar apt todos los días, pero le alertarán sobre las actualizaciones disponibles y le preguntarán si las necesita. Si lo desea, simplemente acepte y la actualización se enviará a su computadora y se instalará.
en conclusión
Acabo de recordar un poco de mi historia y mencioné a Red Hat. En 1994 o 1995, publicaron un anuncio de trabajo que enumeraba una ventaja genial en el lugar de trabajo como: «Todos los Peanut M&M gratis que puedas comer y todos los Dr. Peppers gratis que puedas beber». , solo he solicitado estos dos beneficios. Aunque no recibí la llamada.
Oh bien. Volviendo al tema……
Upstream y downstream son en realidad solo la dirección del flujo de datos. La distancia ascendente o descendente de esos datos depende de quién necesita procesarlos en última instancia. Básicamente, los programadores están aguas arriba y los usuarios están aguas abajo.
Nuevamente, como usuarios, no necesitamos preocuparnos por estos términos, pero estos conceptos ayudan con el desarrollo y mantenimiento del software. Al poder dirigir el trabajo al grupo apropiado, se puede evitar la duplicación del trabajo. También asegura que se mantenga un estándar. Por ejemplo, es posible que el navegador Chrome deba cambiarlo ligeramente para que se ejecute en una determinada distribución, pero en esencia es Chrome: se ve y se comporta como Chrome.
Si encuentra un error en cualquiera de los programas de la distribución, simplemente informe a los mantenedores de la distribución, lo que generalmente se hace a través de su sitio web. Les enviará informes en sentido ascendente, pero no importa si recuerda que está enviando informes en sentido ascendente.