If the compare and constrast of flatpak/flathub with pip/pypi isn’t sufficient…
I can do a compare and contrast with how we currently handle podman container registries
we ship podman with fedora, redhat.com and docker.io registeries enabled by default via the container-commons package, which maps to https://github.com/containers/container-libs
Only one of those is a registry that maps to binary outputs that come from the fedora infrastructure that match the concept that everything presented to Fedora users needs to conform to project ideals of being buildable from source from our infrastructure.
What’s even crazier is we patch the upstream config with a shortname aliases for a few important things that help ensure Fedora users get what we consider are the official versions of those common things from docker.io and not from our infrastructure. In fact the only thing in the shortlist that enforces the fedora registry is for containers for obviously fedora outputs
"fedora-bootc" = "registry.fedoraproject.org/fedora-bootc"
"fedora-minimal" = "registry.fedoraproject.org/fedora-minimal"
"fedora" = "registry.fedoraproject.org/fedora"
That’s it.. thats the only thing in the short list that refers to fedora.
For example… lets look at rust.
$ podman search rust --limit 10
NAME DESCRIPTION
registry.fedoraproject.org/f41/rust
registry.fedoraproject.org/f42/rust
registry.fedoraproject.org/f43/rust
docker.io/library/rust Rust is a systems programming language focus...
docker.io/cimg/rust The CircleCI Rust Docker Convenience Image.
docker.io/circleci/rust CircleCI images for Rust
docker.io/okteto/rust
docker.io/bitnami/rust Bitnami Secure Image for rust
docker.io/chainguard/rust Build, ship and run secure software with Cha...
docker.io/stagex/rust Rust Programming Language toolchain
docker.io/primeimages/rust Alpine with Rust installed
docker.io/activestate/rust ActiveState's customizable, low-to-no vulner...
docker.io/ubuntu/rust Rock for Rust - a systems programming langua...
Fedora provides a rust container so does docker.io. Docker.io provides a ton of options..
Which one is official?
$ podman search rust --filter=is-official
NAME DESCRIPTION
docker.io/library/rust Rust is a systems programming language focus...
Now what if we just pull rust? What happens? Well thanks to the shortname alias we package… its not the fedora rust container that is preferred.. its a specific docker.io one.
$ podman pull rust
Resolved "rust" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
Trying to pull docker.io/library/rust:latest...
This is the exact opposite of how we treat official things in the flatpak platform. I don’t need to get into the discussion of the opinionated graphical UI tools, I run into the very different default policy stances in the cmdline tools.
If I wanted to find “the official” postgres container in podman.. I run this:
$ podman search postgresl --limit 200 --filter=is-official
NAME DESCRIPTION
docker.io/library/postgres The PostgreSQL object-relational database sy...
But because we don’t shortname alias postgresl (though we probably should) podman pull gives me an interactive choice…
$ podman pull postgresl
? Please select an image:
▸ registry.fedoraproject.org/postgresl:latest
registry.access.redhat.com/postgresl:latest
docker.io/library/postgresl:latest
giving in the order of the default searchable registries.
Here again flatpak as a base OS agnostic platform is being treated differently than a peer technology (in this case the peer technology is podman) If we treated flatpak as we do podman.. not only would be enable flathub by default.. but we would ensure that official upstream flathub versions of things were preferred over the fedora project outputs when we know they are official upstream outputs.
It appears that flatpak is being singled out as a platform technology in a materially different way than other platform technology that Fedora ships tools for. Continuing to enforce a strict preference for Fedora flatpaks over defacto upstream platform content registries appears to be a unique policy interpretation that is not applied to any other platform tools Fedora ships.
There is a list of these things now: podman, pip, gem, npm, and I would imagine nix as well if I were to look…all come with external registries by default that have user installable binaries from build systems Fedora does not control… and users expect these registeries to be used as part of using the tooling.
To remove a defacto standard platform registry is outside normal practice inside this project. And yet that is what we are doing for flatpaks. The idea that somehow flathub is less trustable than docker.io or registry.npmjs.org is very hard for me make sense of. And to be very honest if feels to me like goal post shifting specifically applied to flatpaks and nothing else. I can’t square the circle here. There is a pattern of practice that strongly suggests that standard project policy is to rely on defacto platform registries. I fail to see why flatpak/flathub is any different than podman/docker.io