Fedora Must (Carefully) Embrace Flathub

, ,

Motivation

Opportunity is upon us! For the past few years, the desktop Linux user base has been growing at a historically high rate. StatCounter currently has us at 4.14% desktop OS market share for Q2 2025. For comparison, when Fedora Workstation was first released in Q4 2014, desktop Linux was at 1.38%. Now, StatCounter measures HTTP requests, not computers, but it’s safe to say the trend is highly encouraging. Don’t trust StatCounter? Cloudflare reports 2.9% for Q2 2025. One of the world’s most popular websites reports 5.1%. And although I was unable to figure out how to make a permanent link to the results, analytics.usa.gov is currently reporting a robust 6.2% for the past 90 days, and increasing. The Linux user base is already much larger than I previously suspected would ever be possible, and it seems to be increasing quickly. I wonder if we are perhaps nearing an inflection point where our user base may soon increase even more considerably. The End of 10 and enthusiastic YouTubers are certainly not hurting.

Compared to its peers, Fedora is doing particularly well. It’s pretty safe to say that Fedora is now one of the 2 or 3 most popular and successful desktop Linux operating systems, a far cry from its status 10 years ago, when Fedora suffered from an unfortunate longstanding reputation that it was an unstable “test bed” OS only suitable for experienced technical users. Those days are long gone; nowadays, Fedora has an army of social media users eager to promote it as a reliable, newcomer-friendly choice.

But we cannot stop here. If we become complacent and content ourselves with the status quo, then we will fail to take maximum advantage of the current opportunity.

Although Fedora Workstation works well for most users, and although quality and reliability has improved considerably over the past decade, it is still far too easy for inexperienced users to break the operating system. Today’s Fedora Workstation is fundamentally just a nicer version of the same thing we already had 10 years ago. The original plan called for major changes that we have thus far failed to deliver, like “Robust Upgrades,” “Better upgrade/rollback control,” and “Container based application install.” These critical goals are notably all already achieved by Fedora Silverblue, the experimental image-based alternative to Fedora Workstation, but few Fedora users benefit because only the most experienced and adventurous users are willing to install Silverblue. I had long assumed that Silverblue would eventually become the next Fedora Workstation, and that the Silverblue code name would eventually be retired. This is now an explicit project goal of Fedora’s Strategy 2028, and it is critical for Fedora’s success. The Fedora Workstation of the future must be:

  • Safe and image-based by default: an atomic operating system composed of RPMs built on bootc. Most users should stick with image-based mode because it’s much harder to break the OS, and easier to troubleshoot when something does go wrong.
  • Flexible if you so choose: converting the image-based OS into the traditional package-based OS managed by RPM and dnf must be allowed, for users who prefer or require it. Or alternatively, if converting is not possible, then installing a traditional non-atomic Fedora must remain possible. Either way, we must not force users to use image-based desktops if they do not want to, so no need to panic. But image-based must eventually become the new default.

Silverblue is not ready yet, but Fedora has a large community of developers and should be able to eventually resolve the remaining problems.

But wait, wasn’t this supposed to be a blog post about Flathub? Well, consider that with an image-based OS, you cannot easily install traditional RPM packages. Instead, in Fedora Silverblue, desktop applications are installed only via Flatpak. (This is also true of Fedora Kinoite and Fedora’s other atomic desktop variants.) So Fedora must have a source of Flatpaks, and that source must be enabled by default, or there won’t be any apps available.

(Don’t like Flatpak? This blog post is long enough already, so I’ll ask you to just make a leap of faith and accept that Flatpak is cool. Notably, Flatpak applications that keep their bundled dependencies updated and do not subvert the sandbox are much safer to use than traditional distro-packaged applications.)

In practice, there are currently only two interesting sources of Flatpaks to choose from: Fedora Flatpaks and Flathub. Flathub is the much better choice, and enabling it by default should be our end goal. Fedora is already discussing whether to do this. But Flathub also has several disadvantages, some of which ought to be blockers.

Why Flathub?

There are important technical differences between Fedora’s Flatpaks, built from Fedora RPMs, vs. Flathub’s Flatpaks, which are usually built on top of freedesktop-sdk. But I will not discuss those, because the social differences are more important than the technical differences.

Users Like Flathub

Feedback from Fedora’s user base has been clear: among users who like Flatpaks, Flathub is extremely popular. When installing a Flatpak application, users generally expect it to come from Flathub. In contrast, many users of Fedora Flatpaks do not install them intentionally, but rather by accident, only because they are the preferred software source in GNOME Software. Users are often frustrated to discover that Fedora Flatpaks are not supported by upstream software developers and have a different set of bugs than upstream Flatpaks do. It is also common for users and even Fedora developers to entirely remove the Fedora Flatpak application source.

Not so many users prefer to use Fedora Flatpaks. Generally, these users cite some of Flathub’s questionable packaging practices as justification for avoiding use of Flathub. These concerns are valid; Flathub has some serious problems, which I will discuss in more detail below. But improving Flathub and fixing these problems would surely be much easier than creating thousands of Fedora Flatpak packages and attempting to compete with Flathub, a competition that Fedora would be quite unlikely to win.

Flathub is drastically more popular than Fedora Flatpaks even among the most hardcore Fedora community members who participate in change proposal debate on Fedora Discussion. (At time of writing, nearly 80% of discussion participants favor filtering out Fedora Flatpaks.)

This is the most important point. Flathub has already won.

Cut Out the Middleman

In general, upstream software developers understand their software much better than downstream packagers. Bugs reported to downstream issue trackers are much less likely to be satisfactorily resolved. There are a variety of ways that downstream packagers could accidentally mess up a package, whether by failing to enable a feature flag, or upgrading a dependency before the application is compatible with the new version. Downstream support is almost never as good as upstream support.

Adding a middleman between upstream and users really only makes sense if the middleman is adding significant value. Traditional distro-packaged applications used to provide considerable value by making it easy to install the software. Nowadays, since upstreams can distribute software directly to users via Flathub, that value is far more limited.

