gentooman
Linux distributions cripple consumer desktop adoption by routinely breaking binary compatibility and forcing upstream developers to maintain fragmented, distribution-specific packages instead of universal binaries.
AI-assisted summary of Linus Torvalds on why desktop Linux sucks — original source. Check the original for full context.
Source published:
Key ideas
- Linus Torvalds identifies fragmented binary packaging as the primary structural failure crippling desktop Linux, in stark contrast to straightforward app distribution on Windows and OS X. (0:00)
- The Linux kernel strictly forbids breaking user space, whereas distributions and core userland libraries like glibc regularly break backwards compatibility and expect software to be recompiled. (2:52)
- Commercial market pressure from Valve is forcing desktop Linux distributions to accommodate bundled, statically linked binaries rather than forcing separate per-distro builds. (5:11)
- Distro repository pipelines fail niche software like Subsurface by duplicating packaging work for tiny userbases while making it impossible to ship nightly binary bug fixes to non-technical users. (6:56)
Detailed notes
## Background Published on YouTube by gentooman on March 27, 2021, this video features a segment from Linus Torvalds' appearance at DebConf 14. According to the page description, the clip highlights Torvalds outlining major pain points of desktop Linux, focusing on application distribution hurdles, distribution packaging overhead, and broken backwards compatibility.
## TL;DR Linus Torvalds argues that the primary failure preventing Linux from succeeding on the desktop is fragmented, distro-specific application distribution rather than package formats or lack of marketing. Drawing from his personal experience maintaining the Subsurface dive log software, he contrasts the seamless binary distribution of Windows and macOS with the fragile, multi-target build requirements of Linux. He sharply contrasts the Linux kernel's sacred rule against breaking user space with the habit of distro libraries like glibc frequently breaking downstream compatibility. While acknowledging that distro repositories handle core operating system plumbing well, Torvalds insists that desktop Linux must embrace standardized, self-contained binaries so independent and commercial developers can reach non-technical users.
## Atmosphere & style The session is trademark Linus Torvalds: passionately candid, profane, intellectually rigorous, and disarmingly funny. Speaking directly to an audience of Debian developers whose very workflow he is critiquing, Torvalds balances fierce, unyielding convictions—declaring religious devotion to user space stability with threats to 'crush' offenders—with lighthearted self-awareness when realizing his own package maintainer might be in the room. The atmosphere feels like an unfiltered, pragmatic reality check, puncturing open-source dogma with the gritty practicalities of supporting everyday software users.
## Bulletin - [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Linus Torvalds identifies fragmented binary packaging as the primary structural failure crippling desktop Linux, in stark contrast to straightforward app distribution on Windows and OS X. - [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) The Linux kernel strictly forbids breaking user space, whereas distributions and core userland libraries like glibc regularly break backwards compatibility and expect software to be recompiled. - [05:11](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=311s) Commercial market pressure from Valve is forcing desktop Linux distributions to accommodate bundled, statically linked binaries rather than forcing separate per-distro builds. - [06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) Distro repository pipelines fail niche software like Subsurface by duplicating packaging work for tiny userbases while making it impossible to ship nightly binary bug fixes to non-technical users.
## Key takeaways - [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Application distribution, rather than package manager rivalries (dpkg vs. RPM) or hardware pre-installs, is the core structural failure of the Linux desktop ecosystem. - [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Upstream developers cannot build a universal Linux binary; they must compile fragile, separate packages for Fedora 19, Fedora 20, RHEL, and Debian unstable. - [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Debian stable's deeply frozen core libraries make modern desktop applications nearly impossible to compile or execute. - [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Strict distribution mandates requiring dynamically linked shared libraries break down when applications rely on fast-moving, experimental libraries with volatile ABIs. - [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) The Linux kernel operates under a strict, non-negotiable law: never break user space, prioritizing application compatibility over code cleanups or API refactoring. - [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) Core userland libraries like glibc regularly break binary compatibility under the justification of standards compliance or fixing bugs. - [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) Torvalds maintains that if users rely on an unintended behavior or bug, it becomes a feature that maintainers must not break. - [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) The assumption throughout the distribution ecosystem that users and packagers can simply recompile all software from source undermines Linux as a consumer platform. - [05:11](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=311s) Commercial entities like Valve will not create separate builds for every distribution, forcing distributions to adapt to unified commercial binaries to retain Steam compatibility. - [05:11](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=311s) To bypass distribution fragmentation, commercial software developers are forced to statically link and bundle all necessary dependencies into massive executables. - [05:11](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=311s) The distribution repository model functions well for base operating system components, but collapses when applied to niche or rapidly developing desktop software. - [06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) Subsurface has approximately 1,000 total users, with only a few hundred on Linux and roughly 10 each on Fedora and Debian, making dedicated per-distro packaging inefficient. - [06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) Subsurface maintainers can instantly generate nightly Windows installers to debug hardware communication issues, whereas Linux distributions offer no mechanism for delivering direct nightly test binaries. - [06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) Directing everyday consumers to clone a Git repository, resolve dependency conflicts, and compile from source is completely unusable for mainstream adoption. - [06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) Valve shifting SteamOS to a Debian base highlights the urgent need for distributions to support out-of-tree and third-party binary distribution models.
## Detailed walkthrough ### [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Application Packaging and the Fragmentation Nightmare
Linus Torvalds begins by setting aside the traditional desktop hurdles—such as OEM pre-installs, marketing, and the challenge of building machines that “just work” out of the box for non-technical users—to focus on what he considers a structural failure across the entire Linux ecosystem: application packaging. He clarifies that his critique has nothing to do with low-level package format rivalries, such as whether dpkg is superior to RPM. Instead, he speaks from the perspective of an upstream application developer trying to distribute software to end users.
Drawing from his direct experience with Subsurface, his open-source dive log application, Linus explains that distributing software across Linux distributions is an agonizing ordeal compared to other platforms. The Subsurface team easily produces working binaries for Windows and OS X, but distributing Linux binaries proves almost prohibitive: “Making binaries for Linux desktop applications is a major fucking pain in the ass.” Upstream developers cannot simply target “Linux”; they must build separate, fragile binaries targeting Fedora 19, Fedora 20, legacy releases like RHEL 5, or Debian unstable. Debian stable is effectively out of reach because its system libraries are so frozen that modern desktop software cannot compile or run against them.
Compounding this problem are rigid packaging policies, such as Debian’s strict insistence on shared dynamically linked libraries. Linus recounts a recent local flame war over this exact requirement. While shared libraries make sense for mature infrastructure, they become untenable when an application relies on cutting-edge, experimental libraries maintained by a tiny handful of people where the ABI changes unpredictably every few days. The inability to distribute a self-contained, statically compiled binary that runs universally across all distributions cripples third-party software deployment.
```mermaid flowchart TD accTitle: Fragmentation of Linux Desktop Application Distribution accDescr: Diagram contrasting unified binary distribution on Windows and macOS with distribution fragmentation on Linux.
subgraph Proprietary["Proprietary Desktops"] A["Single Application Binary"] --> Win["Windows Build"] A --> Mac["macOS Build"] end
subgraph LinuxEcosystem["Linux Fragmentation"] B["Application Source"] --> DistroTargets["Distro-Specific Builds"] DistroTargets --> F19["Fedora 19 / 20"] DistroTargets --> DebUnstable["Debian Unstable"] DistroTargets --> RHEL["RHEL / CentOS"] DistroTargets -.->|"Fails (ancient libs)"| DebStable["Debian Stable"] end ```
[02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) Breaking User Space: The Cultural Divide Between the Kernel and Distros
Linus contrasts the chaotic application environment with the absolute operational philosophy of the Linux kernel. Within the kernel, there is only one immutable law that overrides every other consideration: “We don't break user space.” While other engineering ideals—including code cleanups and even security practices—serve as flexible guidelines, breaking compatibility for existing user programs is treated as a cardinal sin. Linus emphasizes the religious intensity of this rule: “People break user space I get really really angry I mean I this is something that is religious for me you do not break user space.” When kernel contributors attempt to alter a user-facing API under the pretext of cleaning up old interfaces, Linus is uncompromising: “No you're not changing that API because I will crush you.” An API can only change if the modification remains completely invisible to the software running on top of it.
In stark contrast, Linux distributions and core userland library maintainers frequently break binary compatibility without hesitation. Linus directs specific criticism at projects like glibc, where library maintainers update core interfaces and casually break downstream user software under the justification of conforming to written standards or fixing obscure bugs. He dismisses the argument that user software was relying on unintended behavior: “If it's a bug that people rely on it's not a bug it's a feature.” The widespread expectation in the distribution ecosystem that users and packagers can simply recompile everything from source whenever an underlying dependency shifts fundamentally undermines Linux as a consumer desktop platform.
- The kernel operates on an absolute rule against breaking existing user space ABIs and APIs. - Core user-space libraries, including glibc, regularly alter behaviors to fix bugs or match standards, regardless of compatibility fallout. - Upstream developers cannot afford to maintain dozens of distinct binaries tailored to subtle library version shifts.
[05:11](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=311s) The Role of Valve and the "In-Tree" Packaging Model
Looking for potential catalysts to break this cycle, Linus points to Valve’s commercial push into Linux gaming. While admitting he is not a gamer himself, he suggests that Valve’s influence might force a long-overdue standardization upon desktop distributions. A commercial giant like Valve will never agree to generate fifteen distinct distribution-specific binaries for every game release. Because every major desktop distribution desperately wants Steam and its library to function, distributions will be forced to accommodate Valve’s binaries. Linus notes with a touch of irony that the immediate workaround is for commercial entities to bundle all dependencies and statically link their binaries into massive executables—an unaesthetic approach, but the only practical reality given current distro fragmentation.
An audience member intervenes to ask whether the problem could be solved by treating desktop applications like in-tree kernel drivers: rather than distributing standalone binaries out-of-tree, could upstream projects simply merge their code directly into the distribution repositories? Linus acknowledges that for the core operating system, this model already works well. Most attendees at DebConf spend their days actively maintaining packages, and having distributions integrate and maintain the foundational 90 percent of open-source software is appropriate and necessary. However, Linus argues that this upstream-to-distro pipeline breaks down completely when applied to niche or rapidly evolving software.
```mermaid flowchart LR accTitle: Application Maintenance Paradigms accDescr: Contrasting core distribution-maintained packages with niche specialized applications.
subgraph CoreApps["Base Distribution Model (In-Tree)"] CoreSrc["Core / System Software"] --> DistroMaintainers["Distro Packagers"] DistroMaintainers --> DistroRepo["Official Repositories (Thousands of Packages)"] end
subgraph NicheApps["Niche Applications (Subsurface Model)"] AppSrc["Fast-Iterating App Source"] -->|Stalled by release cycles| DistroWait["Packager Delay"] AppSrc -->|Nightly / Direct Binaries| DirectUser["Target User (Hardware Fixes)"] end ```
[06:56](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=416s) The Subsurface Dilemma: Nightly Builds and Non-Technical Users
To illustrate why repository-centric package management fails application developers, Linus dives deeper into Subsurface. Subsurface has roughly a thousand active users worldwide. Of those, only a few hundred run Linux, with perhaps ten users on Debian, ten on Fedora, a few on Arch, and the majority concentrated on Ubuntu—an expected breakdown given that scuba divers are typically regular consumers rather than system administrators. Linus questions the logic of having independent package maintainers across multiple distributions duplicate effort for ten users per distro: “So if you have that kind of situation does it make sense to have people inside every distribution package that application for that distribution and do so in a really timely manner when we're making major changes that is really important to users because without those changes their dive computer does not work?”
Linus realizes mid-sentence that the Debian package maintainer for Subsurface might actually be sitting in the audience, quickly expressing gratitude while maintaining his broader critique. He contrasts the Linux situation with Windows, where Subsurface co-maintainer Dirk Hohndel routinely spins up nightly installer builds. When a diver encounters a communication bug with a specific dive computer model, the maintainers can immediately hand them a pre-compiled Windows executable to verify the fix.
On Linux, that feedback loop is completely broken. The Debian package is perpetually out of date, and distributions offer no practical mechanism to distribute nightly test builds to end users. The standard Linux advice—instructing a diver stuck on a trip in Hawaii to clone the Git repository, resolve dependencies, and compile from source—is completely unusable for mainstream users. Linus concludes that while distributions should maintain the thousands of packages that constitute the system base, they must accommodate standalone, multi-distro binary distribution for fast-moving independent and commercial software, pointing out that even Debian now has to reckon with commercial software ecosystems as Valve migrates SteamOS to a Debian base.
- Subsurface user demographics: ~1,000 total users, a few hundred on Linux, and approximately 10 each on Fedora and Debian, with Ubuntu holding the largest desktop share. - Dirk Hohndel provides nightly Windows installers to quickly diagnose and patch dive computer communication errors. - Linux distributions offer no comparable mechanism for developers to deliver ad-hoc nightly binary fixes directly to non-technical users. - Commercial realities, exemplified by Valve switching SteamOS from an Ubuntu base to Debian, demand a stable mechanism to target distributions without version-by-version rebuilds.
## Notable quotes > [00:00](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=0s) Making binaries for Linux desktop applications is a major fucking pain in the ass. — Linus Torvalds
> [02:52](https://www.youtube.com/watch?v=Pzl1B7nB9Kc&t=172s) We don't break user space. — Linus Torvalds
## Mentioned Arch Linux, DebConf 14, Debian, Dirk Hohndel, Fedora, glibc, Linus Torvalds, macOS, Red Hat Enterprise Linux, Steam, SteamOS, Subsurface, Ubuntu, Valve, Windows
## Video description Linus highlights several pain points with regards to desktop Linux. From DebConf 14 https://www.youtube.com/watch?v=5PmHRSeA2c8
0:00 Application distribution is a huge PITA 2:52 Distros break things and ignore backwards compat. 5:53 Distros waste too much effort on package management 8:26 Linus roasts his own package maintainer 8:50 Windows has a better app distribution experience 9:29 Linux distros expect users to compile everything
[Source](https://www.youtube.com/watch?v=Pzl1B7nB9Kc)