开源项目难以协调。
Open source can't coordinate?

原始链接: https://matklad.github.io/2025/05/20/open-source-cant-coordinate.html

作者思考了Linux桌面环境与Windows和macOS完善的生态系统相比的碎片化问题,以及这种碎片化是如何在“永不破坏用户空间”的信条下存在的。缺乏统一的API阻碍了桌面应用程序的开发。他们将其与软件开发中语言服务器协议(LSP)的采用进行了比较,强调了微软一个略显缺陷的标准是如何彻底改变交互式静态分析的,尽管之前存在更好的替代方案。之所以会发生这种情况,是因为开源软件在协调方面举步维艰,而微软的战略投资推动了LSP的采用。作者认为,Linux的成功源于其独特的治理结构和对POSIX标准的遵守,从而在不同的操作系统上提供了一个通用的基本API。这预先解决了协调问题,从而实现了多种实现。然而,Linux桌面缺乏类似的统一力量,导致了持续的碎片化。

Hacker News 上一篇题为“开源无法协调”(Open source can't coordinate)的文章引发了热议,讨论的焦点在于开源生态系统中标准化和协调的挑战,特别是关于桌面版 Linux 的问题。 一位用户认为,惯性和用户群规模决定了市场主导地位,而非技术优越性,并用自行车和脚踏板连接作为例子。另一位用户指出,缺乏一个强大的实体来推动 Linux 成为消费平台,并认为 Valve 可能是潜在的竞争者。 多条评论强调了“Linux/Unix 文化”中固有的协调阻力,并以 systemd 为例,说明这是一个虽然非常需要的工具,但却因偏离了传统的“胶水和字符串”(glue-and-string)的操作系统构建方法而受到批评。人们渴望的是一个可定制的、碎片化的系统,而不是一个有凝聚力的平台,这被认为是标准化的一大障碍。Freedesktop.org 被提及作为一个现有的协调努力,但也面临着抵制和批评。一位用户对 FreeDesktop 采用二进制格式而非可脚本化、可组合的系统表示沮丧。
相关文章

原文

I was taking a shower this morning, and was pondering yesterday’s problem, where I suspect that I have an outdated version of hotspot Linux profiler, but I can’t just go and download a fresh release from GitHub, because hotspot is a KDE app, and I use NixOS. And NixOS isn’t a problem — it’s a solution.

Linux on desktop is a rickety tower of competing libraries, protocols and standards, which is always in an Escheresque sort of perpetual motion, taking off but simultaneously falling, and the best way to enjoy it is to take a photo, a frozen snapshot in time.

The underlying force there is the absence of one unified baseline set of APIs for writing desktop programs. There’s no single entity that can coordinate the API, in contrast to Windows and MacOS.

But then, how can Linux exist? How does that square with “never break the user space?” I’ll let you ponder the question, but let me first tell you a story from a domain where I consider myself an expert.

The past ten years saw a big shift in how we are writing software: baseline level of “interactive static analysis” became the norm, go to definition is universally available. The surprising fact here is that the shift occurred a decade too late!

The shift was caused by Microsoft releasing its Language Server Protocol specification. But there’s little value in the protocol itself. Its implementation is mediocre, it was strictly worse than the state of the art at that time, and its governance is abysmal. The only great thing about LSP is that it exists!

If you were anywhere near JetBrains a decade ago, it was blindingly obvious that the absence of broad availability of basic IDE features leaves a lot of the value on the table, and that the multi-process IPC architecture is the way to go (JetBrains did IPC for Rider). But it is also clear why JetBrains didn’t do LSP — why would they? While the right solution on the technical grounds, you aren’t going to get paid for being technically right. As sad as it is, some amount of deadweight loss is needed to capture some of the value you are producing, and you need to be able to capture value to invest in things! So the world had to wait for Microsoft to pick up the slack here, when they decided to gobble up the entire developer ecosystem as an investment.

There was a decade of opportunity for OSS to coordinate around an IDE protocol, but that didn’t happen, because OSS is bad at coordination.

But then, why and how does Linux exist? I think part of that is a rather unique governance structure, where there’s a centralized control over the API area and strong commitment to the public interfaces. But the bigger part is POSIX. The reason why we have Linux, and BSDs, and XNU is that they all provide the same baseline API, which was defined from the outside. The coordination problem was pre-solved, and what remained is just filling-in the implementation. But there was no one to coordinate Linux on desktop.

联系我们 contact @ memedata.com