Bus Factor is Critical

Most Flatpak application developers prefer to contribute to Flathub. Accordingly, there are very few developers working on Fedora Flatpaks. Almost all of the Fedora Flatpaks are actually owned by one single developer who has packaged many hundreds of applications. This is surely not a healthy situation.

Bugs in Fedora Flatpaks are reported on the Fedora Flatpak SIG issue tracker. This SIG notably does not have a list of active members, but rather a years-old list of people who are interested in joining the SIG, who are encouraged to attend the first meeting. Needless to say the SIG does not seem to be in a very good state.

I suspect this situation is permanent, reflecting a general lack of interest in Fedora Flatpak development, not just a temporary shortfall of contributors. Quality is naturally going to be higher where there are more contributors. The quality of Fedora Flatpak applications is often lower than Flathub applications, sometimes significantly so. Fedora Flatpaks also receive significantly less testing than Flathub Flatpaks. Upstream developers do not test the Fedora Flatpaks, and downstream developers are spread too thin to have plausible hope of testing them adequately.

Focus on What Really Matters

Fedora’s main competency and primary value is the core operating system, not miscellaneous applications that ship on top of it for historical reasons.

When people complain that “distros are obsolete,” they don’t mean that Linux operating systems are not needed anymore. Of course you need an OS on which to run applications. The anti-distro people notably all use distros.

But it’s no longer necessary for a Linux distribution to attempt to package every open source desktop application. That used to be a requirement for a Linux operating system to be successful, but nowadays it is an optional activity that we perform primarily for historical reasons, because it is what we have always done rather than because it is still truly strategic or essential. It is a time-consuming, resource-intensive side quest that no longer makes sense and does not add meaningful value.

The Status Quo

Let’s review how things work currently:

  • By default, Fedora Workstation allows users to install open source software from the following sources: Fedora Flatpaks, Fedora RPMs, and Cisco’s OpenH264 RPM.
  • The post-install initial setup workflow, gnome-initial-setup, suggests enabling third-party repositories. If the user does not click the Enable button, then GNOME Software will make the same suggestion the first time it is run. Clicking this button enables all of Flathub, plus a few other RPM repositories.
Image displaying the Third-Party Repositories page in Fedora's gnome-initial-setup.

Fedora will probably never enable software sources that contain proprietary software by default, but it’s easy to enable searching for proprietary software if desired.

(Technically, Fedora actually has a filter in place to allow hiding any Flathub applications we don’t want users to see. But since Fedora 38, this filter is empty, so no apps are hidden in practice. The downstream filter was quite unpopular with users, and the mechanism still exists only as a safety hatch in case there is some unanticipated future emergency.)

The Future

Here are my proposed requirements for Fedora Workstation to become a successful image-based OS.

This proposal applies only to Fedora Workstation (Fedora’s GNOME edition). These proposals could just as well apply to other Fedora editions and spins, like Fedora KDE Plasma Desktop, but different Fedora variants have different needs, so each should be handled separately.

Flathub is Enabled by Default

Since Flathub includes proprietary software, we cannot include all of Flathub by default. But Flathub already supports subsets. Fedora can safely enable the floss subset by default, and replace the “Enable Third-Party Repositories” button with an “Enable Proprietary Software Sources” button that would allow users to switch from the floss subset to the full Flathub if they so choose.

This goal can be implemented today, but we should wait because Flathub has some problems that we ought to fix first. More on that below.

All Default Applications are Fedora Flatpak Applications

All applications installed by default in Fedora Workstation should be Fedora Flatpaks. (Or almost all. Certain exceptions, like gnome-control-center, would make more sense as part of the OS image rather than as a Flatpak.)

Notice that I said Fedora Flatpaks, not Flathub. Fedora surely does need to control the handful of applications that are shipped by default. We don’t want to be at the mercy of Flathub to provide the core user experience.

There has been recent progress towards this goal, although it’s not ready yet.

All Other Applications are Flathub Flatpaks

With the exception of the default Fedora Flatpak applications, Flathub should be the only source of applications in GNOME Software.

It will soon be time to turn off GNOME Software’s support for installing RPM applications, making it a Flatpak-only software center by default. (Because GNOME Software uses a plugin architecture, users of traditional package-based Fedora who want to use GNOME Software to install RPM applications would still be able to do so by installing a subpackage providing a plugin, if desired.)

This requirement is an end goal. It can be done today, but it doesn’t necessarily need to be an immediate next step.

Flathub Must Improve

Flathub has a few serious problems, and needs to make some policy changes before Fedora enables it by default. I’ll discuss this in more detail next.

Fedora Must Help

We should not make demands of Flathub without helping to implement them. Fedora has a large developer community and significant resources. We must not barge in and attempt to take over the Flathub project; instead, let’s increase our activity in the Flathub community somewhat, and lend a hand where requested.

The Case for Fedora Flatpaks

Earlier this year, Yaakov presented The Case for Fedora Flatpaks. This is the strongest argument I’ve seen in favor of Fedora Flatpaks. It complains about five problems with Flathub:

  • Lack of source and build system provenance: on this point, Yaakov is completely right. This is a serious problem, and it would be unacceptable for Fedora to embrace Flathub before it is fixed. More on this below.
  • Lack of separation between FOSS, legally encumbered, and proprietary software: this is not a real problem. Flathub already has a floss subset to separate open source vs. proprietary software; it may not be a separate repository, but that hardly matters because subsets allow us to achieve an equivalent user experience. Then there is indeed no separate subset for legally-encumbered software, but this also does not matter. Desktop users invariably wish to install encumbered software; I have yet to meet a user who does not want multimedia playback to work, after all. Fedora cannot offer encumbered multimedia codecs, but Flathub can, and that’s a major advantage for Flathub. Users and operating systems can block the multimedia extensions if truly desired. Lastly, some of the plainly-unlicensed proprietary software currently available on Flathub does admittedly seem pretty clearly outrageous, but if this is a concern for you, simply stick to the floss subset.
  • Lack of systemic upgrading of applications to the latest runtime: again, Yaakov is correct. This is a serious problem, and it would be unacceptable for Fedora to embrace Flathub before it is fixed. More on this below.
  • Lack of coordination of changes to non-runtime dependencies: this is a difference from Fedora, but it’s not necessarily a problem. In fact, allowing applications to have different versions of dependencies can be quite convenient, since upgrading dependencies can sometimes break applications. It does become a problem when bundled dependencies become significantly outdated, though, as this creates security risk. More on this below.
  • Lack of systemic community engagement: it’s silly to claim that Flathub has no community. Unresponsive Flathub maintainers are a real problem, but Fedora has an unresponsive maintainer problem too, so this can hardly count as a point against Flathub. That said, yes, Flathub needs a better way to flag unresponsive maintainers.

So now we have some good reasons to create Fedora Flatpaks. But maintaining Flatpaks is a tremendous effort. Is it really worth doing if we can improve Flathub instead?

Flathub Must Improve

I propose the following improvements:

  • Open source software must be built from source on trusted infrastructure.
  • Applications must not depend on end-of-life runtimes.
  • Applications must use flatpak-external-data-checker to monitor bundled dependencies wherever possible.
  • Sandbox holes must be phased out, except where this is fundamentally technically infeasible.

Let’s discuss each point in more detail.

Build Open Source from Source

Open source software can contain all manner of vulnerabilities. Although unlikely, it might even contain malicious backdoors. Building from source does nothing to guarantee that the software is in any way safe to use (and if it’s written in C or C++, then it’s definitely not safe). But it sets an essential baseline: you can at least be confident that the binary you install on your computer actually corresponds to the provided source code, assuming the build infrastructure is trusted and not compromised. And if the package supports reproducible builds, then you can reliably detect malicious infrastructure, too!

In contrast, when shipping a prebuilt binary, whoever built the binary can easily insert an undetectable backdoor; there is no need to resort to stealthy obfuscation tactics. With proprietary software, this risk is inherent and unavoidable: users just have to accept the risk and trust that whoever built the software is not malicious. Fine. But users generally do not expect this risk to extend to open source software, because all Linux operating systems fortunately require open source software to be built from source. Open source software not built from source is unusual and is invariably treated as a serious bug.

Flathub is different. On Flathub, shipping prebuilt binaries of open source software is, sadly, a common accepted practice. Here are several examples. Flathub itself admits that around 6% of its software is not built from source, so this problem is pervasive, not an isolated issue. (Although that percentage unfortunately considers proprietary software in addition to open source software, overstating the badness of the problem, because building proprietary software from source is impossible and not doing so is not a problem.) Update: I’ve been advised that I misunderstood the purpose of extra-data. Most apps that ship prebuilt binaries do not use extra-data. I’m not sure how many apps are shipping prebuilt binaries, but the problem is pervasive.

Security is not the only problem. In practice, Flathub applications that do not build from source sometimes package binaries only for x86_64, leaving aarch64 users entirely out of luck, even though Flathub normally supports aarch64, an architecture that is important for Fedora. This is frequently cited by Flathub’s opponents as major disadvantage relative to Fedora Flatpaks.

A plan to fix this should exist before Fedora enables Flathub by default. I can think of a few possible solutions:

  • Create a new subset for open source software not built from source, so Fedora can filter out this subset. Users can enable the subset at their own risk. This is hardly ideal, but it would allow Fedora to enable Flathub without exposing users to prebuilt open source software.
  • Declare that any software not built from source should be treated equivalent to proprietary software, and moved out of the floss subset. This is not quite right, because it is open source, but it has the same security and trust characteristics of proprietary software, so it’s not unreasonable either.
  • Set a flag date by which any open source software not built from source must be delisted from Flathub. I’ll arbitrarily propose July 1, 2027, which should be a generous amount of time to fix apps. This is my preferred solution. It can also be combined with either of the above.

Some of the apps not currently built from source are Electron packages. Electron takes a long time to build, and I wonder if building every Electron app from source might overwhelm Flathub’s existing build infrastructure. We will need some sort of solution to this. I wonder if it would be possible to build Electron runtimes to provide a few common versions of Electron. Alternatively, Flathub might just need more infrastructure funding.

Tangent time: a few applications on Flathub are built on non-Flathub infrastructure, notably Firefox and OBS Studio. It would be better to build everything on Flathub’s infrastructure to reduce risk of infrastructure compromise, but as long as this practice is limited to only a few well-known applications using trusted infrastructure, then the risk is lower and it’s not necessarily a serious problem. The third-party infrastructure should be designed thoughtfully, and only the infrastructure should be able to upload binaries; it should not be possible for a human to manually upload a build. It’s unfortunately not always easy to assess whether an application complies with these guidelines or not. Let’s consider OBS Studio. I appreciate that it almost follows my guidelines, because the binaries are normally built by GitHub Actions and will therefore correspond with the project’s source code, but I think a malicious maintainer could bypass that by uploading a malicious GitHub binary release? This is not ideal, but fortunately custom infrastructure is an unusual edge case, rather than a pervasive problem.

Penalize End-of-life Runtimes

When a Flatpak runtime reaches end-of-life (EOL), it stops receiving all updates, including security updates. How pervasive are EOL runtimes on Flathub? Using the Runtime Distribution section of Flathub Statistics and some knowledge of which runtimes are still supported, I determined that 994 out of 3,438 apps are currently using an EOL runtime. Ouch. (Note that the statistics page says there are 3,063 total desktop apps, but for whatever reason, the number of apps presented in the Runtime Distribution graph is higher. Could there really be 375 command line apps on Flathub?)

Using an EOL runtime is dangerous and irresponsible, and developers who claim otherwise are not good at risk assessment. Some developers will say that security does not matter because their app is not security-critical. It’s true that most security vulnerabilities are not actually terribly important or worth panicking over, but this does not mean it’s acceptable to stop fixing vulnerabilities altogether. In fact, security matters for most apps. A few exceptions would be apps that do not open files and also do not use the network, but that’s really probably not many apps.

I recently saw a developer use the example of a music player application to argue that EOL runtimes are not actually a serious problem. This developer picked a terrible example. Our hypothetical music player application can notably open audio files. Applications that parse files are inherently high risk because users love to open untrusted files. If you give me a file, the first thing I’m going to do is open it to see what it is. Who wouldn’t? Curiosity is human nature. And a music player probably uses GStreamer, which puts it at the very highest tier of security risk (alongside your PDF reader, email client, and web browser). I know of exactly one case of a GNOME user being exploited in the wild: it happened when the user opened a booby-trapped video using Totem, GNOME’s GStreamer-based video player. At least your web browser is guaranteed to be heavily sandboxed; your music player might very well not be.

The Flatpak sandbox certainly helps to mitigate the impact of vulnerabilities, but sandboxes are intended to be a defense in depth measure. They should not be treated as a primary security mechanism or as an excuse to not fix security bugs. Also, too Flatpak many apps subvert the sandbox entirely.

Of course, each app has a different risk level. The risk of you being attacked via GNOME Calculator is pretty low. It does not open files, and the only untrusted input it parses is currency conversion data provided by the International Monetary Fund. Life goes on if your calculator is unmaintained. Any number of other applications are probably generally safe. But it would be entirely impractical to assess 3000 different apps individually to determine whether they are a significant security risk or not. And independent of security considerations, use of an EOL runtime is a good baseline to determine whether the application is adequately maintained, so that abandoned apps can be eventually delisted. It would not be useful to make exceptions.

The solution here is simple enough:

  • It should not be possible to build an application that depends on an EOL runtime, to motivate active maintainers to update to a newer runtime. Flathub already implemented this rule in the past, but it got dropped at some point.
  • An application that depends on an EOL runtime for too long should eventually be delisted. Perhaps 6 months or 1 year would be good deadlines.
  • A monitoring dashboard would make it easier to see which apps are using maintained runtimes and which need to be fixed.

Monitor Bundled Dependencies

Flatpak apps have to bundle any dependencies not present in their runtime. This creates considerable security risk if the maintainer of the Flathub packaging does not regularly update the dependencies. The negative consequences are identical to using an EOL runtime.

Fortunately, Flathub already has a tool to deal with this problem: flatpak-external-data-checker. This tool automatically opens pull requests to update bundled dependencies when a new version is available. However, not all applications use flatpak-external-data-checker, and not all applications that do use it do so for all dependencies, and none of this matters if the app’s packaging is no longer maintained.

I don’t know of any easy ways to monitor Flathub for outdated bundled dependencies, but given the number of apps using EOL runtimes, I assume the status quo is pretty bad. The next step here is to build better monitoring tools so we can better understand the scope of this problem.

Phase Out Most Sandbox Holes (Eventually)

Applications that parse data are full of security vulnerabilities, like buffer overflows and use-after-frees. Skilled attackers can turn these vulnerabilities into exploits, using carefully-crafted malicious data to gain total control of your user account on your computer. They can then install malware, read all the files in your home directory, use your computer in a botnet, and do whatever else they want with it. But if the application is sandboxed, then a second type of exploit, called a sandbox escape, is needed before the app can harm your host operating system and access your personal data, so the attacker now has to exploit two vulnerabilities instead of just one. And while app vulnerabilities are extremely common, sandbox escapes are, in theory, rare.

In theory, Flatpak apps are drastically safer than distro-packaged apps because Flatpak provides a strong sandbox by default. The security benefit of the sandbox cannot be understated: it is amazing technology and greatly improves security relative to distro-packaged apps. But in practice, Flathub applications routinely subvert the sandbox by using expansive static permissions to open sandbox holes. Flathub claims that it carefully reviews apps’ use of static permissions and allows only the most narrow permissions that are possible for the app to function properly. This claim is dubious because, in practice, the permissions of actual apps on Flathub are extremely broad, as often as not making a total mockery of the sandbox.

While some applications use sandbox holes out of laziness, in many cases it’s currently outright impossible to sandbox the application without breaking key functionality. For example, Sophie has documented many problems that necessitate sandbox holes in GNOME’s image viewer, Loupe. These problems are fixable, but they require significant development work that has not happened yet. Should we punish the application by requiring it to break itself to conform to the requirements of the sandbox? The Flathub community has decided that the answer is no: application developers can, in practice, use whatever permissions they need to make the app work, even if this entirely subverts the sandbox.

This was originally a good idea. By allowing flexibility with sandbox permissions, Flathub made it very easy to package apps, became extremely popular, and allowed Flatpak itself to become successful. But the original understanding of the Flatpak community was that this laxity would be temporary: eventually, the rules would be tightened and apps would be held to progressively higher standards, until sandbox holes would eventually become rare. Unfortunately, this is taking too long. Flatpak has been around for a decade now, but this goal is not within reach.

Tightening sandbox holes does not need to be a blocker for adopting Flathub in Fedora because it’s not a problem relative to the status quo in Fedora. Fedora Flatpaks have the exact same problem, and Fedora’s distro-packaged apps are not sandboxed at all (with only a few exceptions, like your web browser). But it’s long past time to at least make a plan for how to eventually phase out sandbox holes wherever possible. (In some cases, it won’t ever be possible; e.g. sandboxing a file manager or disk usage analyzer does not make any sense.) It’s currently too soon to use sticks to punish applications for having too many sandbox holes, but sticks will be necessary eventually, hopefully within the next 5 years. In the meantime, we can immediately begin to use carrots to reward app developers for eliminating holes. We will need to discuss specifics.

We also need more developers to help improve xdg-desktop-portal, the component that allows sandboxed apps to safely access resources on the host system without using sandbox holes. This is too much work for any individual; it will require many developers working together.

