首页文章详情

DeepSeek Harness 之后,重读最早定义开源的一群人

真格基金2026-08-25 11:25
创新来自共同的意志和努力。

8 月 19 日,OpenAI 全面开源 Codex Harness。一周前,DeepSeek Harness 也以极快速度冲过 10 万 GitHub Stars。

走向开源,它们主动把自己放进了一个更大的「市集」。

Eric S. Raymond 是开源运动最早的布道者之一。1997 年,他就在《大教堂与市集》一文中提出了软件开发的两种模式:大教堂由少数人闭门建造、反复打磨,再对外发布;市集则允许所有人参与,在不断发布、反馈和修正中共同演化。

Kimi K2 开源后,硅谷传奇投资人 Bill Gurley 也曾把中国开源生态比作一个共享最佳实践的农贸市场。

Raymond 试图借此解释,为什么看起来嘈杂甚至混乱的 Linux 社区没有散架,反而越来越强,靠开源改变了世界?他发现,创新不一定要由一个固有组织设计出来,也可以从大量参与者的局部贡献中涌现。

近三十年后,AI 把市集的边界再次扩大。2025 年,GitHub 新增超过 1.21 亿个 Repo,是历史上创建量最高的一年。其中,AI 相关 Repo 超过 430 万个。

过去,市集里的参与者是人。今天,越来越多 Agent 也开始进入其中。

OpenAI 曾用 Codex 做过一个实验:五个月,三位工程师与 Codex,完成了约 100 万行代码、1500 个 PR,没有一行代码由人类手写。

这也让《大教堂与市集》里的很多体悟重新变得重要。其中最出名的是 Linus 定律:只要眼睛足够多,所有的 bug 都一览无余。发布和测试越频繁,参与的人越多,问题就越容易被发现。开源社区可以围绕一个问题调动比闭源世界多几个量级的技术人力。

我们正在迈入一个更大的市集。

01

大教堂与市集

Linux 是颠覆性的。

1991 年,那时谁能想到,一个世界级操作系统竟然会像变魔术一样,从全球数千名开发者的业余 hacking 中凝聚出来?

他们分散在世界各地,彼此只靠互联网这几根细线相连。

至少我没有想到。

我们平时所说的「Linux 系统」,最早只是芬兰大学生 Linus Torvalds 做的一个免费内核。伴随着互联网的发展,它成长为一个由全球开发者共同参与的开源社区。今天你刷的视频、使用的 AI、访问的网站,背后很大概率都运行在 Linux 上。

此前,我已经参与 Unix 开发十年。我是最早一批 GNU 贡献者之一,开发过一些至今仍被广泛使用的程序。

我以为自己知道开源软件该怎么做,但 Linux 颠覆了许多我以为自己懂的东西。

多年来,我一直秉承 Unix 的信条:用工具解决问题,快速推出 demo,让程序在持续迭代中演化。但我也相信,复杂度一旦超过某个临界点,就必须采用更集中的规划。

我相信最重要的系统必须像建造大教堂一样完成:少数遗世独立的圣人巨匠闭门雕琢、反复打磨;时机不到,绝不发布新版本。

所以这位大学生的开发方式让我很是意外。

Linux 没有安静、肃穆的大教堂工程,反倒更像一个嘈杂的大集,里面挤满了目标不同、方法各异的人。谁都可以提交东西。

可就是从这样一个市集里,一个连贯、稳定的系统像经历了一连串奇迹般冒了出来。

随着我逐渐摸清 Linux 世界的运作方式,我想做的不只是参与一个个项目,也是理解一个更大的问题:为什么 Linux 世界没有在混乱中散架,反而以大教堂建造者几乎无法想象的速度,一路变得更强?

到 1996 年,我开始理解了。

我有了一个测试理论的完美机会。一个开源项目送到了我手里,我可以有意识地尝试用市集风格来运营它。我这样做了,结果非常成功。

以下就是这个项目的故事。

02

用户的重要性

拥有用户是一件很好的事。

