Debian and the sirens
Debian and the sirens
Debian 与塞壬的歌声
Thirty years ago I became a Debian developer. Twelve years ago I left the project. I left because it seemed that the Debian ship had become too slow to turn, too barnacled with a series of individually OK decisions that each added a little bit of friction and a little less flexibility. That made Debian strongly what it is, but prevented it from fruitfully exploring the vast possibility space of what it could be.
三十年前,我成为了 Debian 的开发者。十二年前,我离开了这个项目。我离开的原因是,Debian 这艘大船似乎变得转向太慢,船底附着了太多的藤壶——这些藤壶是由一系列单独来看尚可、但每一项都增加了一点摩擦力并降低了一点灵活性的决策所累积而成的。这使得 Debian 变得非常“Debian”,但也阻碍了它去有效地探索其未来可能性的广阔空间。
Debian will probably resolve today to allow LLM use in Debian development. I’m writing before the vote results are in, but will only post this afterwards. (Update: as expected) It’s not my place any longer to try to steer the ship. But I’m still a passenger and I still have opinions, and I still pass by well-worn parts of the rigging that I put up decades ago, and remember what I was trying to accomplish back then.
Debian 今天可能会投票决定允许在开发中使用大语言模型(LLM)。我在投票结果出来之前写下这些文字,但只会在结果公布后发布。(更新:正如预期。)我已不再有资格去掌舵这艘船。但我仍然是一名乘客,我依然有自己的看法,我依然会经过几十年前我亲手搭建、如今已磨损的索具,并回想起那时我试图实现的目标。
When I think about LLMs in Debian development, I mostly think about debhelper and what it accomplished. The debian/rules files back when I joined the project were long and complex, full of weird boilerplate, and often you’d copy one and modify it to try to get something that could build a package without too much work. Debhelper first regularized the boilerplate, so packages had rules files that were a succession of dh_ commands, and then it scrapped almost all of the boilerplate, reducing the files to the minimum possible.
当我思考 LLM 在 Debian 开发中的应用时,我首先想到的是 debhelper 以及它所取得的成就。在我加入项目时,debian/rules 文件又长又复杂,充满了奇怪的样板代码;你通常需要复制一个并进行修改,试图在不费太多力气的情况下构建出一个软件包。Debhelper 首先规范了这些样板代码,使得软件包的 rules 文件变成了一系列 dh_ 命令的组合,随后它又废弃了几乎所有的样板代码,将文件精简到了极致。
What was left was 3 lines of unnecessary boilerplate, there only to satisfy a legalistic reading of a policy document. Changing that to eliminate the boilerplate was already impossible, even though the actual benefit would have been large over the many thousands of packages in the distribution. What LLMs in Debian development will do, I fear, is eliminate any incentive to scrap boilerplate or reform policies that require a lot of other senseless human effort.
剩下的只有 3 行不必要的样板代码,它们的存在仅仅是为了满足对政策文档的教条式解读。即便在整个发行版数以千计的软件包中,消除这些样板代码能带来巨大的实际收益,但要改变这一点已是不可能的任务。我担心的是,LLM 在 Debian 开发中的应用将消除任何废弃样板代码或改革那些需要大量无意义人工劳动的政策的动力。
If I had had access to LLMs 30 years ago, I might have just had them generate the rules files, replete with complexity. So they will make Debian even more firmly what it is, and ever less likely to explore what it could become. Unfortunately, one of the things that Debian is, is almost unable to manage packaging modern dependency trees. While more recent distributions like Guix can recursively import dependencies from a dozen programming languages’ package repositories, with a result that is generally acceptable to add to the distribution, Debian’s policies don’t make that very possible for a program to accomplish.
如果我 30 年前就能使用 LLM,我可能只会让它们生成那些充满复杂性的 rules 文件。因此,它们只会让 Debian 更加固守现状,而更不可能去探索它未来可能成为的样子。不幸的是,Debian 的现状之一就是几乎无法管理现代的依赖树。虽然像 Guix 这样较新的发行版可以从十几种编程语言的包仓库中递归导入依赖,并得到一个通常可以被发行版接受的结果,但 Debian 的政策使得程序很难做到这一点。
Perhaps some will use LLMs to do that. If they succeed, Debian will become dependent on proprietary software for development, while still needing people in the loop, doing even less appealing scut-work. I could speak of other harms, but that alone is enough that I’m sure that, if I had not left the project twelve years ago, I would be leaving it soon.
也许有人会利用 LLM 来实现这一点。如果他们成功了,Debian 在开发上将变得依赖于专有软件,同时仍然需要人类参与其中,去处理那些更枯燥乏味的杂活。我还可以谈谈其他危害,但仅此一点就足以让我确信:如果我十二年前没有离开这个项目,我现在也会选择离开。
As a passenger, I imagine I’ll spend time aboard still from time to time, but it’s certainly time to hop off in different places and look around and relish the different ways. I lost a parent yesterday, and I’m trying hard not to think of the results today as having lost a child, though I spent 18 years helping Debian grow up. That would be too unbearably painful.
作为一名乘客,我想我偶尔还是会待在这艘船上,但现在确实是时候在不同的地方下船,四处看看,去享受不同的风景了。昨天我失去了一位亲人,我正努力不去想今天的结果就像失去了一个孩子,尽管我花了 18 年时间帮助 Debian 成长。那会是难以承受的痛苦。
I respect that Debian is navigating a choice that may have no right answer. Whichever particular compromise is arrived at today, it will still be up to individuals to make choices about what they do and accept. Debian has always been more than the sum of its policies, not just a ship, but a crew. I will always love you.
我尊重 Debian 正在做出的选择,这可能是一个没有标准答案的抉择。无论今天达成什么样的妥协,最终仍取决于个人去选择他们要做什么以及接受什么。Debian 一直以来都不仅仅是其政策的总和,它不仅是一艘船,更是一群船员。我永远爱你们。