Software Source Prioritization

So, let’s say we successfully engage with the Flathub project and make some good progress on solving the above problems. What should happen next?

Fedora is a community of doers. We cannot tell Fedora contributors to stop doing work they wish to do. Accordingly, it’s unlikely that anybody will propose to shut down the Fedora Flatpak project so long as developers are still working on it. Don’t expect that to happen.

However, this doesn’t mean Fedora contributors have a divine right for their packaged applications to be presented to users by default. Each Fedora edition (or spin) should be allowed to decide for itself what should be presented to the user in its software center. It’s time for the Fedora Engineering Steering Committee (FESCo) to allow Fedora editions to prefer third-party content over content from Fedora itself.

We have a few options as to how exactly this should work:

  • We could choose to unconditionally prioritize all Flathub Flatpaks over Fedora Flatpaks, as I proposed earlier this year (Workstation ticket, LWN coverage). The precedence in GNOME Software would be Flathub > Fedora Flatpaks.
  • Alternatively, we could leave Fedora Flatpaks with highest priority, and instead apply a filter such that only Fedora Flatpaks that are installed by default are visible in GNOME Software. This is my preferred solution; there is already an active change proposal for Fedora 43 (proposal, discussion), and it has received considerable support from the Fedora community. Although the proposal only targets atomic editions like Silverblue and Kinoite for now, it makes sense to extend it to Fedora Workstation as well. The precedence would be Filtered Fedora Flatpaks > Flathub.

When considering our desired end state, we can stop there; those are the only two options because of my “All Other Applications are Flathub Flatpaks” requirement: in an atomic OS, it’s no longer possible to install RPM-packaged applications, after all. But in the meantime, as a transitional measure, we still need to consider where RPMs fit in until such time that Fedora Workstation is ready to remove RPM applications from GNOME Software.

We have several possible precedence options. The most obvious option, consistent with my proposals above, is: Flathub > Fedora RPMs > Fedora Flatpaks. And that would be fine, certainly a huge improvement over the status quo, which is Fedora Flatpaks > Fedora RPMs > Flathub.

But we could also conditionally prioritize Flathub Flatpaks over Fedora Flatpaks or Fedora RPMs, such that the Flathub Flatpak is preferred only if it meets certain criteria. This makes sense if we want to nudge Flathub maintainers towards adopting certain best practices we might wish to encourage. Several Fedora users have proposed that we prefer Flathub only if the app has Verified status, indicating that the Flathub maintainer is the same as the upstream maintainer. But I do not care very much whether the app is verified or not; it’s perfectly acceptable for a third-party developer to maintain the Flathub packaging if the upstream developers do not wish to do so, and I don’t see any need to discourage this. Instead, I would rather consider whether the app receives a Probably Safe safety rating in GNOME Software. This would be a nice carrot to encourage app developers to tighten sandbox permissions. (Of course, this would be a transitional measure only, because eventually the goal is for Flathub to be the only software source.)

There are many possible outcomes here, but here are my three favorites, in order:

  1. My favorite option: Filtered Fedora Flatpaks > Probably Safe Flathub > Fedora RPMs > Potentially Unsafe Flathub. Fedora Flatpaks take priority, but this won’t hurt anything because only applications shipped by default will be available, and those will be the ones that receive the most testing. This is not a desirable end state because it is complicated and it will be confusing to explain to users why a certain software source was preferred. But in the long run, when Fedora RPMs are eventually removed, it will simplify to Filtered Fedora Flatpaks > Flathub, which is elegant.
  2. A simple option, the same thing but without the conditional prioritization: Filtered Fedora Flatpaks > Flathub > Fedora RPMs.
  3. Alternative option: Probably Safe Flathub > Fedora RPMs > Potentially Unsafe Flathub > Unfiltered Fedora Flatpaks. When Fedora RPMs are eventually removed, this will simplify to Flathub > Unfiltered Fedora Flatpaks. This alternative option behaves almost the same as the above, except allows users to manually select the Fedora Flatpak if they wish to do so, rather than filtering them out. But there is a significant disadvantage: if you uninstall an application that is installed by default, then reinstall the application, it would come from Flathub rather than Fedora Flatpaks, which is unexpected. So we’ll probably want to hardcode exceptions for default apps to prefer Fedora Flatpaks.
  4. The corresponding simple option without conditional prioritization: Flathub > Fedora RPMs > Unfiltered Fedora Flatpaks.

Any of these options would be fine.

Conclusion

Flathub is, frankly, not safe enough to be enabled by default in Fedora Workstation today. But these problems are fixable. Helping Flathub become more trustworthy will be far easier than competing against it by maintaining thousands of Fedora Flatpaks. Enabling Flathub by default should be a strategic priority for Fedora Workstation.

I anticipate a lively debate on social media, on Matrix, and in the comments. And I am especially eager to see whether the Fedora and Flathub communities accept my arguments as persuasive. FESCo will be considering the Filter Fedora Flatpaks for Atomic Desktops proposal imminently, so the first test is soon.

Comments

