Including 3rd-party runtimes

Hi folks,

We’ve been considering allowing 3rd party runtimes to be submitted to Flathub, so that it’s possible for different OS and distro vendors to participate in the Flathub ecosystem and give app developers their own choice in tools, support/lifecycle, updates, etc.

This is partly in response to Elementary OS switching their SDK to a native Flatpak runtime (per Distributing runtimes and sdk) and including it on Flathub would make a very smooth process for Elementary apps, and partly recognizing that folks like RedHat and Fedora are now publishing their own Flatpak runtimes which people are interested in using too.

I appreciate this is a trade-off; the more runtimes we have, the more bandwidth, disk space and memory we’re using on people’s systems, so our recommendation is still that unless you have a specific need to change tracks (eg your app is already developed and tested against an existing platform and you want to maintain that environment in Flatpak too), you stick to Freedesktop SDK derived runtimes wherever possible.

However ultimately Flathub is trying to reduce friction for app developers, so this move would allow them the choice of what works best for them and their users after evaluating the above caveats. We also want Flathub to remain neutral regarding OS/distro vendors, so there’s no benefit to us being strongly partisan on which runtime/SDK people use if it serves to locks platform providers out of our ecosystem in ways which could be unhelpful in the longer term.

That said, we need to make sure Flathub continues to provide a good experience for our users and we mitigate some of those adverse affects, so I’ve tried to draft a definition of what we’d like to see in a Runtime on the Wiki in order for Flathub to be willing to host it. I’d love any feedback and if folks have any suggestions about what a reasonable submission flow would be.

Thanks,
Rob

8 Likes

can’t edit the wiki, but you use amd64 for 64-bits intel while Flathub uses x86_64. Just so that the documentation is consistent.

1 Like

So, org.freedesktop, and org.gnome and org.kde based on those are considered first-party? Is it because there are developers from those projects working on and maintaining Flatpak and Flathub?

I know one doesn’t exist yet, but a hypothetical org.xfce runtime would then be considered third-party, right? What exactly would it need? It’s hard to tell from the links to org.gnome and org.kde what exactly gets generated, and org.gnome.Platform isn’t hosted on flathub’s github account, so I can’t figure out where the manifest is.

Here you can find the links to each repository.
https://docs.flatpak.org/en/latest/available-runtimes.html

Here is the conventions to the application’s (and runtime’s) ID.
The runtime’s ID in these case are their main website with reverse-DNS style (gnome.org, kde.org and freedesktop.org)
Requirements & Conventions — Flatpak documentation

Right, those links are exactly what I followed. At least for KDE’s runtime, I found the .in fle for the manifest. But with GNOME’s it’s like… I don’t even know where to start looking to find something that would look like the manifest. It almost seems obfuscated on purpose.

The GNOME SDK is built from this:

https://gitlab.gnome.org/GNOME/gnome-build-meta

Yes, I just said that I was there and couldn’t make heads or tails of that system. Okay, so let’s try this instead. Where does the resulting manifest for the SDK and runtime end up?

The manifest for each flatpak, be it runtime or app is always distributed inside the flatpak. To see the one for gnome platform you can do something like flatpak run --command=bash org.gnome.Platform and then cat /usr/manifest.json. If you run it with filesystem permissions you can copy it out of the container and examine in your favourite text editor.

But you can make flatpaks in a number of ways, be it using flatpak-builder manifests, builstream or likely other esoteric systems. I’m not sure that this is entirely relevant to the initial question though.

2 Likes

Ned, thanks! That was exactly what I was hoping to see. There is a near-overwhelming amount of information in there! But fortunately, the whole reason I was interested in this was for a hypothetical org.xfce.runtime that actually proved unnecessary. I was interested in getting XFCE-affiliated apps onto Flathub, but Mousepad and Ristretto have done just fine tacking on to the FDO platform. :slight_smile: