[AppStream] Extensibility in AppStream

Simon McVittie simon.mcvittie at collabora.co.uk
Wed Jul 20 18:01:55 UTC 2016


Hi,
I'm currently working on an automotive Linux platform that aims to have
an "app store". We're trying hard to use standard Linux/freedesktop
concepts rather than going off in our own weird directions (for example
our app launcher consumes .desktop files), so I'm evaluating AppStream
as a format for metadata about installable or installed "apps" - more
specifically, the things that AppStream calls components, including
launchable programs but also more general user-installable components
like themes.

One thing that I notice is missing from the AppStream specification is
an official way to provide unofficial extensions, similar to the role of
X-Vendor-MyField in .desktop files. We're keen to have extensibility
available for a couple of reasons:

* prototyping: when new features that would make sense in the upstream
  AppStream spec are still under discussion, we'd prefer to be able to
  experiment with them without patching/forking AppStream libraries -
  particularly if some implementation experience with a prototype
  design is necessary to see the flaws in that design and propose
  something that's better in the long term

* specialized requirements: if there's a commercial need for a
  particular feature in an automotive platform but the AppStream spec
  authors consider it to be too niche to incorporate, we'll still need
  to provide it somehow

(I don't have any concrete examples of a need for either at the moment,
but I'm fairly confident that both will happen at some point.)

I've also seen that the appstream-glib library used by GNOME Software
does offer extensibility, in the form of a <metadata> element. For
example, <https://github.com/hughsie/appstream-glib/issues/72> mentions:

    <metadata>
      <value key="X-CacheID">firefox_43.0.1-1_amd64.deb</value>
    </metadata>

and GNOME Software seems to insert other <value>s as required. This
seems ideal for our purposes: how feasible is it to get that into the
AppStream spec?

Thanks,
    S
-- 
Simon McVittie
Collabora Ltd. <http://www.collabora.com/>


More information about the AppStream mailing list