mirror of
https://github.com/flatpak/flatpak.git
synced 2026-01-26 00:28:34 -05:00
Currently Flatpak reads a repo metadata key called "xa.collection-id" to decide whether to configure a collection ID on a remote. This commit drops support for xa.collection-id and replaces it with ostree.deploy-collection-id, which is a key defined by OSTree but so far only implemented here. The reason for the change is so that collection IDs can only be deployed to users running recent versions of Flatpak and OSTree. The current situation is that Endless wants to deploy collection IDs (and therefore support for doing USB updates) to users, but servers such as Flathub can't safely set xa.collection-id in their metadata, because many users are still using old versions of Flatpak and OSTree[1] which would hit various bugs[2][3][4] on the P2P code paths that are enabled by collection IDs. Defining a new key means that only users running recent (as-yet-unreleased) versions of Flatpak and OSTree will pay attention to it and deploy the collection ID, leaving the users on old versions unaffected. The reason this metadata key is being defined at the level of OSTree instead of Flatpak, is that OSTree may want to implement it in the future. The functionality of deploying a collection ID by setting the "deploy-collection-id" key in the config on the server side (which in turn causes ostree.deploy-collection-id to be set) is already covered by the unit tests in test-update-remote-configuration.sh; this commit just tweaks them to use the new key. Another solution I proposed to this problem was to have a key "eos.collection-id" which would only be understood by the Endless fork of Flatpak, and use that temporarily until enough people are running recent versions of Flatpak, at which point "xa.collection-id" can be used. But this solution (abandoning xa.collection-id upstream) allows us to avoid that migration step and leave users on old versions of Flatpak completely unaffected. [1] https://ahayzen.com/direct/flathub.html#downloadsbyflatpakstacked [2] https://github.com/ostreedev/ostree/commit/e4e6d85ea [3] https://github.com/flatpak/flatpak/commit/5813639f [4] https://github.com/flatpak/flatpak/commit/5b21a5b7