Subject: Packaging of AppStream data in Alpine

From: Rasmus Thomsen <[email-masked]>
Date: Tue, 07 Apr 2020 20:43:31 +0200

Hello,

right now we simply package AppStream in the package that provides
them, which kind of misses the point of Appstream: It's supposed to
(also) offer the user information about apps before installing them.
It's required for things like displaying the description and
screenshots of apps in "appstores" (e.g. GNOME Software, KDE Discover,
...), which is what most users expect to see in these stores. With
missing appdata the description, screenshot and upstream name isn't
displayed (and not searchable, which might be confusing to users in
case we name something different than upstream, e.g. gnome-
authenticator vs Authenticator). As such we should provide a way for
users to install the AppStream data for all packages which are in our
repositories, so appstores actually become useful.

There are multiple ways to do this:

* Add an -appstream subpackage to all packages which provide AppStream
data and add a "appstream-data" package (or something like that), which
pulls in _all_ appstream-data packages (for all available packages).
This integrate nicely with our current workflow of just updating
packages and would make changes available to users ASAP. Also note that
AppStream data itself isn't big (it's only a XML file), since
screenshots are fetched from the internet when required. The downside
to this is that it'll be some effort to add -appstream subpackages to
everything which provides appstream data, but it'd be possible to get
this done before 3.13 and the chance for breakage of anything is
basically 0.

* Collect the appstream data via other means (e.g. magically pull it
from builds on the builders, I *think* this is how Arch Linux and
Debian[0] are doing it, but I'm not quite sure on that - I'll dig
deeper on that) and compress it into one massive tarball (well, massive
as in 5MB) in the case of Arch Linux or compile it into one big YAML
metadata file like Debian does it, so users only have the appstream-
data package to install which comes with everything they need. This way
we wouldn't need to add subpackages to everything but in turn we need
some magic in abuild to do this.

I'd really like to have this in 3.13, so I'd appreciate feedback from
you about this! :)

Thanks,

Rasmus Thomsen

0: https://wiki.debian.org/AppStream