这不只是因为他们证明你正在满足一种需求,证明你做对了某件事。只要经营得当,他们还可以成为共同开发者。

Unix 传统有一个优势,而 Linux 把这个优势推到了令人愉快的极致:很多用户本身就是黑客。

代码是开放的。只要稍加鼓励,用户就会帮你诊断问题、提出修复建议,以远快于你单打独斗的速度改进代码。

在 Linus Torvalds 让我们看到另一种可能前,开源世界里几乎所有人都严重低估了,当用户规模不断扩大、系统复杂度持续上升时,这种方式还能发挥多大的作用。

我甚至认为,Linus 最聪明、影响最深远的不是 Linux 内核本身,而是他发明的 Linux 开发模式。

有一次,我当面跟他说起这个观点。他笑了笑,又重复了一句自己经常说的话:「我是个很懒的人,喜欢给别人真正做的事情领功。」

像狐狸一样懒。

回头看,Linux 的方法及其成功,可以在 GNU Emacs Lisp 库和 Lisp 代码归档的发展中找到先例。

事实上,在 fetchmail 之前,我个人最成功的一次经历是 Emacs 的 VC。那是一次很像 Linux 的电子邮件协作,一共四个人参与,有三位我至今未曾谋面。

VC 是 Emacs 内部面向 SCCS、RCS,后来也面向 CVS 的前端,提供一键式的版本控制操作。它从别人写的一个很小、很粗糙的 sccs.el 模式演化而来。VC 的开发之所以成功,正是因为不同于 Emacs,Emacs Lisp 代码可以非常快地经历一轮又一轮发布、测试和改进。

我们的故事不是个例。

一些软件同样采用了这种双层架构:核心使用大教堂模式,工具箱则采用市集模式。MATLAB 就是其一。

使用 MATLAB 和其它类似产品的人往往都会发现,真正有一个庞大而多样的用户群可以参与、推敲的地方,才是动力、热情和创新所在。

03

尽早发布,频繁发布

尽早发布、频繁发布,是 Linux 开发中的关键一步。

过去,包括我在内的大多数开发者都觉得,项目一旦稍微复杂一点,这样做就不靠谱。早期版本通常问题很多,而用户的耐心有限,不能一上来就被消耗光。

这个观点也促使人们普遍采取大教堂式的开发。如果首要目标是尽量让用户少遇到缺陷,你就应该半年甚至更久才发布一个版本,在两次发布之间像狗一样拼命调试。Emacs 的 C 核心就是这样开发的。

但一年以后,随着 Linux 引起广泛注意,一种截然不同的范式正在诞生。

Linus 的开放式开发政策正好与建造大教堂相反。Linux 的互联网代码归档迅速扩张,多个发行版陆续出现。而这一切,都由核心系统前所未有的发布频率驱动。

Linus 把用户当成共同开发者,尽早发布,频繁发布,并认真听取用户意见。

这不算 Linus 的创新,Unix 世界很久以来就有这种传统。他的创新之处是把这个办法升级到了与他开发的系统的复杂性相匹配的规模和强度。

早在 1991 年,我们就听说过他一天发布不止一个新的版本。因为他比任何人都更努力地培养共同开发者,也更充分地利用互联网促进协作。

这个办法奏效了。

但它为什么会生效?这是我也能效仿的,还是只有 Linus Torvalds 这样的天才才能做到?

Linus 当然是个骨灰级黑客。我们有几个人能从头建造一个工业级的操作系统内核?但 Linux 并没有带来什么巨大的概念性突破。Linus 至少还不是 Richard Stallman 或 James Gosling 那种设计创新的天才。

在我看来,Linus 是工程和执行的天才。他有着避开死胡同的第六感,也有找到从 A 点到 B 点最快路径的真本事。

整个 Linux 都透露着这种特质。

他认为,如果 beta 测试者和共同开发者的群体足够大,几乎每个问题都会很快显形,也总会有人能够轻而易举地把它解决。

