Upstream, Appstream y DownStream
La manera tradicional que tenemos para instalar software en los entornos de escritorio de Linux es usando las herramientas de línea de comando o tal vez herramientas gráficas tales como Synaptic y dnfdragora.
Este tipo de instalación a la que los usuarios de Linux de unos cuantos años estamos acostumbrados no es ni más fácil ni más difícil que buscar aplicaciones, bajarlas y correr un instalador y presionando los botones "Next", "Next"...
Sin embargo, la mayoría de los usuarios finales en la actualidad suelen instalar aplicaciones desde centros de software desde teléfonos celulares, los famosos App Stores, tales como Google Play y Apple App Store.
Como respuesta los dos entornos de escritorio principales de Linux cuentan con herramientas similares: Software (GNOME) y Discover (Plasma) para crear una experiencia de usuario similar:
Este clase de programas usan no solamente el sistema de paquetes de la distribució (sea tanto repositorios oficiales como así también de teceros), sino además, pueden usar sistemas como flatpak y snapcraft.
Debajo de estas herramientas tenemos a AppStream la cual proporciona metadatos universales de aplicaciones. Se trata de una especificación de freedesktop.org que resulta beneficiosa tanto para desarrolladores como para usuarios finales.
Photo by Good Free Photos on Unsplash
Puede tratar de manera específica a cada componente de acuerdo a su tipo: aplicación de escritorio, complemento, codec, fuente, etc.
Estos metadatos se guardan en archivos XML. En Fedora, por ejemplo podemos encontrar estos archivos en:
/usr/share/app-info/
/usr/share/metainfo/
De acuerdo a las directrices para empaquetar software de Fedora, toda aplicación con interfaz gráfica tiene que tener un archivo *.appdata.xml
Debian usa un único archivo YAML en lugar de XML, en Debian Buster para plataforma AMD64 se encuentra en /var/lib/apt/lists/deb.debian.org_debian_dists_buster_main_dep11_Components-amd64.yml.gz
.
Estos archivos suelen contener un identificador, nombre, resumen, icono que representa al componente, descripción, categoría, información de versiones. También puede indicar si el componente es esencial para el funcionamiento de un entorno de escritorio y capturas de pantalla. Incluso ofrece el soporte para que el usuario califique la aplicación.
Es muy importante contar con la metadata de las aplicaciones de modo que appstream y programas como Discover y Software funcionen correctamente. Por ejemplo, en el caso del repositorio rpmfusion es necesario instalar un paquete aparte:
dnf install rpmfusion-free-appstream-data.noarch
En la actulidad un usuario puede buscar una determinada aplicación del proyecto KDE e instalarla desde KDE's Applications. Supongamos que encuentra a Calligra Stage y decide instalarla:
Es decir, se puede ver que tiene el siguiente URI: appstream://org.kde.calligrastage.desktop
al ser una herramienta totalmente agnóstica puede usar tanto un repositorio tradicional, como los de flatpak y snapcraft. Es decir, es importante entender que appstream no es un método nuevo de empaquetar software o un nuevo tipo de repositorio. Si la aplicación no está en los repositorios mencionados, obviamente la instalación fallará.
Es decir, luego en Discover:
También, podríamos instalarla directamente usando appstream:
appstreamcli install org.kde.calligrastage.desktop
Para ver el estado:
Podemos ver entonces que appstream funciona como un puente bidireccional, los proyectos upstream pueden facilitar el empaquetamiento y disponibilidad de aplicaciones, y cada distribución (downstream) puede dar a conocer de una manera mucho más amigable el software para los usuarios finales creando un círculo virtuoso.