28 responses to “Fedora Must (Carefully) Embrace Flathub”

  1. Søren Hauberg Avatar

    Thanks for the great write-up!

    One application set to keep in mind are games. These are often only maintained for a short period, but remain fun and nostalgic for much longer. Most games that remain playable for long do not access user files/internet.

    It would be a shame if an old game that was packed for Flathub was automatically discarded for being unmaintained. Marking it as unmaintained would be fine, but completely delisting would be a lost opportunity.

  2. Alexander Vanhee Avatar
    Alexander Vanhee

    I generally really like and agree with this blog post, but I do have a few issues. Using terms like “Probably safe” or “Potentially unsafe” as benchmarks for app safety in this context seems unwise to me.

    As I understand it, this rating is automatically derived from the manifest. That might be good enough for a small message in a box in the app store or on the Flathub site, but it’s not thorough enough to justify penalizing an app in any meaningful way by using it as a filter of security quality.

    I believe a new rating system should be developed for your proposed use, where a human reviewer can make a judgment call about how reasonable an app’s permissions are, and where developers have the opportunity to challenge a rating or request guidance on tightening sandbox security. Not unlike how the app listing quality system currently works.

    I should mention that i have an app on Flathub with a “Potentially unsafe” rating, which most likely influences my perspective.

    1. Michael Catanzaro Avatar
      Michael Catanzaro

      The current system is useful because it’s entirely algorithmic and it’s relatively easy to determine which permissions are safe vs. which are unsafe. I’m afraid the rating system will not be trustworthy if it’s based on personal opinions of human reviewers. Trying to decide which apps that have unsafe permissions are safe to use is going to be controversial, because humans have different opinions on what is safe and what is not. E.g. I would say GIMP is very unsafe because it is written in C, but the GIMP developers might not appreciate this opinion. And I would say Loupe is very unsafe because it has hundreds of bundled Rust dependencies, but the Loupe developers will very much not like this opinion. :) Just checking the permissions is simpler and fair for everyone.

      But I know that this is not working well currently due to inability to drop unsafe permissions without breaking app functionality. I’m hoping we can improve this over time with community effort. Making Loupe achieve Probably Safe would be a good starting point, since that will require fixing several different problems that are blocking many other apps from achieving Probably Safe.

      Epiphany would be another decent test case: that one is almost safe, except it’s rated Probably Unsafe because it grants access to your Downloads directory; many apps need access to just one specific XDG directory. This permission would be outrageous for a Calculator app, but for a web browser it makes sense. I’m thinking it might make sense to just allow certain XDG directories, but I’m not sure.

      GNOME Software and Flathub don’t even agree on the safety algorithm itself. They use similar algorithms, but see this issue for a quite significant exception where Software is (appropriately) much stricter than Flathub’s outrageously permissive approach. So I’m unlikely to trust the judgment of Flathub reviewers unless it’s encoded into an algorithm.

    2. SeeM Avatar
      SeeM

      Epiphany from RPM doesn’t say “unsafe”, only because it has access to a whole home directory and whatever Selinux is allowing. Having any controll over MAC’s for 3rd party applications is great.

  3. Timothée Ravier Avatar
    Timothée Ravier

    Thanks for writing this very detailed post!

  4. SeeM Avatar
    SeeM

    I appreciate Flathub more after switching to CentOS 10 on desktop. Good luck rebulding Evolution and it’s dependencies from Fedora source rpms. I like a challenge, but… no. (-:

  5. Johnny Hughes Avatar
    Johnny Hughes

    Except that the said software developers have no idea what Fedora is trying to accomplish. They have no idea if their software needs to be compiled with different switches to work with other pieces of the Distribution in question. In fact, they could not care less. What Fedora or Debian or Arch is trying to accomplish.

    You are telling a distro to ‘just trust me bro, it is secure and it works’. This is quite a ridiculous ask.

  6. AsciiWolf Avatar

    While I partially agree, I still think that Fedora Flatpaks have its important place in Fedora – for example to offer apps with custom downstream patches/modifications etc. or to just maintain the Fedora identity. They can be very important and should definitely be kept. However, the problem with Fedora Flatpaks is that vast majority of them is either outdated or broken in some way. I think that they *should* be greatly reduced and ideally only the Flatpaks that are actively maintained by the RPM maintainer should be allowed.

    And I also think that the support for RPM apps in GNOME Software should definitely be kept. Removing it would basically make Fedora Workstation useless for most users in my opinion. So maybe instead consider replacing Fedora Workstation with the immutable variant as the default one and keep the regular Workstation (with RPM apps enabled in Software) as the “Legacy” variant?

    1. AsciiWolf Avatar

      The Fedora Flatpaks priority in GNOME Software should (as mentioned in the blog post) probably also be changed to be lower than Flathub.

  7. Alessandro Scarozza Avatar
    Alessandro Scarozza

    It all seems easily solved this way:
    – merge the people working on Fedora Flatpak into Flathub
    – split the Flathub apps into two repositories, main and nonfree, only main is active oob

    1. AsciiWolf Avatar

      > merge the people working on Fedora Flatpak into Flathub

      That would just lead to more outdated and broken Flatpaks on Flathub. Please see my previous comment.

      > split the Flathub apps into two repositories, main and nonfree, only main is active oob

      It is already possible to hide non-free apps from the flathub remote.

  8. moeenio Avatar
    moeenio

    Great article, thanks.

    What would you think of providing long-term supported runtimes? I imagine you could build them off of Debian or a RHEL clone and it would let maintainers not have to keep up with regular new runtime versions.

    1. Michael Catanzaro Avatar
      Michael Catanzaro

      There actually is a RHEL runtime! It’s not available on Flathub, though. Looks like you need a RHEL subscription to use it?

      On Flathub, freedesktop-sdk is effectively an LTS runtime. It’s only supported for 2 years, though, but that’s twice as long as the GNOME and KDE runtimes. 3 years would be better, but also a lot more work that the existing freedesktop-sdk developers probably don’t want to take on. One possible way to extend support for longer would be for a new team of volunteers to handle the extended support period.

  9. Michaël Berteaux (Mikenux) Avatar
    Michaël Berteaux (Mikenux)

    Nice but some things to say.

    I think you forgot the entreprise interest: fixing bugs as soon as possible. App developers can’t always fix them as soon as possible and aren’t always in favor of merging workarounds (when those are the fastest solution in wait of proper fixing). This is a reason why keeping a distro source for some apps is needed. I wonder if something can be developed to get apps from flathub, then switch to a repository containing a patched version by the distro (if a patch cannot directly land upstream), then automatically switch back to flathub version when a fix landed upstream. The problem of branding need to be solved too (mostly about directing the user to the right location for reporting bugs).

    On enabling proprietary software sources. Showing by default proprietary software is better as new users may search for those at first when they expect it, especially in case of gaming (is it really normal to have to enable a repository for that?). Instead, provide an experience on showing only open-source software and a system to show open-source alternatives when facing a proprietary app.

    For default apps on Fedora, this could depend on app permissions and the state of runtimes and extensions. A mechanism to watch permissions combined with the system to switch versions mentioned above may improve things relative to security.

    For encumbered software, there are extensions and it is needed to be sure an app is using extensions for that and not shipping them directly with the app. However, there is no problem for codecs when it is about playing media in Europe (I don’t know if it concern all countries), so default install of them might be expected. This can be done based on user’s settings and/or as warning when wanting to install (i.e. “Also install codecs?” with relevant text about legals).

    Apps not build from source or using other infrastructure. You can improve the process. But, don’t disallow shipping apps except if the reasons given by a developer or a maintainer are invalid. Also, what about downloadable content, which might download binaries, as there might be a portal for that?

    aarch64 apps. You need support from upstream for that… Or be clear until upstream is okay with supporting the architecture. The branding problem need to be fixed too.

    EOL runtimes. I checked the life of GNOME 46 runtime. GNOME 46 has been released in march 2024 and the runtime has been EOL in april 2025. That’s 1 year and 1 month. The 47 runtime has certainly been released in october 2024. This gives a developer 7 month to update (without considering betas) to a newer runtime (which will be not the latest). With your proposal, this gives 13 to 19 months (best 19). Within this time, are all developers able to update and test their app with a new version, if they already have to triage and fix bugs, and review merge requests? This depends on the size of their team. Also, what if devs are just devs on free time? What if they experience bad life events? This should be considered. Finally, sandbox level of the app might be indeed taken into account.

    Software Source prioritization. Indeed, having any ordering is not ideal. Another suggestion is: Have all Flathub (with other suggested improvements above) and have other sources only if default or app not available in flathub. If there is a “better” version than the flathub one, then we have the two-step install recently introduced by Tobias in software-mockups (issue: https://gitlab.gnome.org/Teams/Design/software-mockups/-/issues/22; Latest Tobias’ mockup: https://gitlab.gnome.org/Teams/Design/software-mockups/-/blob/master/context-tiles-refresh-tbernard.png?ref_type=heads) . The message can be adapted.

  10. Luke Yelavich Avatar
    Luke Yelavich

    If I recall correctly, one reason why OBS is built with github actions and uploaded directly to flathub is because OBS uses github secrets storage for various API secrets for accessing streaming service integrations for Twitch, Youtube etc. If Flathub is to build such software on its own infrastructure, then a solution will have to be devised for keeping API secrets, well, secret.

    appy to be corrected of course.

  11. Naheem Says Avatar
    Naheem Says

    A problem with the current proposal is that it will not actually fix anything.

    The problem is that Fedora Flatpaks cannot include patent encumbered software.

    Now, limiting Fedora flatpaks to default packages only will still mean that the thumbnailer does not thumbnail patent encumbered flatpaks. Now will the default media player play all the media formats due to patents.

    A first step to fixing this will require allowing patent encumbered software and codecs and extensions for Fedora built software to be provided from elsewhere.

    So step 1 is for Fedora flatpaks to also allow extra-data type mechanisms and to allow (eg flathub) to carry patented codec extensions. Without that the majority benefits will not be experienced by most users.

    Once that is solved, flathub’s superiority will diminish (but not be totally balanced – it still has some benefits).

    A step also required for immutable systems is for codecs to be kept outside the immutable system, so that system software can load eg flatpacked extension points to obtain codecs. I am not a coder but I think this may be doable by adding the ability for gstreamer to mount flatpak extension points and add the found codecs to the system codec(maybe in sandboxed form)

  12. Adil Arif Avatar
    Adil Arif

    I love deep analysis and detailed visions. This post is refreshing and truly made my day. I agree with everything stated. I hope the asks here comes to fruition.

  13. Russell Haley Avatar
    Russell Haley

    >- It should not be possible to build an application that depends on an EOL runtime, to motivate active maintainers to update to a newer runtime. Flathub already implemented this rule in the past, but it got dropped at some point.

    >- An application that depends on an EOL runtime for too long should eventually be delisted. Perhaps 6 months or 1 year would be good deadlines.

    As a happy user of Flathub on Fedora, this feels an awful lot like “barg[ing] in and attempt[ing] to take over the Flathub project”.

    One of the claimed advantages of container-based packaging is that applications that are *finished* just keep working with no further attention from the original author, just like a Windows .exe.

    Developer attention is a finite resource. Think of it in terms of Little’s law.

    The queue is the sum total of all end-user software available on the Linux desktop.

    The throughput is the capacity of all the world’s Linux desktop developers for writing end-user software.

    The latency is the amount of time a program keeps working until some change-lover comes along and breaks it, requiring a developer to use their capacity to pick that program off the ground and put it back at the head of the queue.

    See the problem with a 1 year deprecation window?

  14. Eri the Switch Avatar
    Eri the Switch

    On topic of out-of-date runtimes: first of all, I’d argue that the bigger issue here is applications that subvert the sandbox, rendering its protections ineffective against both patched and unpatched vulnerabilities. Second, please add support for monitoring runtime updates to flatpak-external-data-checker (issue #161) if you want developers to have an easier time keeping up with them! It’s pretty odd how the single biggest dependency is still not automatically suggested for updating.

  15. Nate Graham Avatar

    If C, C++, Rust with bundled dependencies, and access to XDG folders or gaming controllers are unsafe, I think basically all software is unsafe, and the term loses meaning.

    But with all this talk of security, I also think we’re at risk of focusing on last century’s challenges.

    Today the threats normal people face are mostly social engineering attacks like text and email phishing scams, apps that encourage unhealthy addictive behaviors, and attempts to trick you into doxxing yourself, running malicious unsandboxed binaries, or sending money to a threatening attacker.

    In the high level conversation about Flatpak’s security model, I see little to no discussion about how to harden against these kinds of threats; instead we’re concerned with “what if the user stores makefiles in their XDG music directory or their music player opens a maliciously-crafted song file.” Stuff like that is theoretical outside of the realm of international espionage. Hardening against it isn’t that helpful for most people and uses, especially if the side effect of doing so is to worsen the app’s UX and therefore incentivize users to punch holes in the security or not use Flatpak at all.

    So I’d love to see more focus on hardening against today’s more pressing threats, rather than the current trade-off of “worse app UX” vs “swiss cheese security theater”.

    1. Michaël Berteaux (Mikenux) Avatar
      Michaël Berteaux (Mikenux)

      If there is little to no discussion about this, maybe open it, proposing solutions if possible.

      In flatpak for solutions that do not require presenting a user interface to users. In xdg-desktop-portal if displaying a user interface is needed.

    2. Michael Catanzaro Avatar
      Michael Catanzaro

      I agree that social engineering and phishing are more important concerns than memory safety and sandboxing. I don’t think that’s a good reason to stop worrying about these threats, though.

      But a single supply chain incident could compromise all of our users all at once. I’m not worried about Rust itself, but I’m very worried about Cargo. It only takes one malicious leftpad dependency to be a disaster, and our Rust apps have 200-300 dependencies each.

      1. Nate Graham Avatar

        I’m not saying don’t worry about memory safety and sandboxing; I’m saying:

        a) Worry about them as a secondary concern compared to the acknowledged bigger dangers faced by actual users in today’s world.

        b) Don’t throw the baby out with the bathwater by creating a security system so strict that hundreds of holes need to be poked through it to avoid breaking apps, defeating the point.

        It’s not feasible to sandbox the world to mitigate the damage of from a supply chain attack we weren’t able to prevent. The solution is instead to prevent it. As they say, the price of freedom is eternal vigilance. Auditing our dependency stack is a part of that. If a Rust app needs 300 random modules from unknown sources delivered via Cargo to be useful, maybe we should rethink the whole “rewrite it in rust” thing.

        1. Michael Catanzaro Avatar
          Michael Catanzaro

          a) Sort of agree, except I hesitate to say “secondary concern” because I still worry quite a bit about memory safety… just not as much as I worry about phishing and trojans.

          b) Agree, we need portals to be _less_ strict so that more apps can actually use them.

          I agree that rewrite in Rust is currently worse from a security perspective than keeping our apps written in C, which is a surprising result. There are non-security considerations too, though: the people willing to do the work to modernize our apps don’t want to use C.

          1. Michaël Berteaux (Mikenux) Avatar
            Michaël Berteaux (Mikenux)

            What do you mean by “less strict”? It’s vague…

    3. Eri the Switch Avatar
      Eri the Switch

      I believe that’s because most of these are out-of-scope for what Flatpak and Flathub do and could do:

      a) The only part where a phishing attack possibly passes through Flatpak-adjacent code is user clicking on an URL, sending it via a desktop portal to a browser (no, intercepting syscalls is a bad idea with things like DNS encryption existing). This is traditionally already handled by browsers issuing a warning these days, which also has the benefit of warning the user even if the URL comes from some other source. It could also be implemented in Flatpak, but is arguably going to be somewhat less effective than existing solutions.

      b) Apps that encourage unhealthy behaviors are an interesting case, because you theoretically can try to ban them from Flathub in some way. Unfortunately, I don’t think it’ll do much good for two reasons: first, many of these apps have legitimate, non-addicting uses; companies 99% won’t agree to strip questionable parts if they decide to publish on Flathub officially (let’s be real, Flathub is no Google Play for these giants) and IMO it’s unreasonable to expect enthusiasts to strip these out in unofficial flatpaks. Second, even if either happens somehow, every other version of the app (including web version, mind you) will keep addicting parts in, and users already sucked in are now more likely to use these instead while everyone else must stick to Flathub version to avoid these parts (and I can’t use Flathub on my phone). Overall, it’s a noble goal, but I believe a Flatpak-specific policy would be ineffective in achieving or even advancing it: Flathub can put some pressure on FOSS organizations and developers, but these typically aren’t the ones posing this threat. Fight for proper legislation if you want to see this situation improve, I’d say.

      c) Running malicious unsandboxed binaries isn’t something Flatpak itself can help with by definition, at least directly, as it’s bypassed completely. Maybe some kind of support for user-created containers could be useful here, but it obviously would require additional steps from the user to set permissions up correctly and tightly (e.g. don’t just expose the entire home directory), and extra friction makes it probable that users will just run their binaries unsadboxed. This one still might be worth considering, though, especially if there will be an immutable distro willing to disallow launching user executables unsandboxed by default – just be careful to make sure we won’t end up with conventional wisdom being “just turn that sandboxing thing off right after installing” by rolling the feature out to the masses before it’s sufficiently mature.

      d) Sending money to a threatening attacker – all Flatpak needs to do here is help me be confident that these treats are hollow by making the system secure in other ways. I don’t think there’s much it could do anyways if these are threats to my health and not information security.

      Keep in mind how not every social problem has an engineering solution and how these that do aren’t necessarily best solved in Flatpak.

      1. Michaël Berteaux (Mikenux) Avatar
        Michaël Berteaux (Mikenux)

        I think unhealthy behaviors are partly covered by age classification. However, this is an assessment of app developers. This assessment should be verified by repositories.

        In addition, there is downloadable content and content from news and social networks that are not directly evaluable.

        Note that banning all content, especially if it is not evaluable, is not always a good idea from an educational point of view. For example, children can learn to gradually manage free-to-play games using parental controls. Same for advertisements.

        1. Eri the Switch Avatar
          Eri the Switch

          I very much agree – actually, I’ve considered mentioning ratings, but my comment already got quite long. I know that having an OARS rating is mandatory for publishing on Flathub, but I’m not aware of any further verification process for it (which doesn’t mean it doesn’t exist, though). Regarding non-evaluatable online interactions: these are already quite extensively covered by OARS tagging, and flatpak features parental controls integration to take advantage of them.