只要眼睛足够多,所有 bug 都一览无余。

我把它称为「Linus 定律」。

我最早的理解是,每个问题都会有某个人把它搞明白。但 Linus 不太同意。他说,理解和解决问题的人通常不是第一个发现问题的人,「发现问题才是更困难的那一步。」

当上千个开发者热心地琢磨每一个新版本时,一切就会变简单。

社会学家很多年前就发现,大量参与者的平均贡献或判断往往能产生优于单一个体的结果。这被称作「德尔菲法」。

Linus 所展示的是,即使到了操作系统这样的复杂程度,「德尔菲法」依然能够帮助我们驾驭。

用户越多,发现的问题就越多,因为检验的角度也越多。当用户同时也是开发者时,这个效应还会被进一步放大。这种多样性有助于减少重复劳动。

某个人的工具箱恰好适合解决这个问题。对他来说,这个问题就是简单的。

Linus 还给自己留了一招。如果可能存在严重缺陷,Linux 内核的版本编号会让用户自己选择:使用老一点的「稳定」版本,或者承担出现缺陷的风险,去使用最前沿版本里的最新功能。

让用户拥有选择,让两个版本都变得更迷人。

04

用多双眼睛驯服复杂性

整体来看,市集能加快调试。但要理解它为什么有效,还需观察开发者和测试者的日常协作。

不关心源代码的用户倾向于只报告表面症状。他们把运行环境视为理所当然,因此常常遗漏关键的背景信息,也很少提供一套能够稳定复现缺陷的步骤。

测试者从外往里看,而开发者从里往外看。在封闭的开发模式中,他们都被困在各自的角色里,各说各话,很容易对彼此感到恼火。

开源则打破了这种束缚。

双方可以在源代码的基础上建一个共享的模型,交流也因此容易很多。

如果能从源码层面对出错条件作出描述,不必完整,大多数缺陷都能被抓住。当你的 beta 测试者中有人能够指出:「第 nnn 行有一个边界问题」,或者只是说:「在 X、Y、Z 条件下,这个变量会溢出」,扫一眼相关代码就足以锁定问题。

即使合作者很多,核心开发者依然能够省下很多时间。

开源另一个节约时间的地方是通讯结构。项目有一个很小的核心,独立开发者很常见,1-3 人最典型;外围则是数量可能达到数百人的 beta 测试者和贡献者。

传统软件开发普遍面临一个问题:「在一个已经延期的项目里继续增加程序员,只会让它延期得更久。」随着开发人员变多,项目的复杂度和沟通成本会以平方级增长,而真正完成的工作量只会线性增加。

这背后默认,项目的通讯结构是一张完整的网,每个人都必须和其他所有人沟通。

但在开源项目里,开发者们实际上是在处理彼此分离、并行推进的子任务,他们之间很少需要直接沟通。只有小小的核心团队才承担着这些沟通成本。

05

市集模式的必要前提

市集要想成功需要哪些前提?

首先,不能指望项目从一片空白开始,单单依赖市集的诞生。社区可以参与测试、调试和改进,但很难替发起者从无到有创造项目。

Linus 没有这么做,我也没有。一个刚刚形成的开发者社区,首先需要拿到某个可以运行、测试,也值得动手探索的东西。

建立社区时,需要展示的是一个「可信的承诺」。

程序不必运行得特别好,可以粗糙,但它必须守住两个底线:第一,能够运行;第二,能够让潜在贡献者相信,只要继续投入,它在可预见的未来会产生价值。

Linux 和 fetchmail 开发的时候都有很吸引人的基本设计。许多思考市集模式的人因此认为,项目负责人必须有高度的设计直觉、足够聪明。

但 Linus 的设计来自 Unix,我最初的设计也来自更早的 popclient。一个市集的项目负责人一定要有杰出的设计天赋,还是可以通过借力他人胜任?

我认为能否想出原创设计不是最关键的。重要的是,你要有慧眼,能够识别出别人优秀的设计想法。

