为 Linux 制作应用

“别再制作 Linux 发行版了,去做应用吧”这样的呼声重新点燃了 Linux 生态中关于碎片化、可用性和优先级的长期争论。评论者认为,尽管发行版和窗口管理器多得数不清,面向终端用户的应用——尤其是精致、以 UX 为中心的应用——仍然稀缺,并受到不一致的打包、ABI 不稳定以及令人困惑的工具包选择(Qt、GTK、Electron、Flutter 等)的阻碍。许多人认为跨平台或 Web 技术,以及 Flatpak 之类的新打包格式,是务实的前进方向,但在开发者便利、用户体验、开放性,以及从 Linux 软件中获得可持续收入之间如何平衡,仍然没有共识。

发行版碎片化 vs. 应用程序

  • 许多人认为 Linux 发行版太多,导致“选择瘫痪”,并把本可投入应用和 UX 的精力分散掉。
  • 也有人认为碎片化被夸大了:大多数桌面用户运行的是 Debian/Ubuntu/Mint 或类似发行版;你可以“随便选一个”然后正常使用。
  • 一些人把对“One True Linux”的呼声看作出于商业动机的中心化;多样性则被视为创造力和安全性(避免单一文化)的体现。
  • 反方观点:多样性让应用开发者更难办,他们必须面对不同的发行版、桌面环境以及底层组件(Wayland/X11、systemd 等)。

打包、ABI 与“面向所有发行版”

  • 开发者争论“一次构建,处处运行”有多现实。
  • 传统做法:发布源代码并使用发行版包管理器,或者依赖包维护者;闭源开发者通常只在一个发行版上测试,然后接受用户自行调整。
  • glibc / libstdc++ 的 ABI 问题以及带版本号的 .so 符号阻碍了二进制分发;Steam 上的游戏开发者对此体会尤深。
  • AppImage、Flatpak、Snap、Steam Runtime 和容器被视为部分解决方案,但它们增加了复杂度,也无法完全隐藏 ABI 的变化。
  • 库命名方案(-dev、版本号)让新手困惑,但其背后是 ABI 版本化以及头文件与运行时的分离。

工具包与跨平台框架

  • GNOME/GTK 和 KDE/Qt 是主要的原生技术栈,但它们因 API 变化、UX 不均衡以及跨平台覆盖有限而受到批评。
  • 与 macOS/Windows 的比较:这些平台提供更丰富、更稳定的核心框架(图形、音频、机器学习等),让应用开发更顺畅。
  • Electron 常被批评为臃肿,但也因让 Linux 支持变得容易、并促成许多流行应用而受到称赞。
  • 提到的替代方案包括:Flutter、Kirigami/QtQuick、Java/JavaFX、NW.js、Wails、WebUI;大家对性能、成熟度和 UX 质量的看法不一。
  • 有人认为 Linux GUI 开发缺乏吸引力,因为你必须在多个都不完美的技术栈之间作选择。

UX、CLI 文化与终端用户导向

  • 一条反复出现的观点是:Linux 和 FOSS 往往在 UX 上投入不足;许多用户接受了相比 macOS/Windows 更差的精致度。
  • 关于 CLI 与 GUI 的争论:有人声称对熟练用户来说 CLI 是“UX 的巅峰”;也有人认为 CLI 在可发现性上是噩梦,并且对非专业用户不友好。
  • 多位评论者强调,普通用户需要的是直观、视觉一致的应用,而不是更多的平铺式窗口管理器或小众工具。

变现与开源经济

  • 多篇帖子描述了靠 FOSS 应用谋生有多困难(广告、捐赠、付费功能通常效果不佳)。
  • 一些开发者考虑或主张转为闭源(或“源码可得但二进制付费”)以资助更精致、以 UX 为中心的 Linux 应用。
  • 也有人强调,Linux 用户中有相当一部分人因为隐私、长期可用性和避免锁定等原因,强烈偏好 FOSS;专有应用可能会失去这部分受众。
  • 讨论了多种商业模式:支持合同、捐赠/赞助、开放核心、付费托管、源码可得但二进制付费。

协作 vs. “又一个应用/发行版”

  • 一派呼吁贡献给现有应用,而不是重新实现类似工具或再发起新发行版;集中精力可能带来少数极优秀的应用,而不是许多平庸作品。
  • 另一派认为开发者的精力和动机不是可互换的:人们会做自己感兴趣的项目,不喜欢项目政治,并且重视“解决自己痛点”的自主性。
  • 讨论串的结论是混合的:大家都希望有更多、更好的应用,但试图集中引导业余开发者劳动被认为不现实,也与自由软件精神相悖。