我可能低估了原创设计在市集项目中的重要性,是因为我自己不缺这种能力,所以把它当成了理所当然。

但在软件设计里,太聪明、太有创造力,也可能形成一种坏习惯。当你本来应该让事情保持稳固和简单时,却忍不住把它变得精巧而复杂。

假设 Linus Torvalds 在开发 Linux 的过程中,一直试图做出操作系统设计上的根本性创新,最后还会像现在这样稳定吗?

开源社区内部的声望机制也会给人一种微妙的压力。如果你没有几把刷子,就不要发起一个自己没有能力坚持做下去的项目。

对市集项目来说,还有一种通常不被视为软件开发能力的技能,却可能比设计更重要:领导者必须有良好的人际交往能力。

这不难理解。要建立一个开发者社区,你得先把人吸引过来,让他们对你在做的事情产生兴趣;同时,还要让他们觉得,自己投入的时间和工作是值得的。

技术上的吸引力当然有用,但光靠技术远远不够。你这个人本身是什么样也很重要。

Linus 让人觉得亲和、讨喜,也让人愿意帮他。我则性格外向,好与人打交道,多少有一点即兴喜剧演员那种带动气氛的直觉。二者不是偶然。

想让市集真正运转起来,你要有让别人愿意靠近、合作的能力。

06

好的开源项目需要共同意志

最好的程序通常来自作者自己生活中遇到的问题。而它之所以流传,是因为许多人也面临着同样的困境。

但当一个项目已经拥有庞大而活跃的用户和合作者社区之后,软件会如何继续演化?

编程在很大程度上是一种个人活动。但出色的软件,往往来自对整个社区注意力和智力的调动。

一个只依靠自己脑力、封闭开发的人,最终会落后于另一个懂得创造开放的开发者。

但有几个因素阻止了传统的 Unix 世界把这个方法发挥到极致。一个是各种许可、商业机密和商业利益带来的法律限制;另一个是当时的互联网还不够好。

在低成本互联网出现之前,确实也存在一些地域性的技术共同体,比如贝尔实验室、MIT 的人工智能与计算机实验室、加州大学伯克利分校。它们后来成为许多传奇性创新的诞生地,影响至今。

在这种环境里,你很容易吸引到有水平的合作者。

Linux 则是第一个有意识且成功地把全世界当作人才池来使用的项目。我不认为 Linux 的孕育期恰好与互联网兴起重叠只是巧合。

Linux 就像一个自由市场。

成员们各自追求自己的收益,却在互动中形成一种自我修正的自发秩序。它比任何中央计划都更复杂,也更有效。

这种协作不建立在权力关系之上。它需要的是许多人的共同意志和努力。

创作者们想要最大化的收益不是钱,而是一些更难量化的东西,比如个人满足感和在其他黑客中的声望。

众所周知,程序员通常讨厌写文档。但 Linux 的黑客们为什么能产出这么多文档?

一个可能的答案是,Linus 创造出的声望,比商业公司依靠预算和管理驱动的生产,更能激发高质量、面向他人的贡献。

很多人本能地以为,一群由自我驱动的个人英雄主义者组成的文化,必然会支离破碎、各自为政、低效浪费、封闭神秘,甚至彼此敌视。

但 Linux 的覆盖面、质量和深度都令人惊叹。

如果项目协调者拥有一种至少像互联网一样高效的沟通媒介,且懂得如何在不依靠强制的情况下领导,多人的头脑几乎必然胜过单个人的头脑。

开源社区可以围绕一个问题,投入比闭源世界多几个数量级的技术人力。

这不是说个人才华不再重要。恰恰相反,前沿的探索仍会从个人的远见开始;只是最优秀的人会进一步通过建设志愿者社区,把大家的能力放大。

我认为开源的未来会越来越属于那些懂得玩好「Linus 游戏」的人,也就是那些愿意离开大教堂、拥抱市集的人。

本文来自微信公众号“真格基金”,翻译:Yanyang,编辑:Cindy,36氪经授权发布。