题记与说明
- 主题:《教堂与集市》精读 :: 结合开源贡献课题提炼协作原则(主题研究)
- 精读日期:2026-11-05
- 方法:检索后精读 6 个来源(原文全文逐字抓取 + 2 篇学术/长文批评 + 2 篇 2026 年当代回顾 + 1 篇中文开源协同实践书评),交叉比对原文 19 条格言、批评者的反驳证据与近三十年实践检验,再面向"个人如何参与开源协作"提炼可操作原则
- 来源清单(均全文精读,标注获取方式):
- 原文全文:Eric S. Raymond, *The Cathedral and the Bazaar*, First Monday, vol.3 no.3(1998-03-02 刊出;1997-05 于 Linux Kongress 首次宣读,正文修订史记 5 月 21 日,Wikipedia 记为 5 月 27 日 Würzburg)— https://firstmonday.org/ojs/index.php/fm/article/download/578/499 (含全部 19 条格言、fetchmail 案例叙事、Linus's Law 论证、社会语境、Netscape 尾声)
- Wikipedia: *The Cathedral and the Bazaar* — https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar (成书信息:O'Reilly 1999,241 页;19 条清单;接受史与批评谱系)
- 批评文献全文:Nikolai Bezroukov, *A Second Look at the Cathedral and Bazaar*, First Monday, 4(12)(1999-12-06,DOI: 10.5210/fm.v4i12.708,被引 220+)— https://firstmonday.org/ojs/index.php/fm/article/download/708/618
- A.C. Jokela, *The Cathedral and the Bazaar, Nearly 30 Years Later*, tinycomputers.io(2026-03-09)— https://tinycomputers.io/posts/the-cathedral-and-the-bazaar-nearly-30-years-later.html
- Josh Bressers, *The Cathedral, the Megachurch, and the Bazaar*, Open Source Security(2026-01-13)— https://opensourcesecurity.io/2026/01-cathedral-megachurch-bazaar
- Tison(张涛), *《大教堂与集市》书评*, tisonkun.org(2021-12-14)— https://tisonkun.org/2021/12/14/the-cathedral-and-the-bazaar (经 WebFetch 抓取归纳要点,中文开源协同实践视角)
- (仅检索摘要、未逐字通读,特此标注:中文译本 crazyangelo.github.io/Cathedral-and-Bazaar、豆瓣书评若干、博客园读书笔记 https://www.cnblogs.com/xjnotxj/p/12726989.html 。本笔记核心引述全部出自上述 1–5 的英文原文与 6 的抓取摘要,未依赖未读材料。)
一、核心问题:这份工作在解决什么问题
1993 年前后,Raymond 面对一个当时无法解释的事实:一个由全球数千名兼职开发者组成、看起来混乱不堪的志愿社区,竟然拼出了世界级的操作系统。这直接违背他此前信奉的两条工程信条——"复杂度超过临界点的软件(操作系统、Emacs)必须像大教堂一样由少数天才封闭建造",以及 Brooks 定律("向延期项目加人只会更延期",沟通成本随人数平方增长):
"Linux is subversive. Who would have thought even five years ago that a world-class operating system could coalesce as if by magic out of part-time hacking by several thousand developers scattered all over the planet, connected only by the tenuous strands of the Internet?"
(Linux 是颠覆性的。谁能在五年前想到,一个世界级操作系统能像变魔术一样,从散布全球、仅靠脆弱互联网相连的几千名开发者的业余黑活中凝聚出来?)
— Raymond, 原文开篇
所以全文要回答的问题是三层的:
- 描述层:大教堂模式(闭门开发、按期发布)与集市模式(早发布、常发布、全员可见)到底差在哪?
- 解释层:集市模式为什么没有在混乱中解体,反而跑得比大教堂快?——答案落在两种模式对调试任务本质的对立假设上;
- 可复制层:这套做法是 Linus 独有的天赋,还是可被普通人复制的协作机制?(Raymond 用自己的 fetchmail 项目做了刻意实验。)
对本课题(开源贡献)而言,问题再落一层:一个今天的贡献者/维护者,能从这套 1997 年的协作机制里带走哪些仍然成立、哪些已被三十年实践修正的原则?
二、主要主张
2.1 两种模式及其对立假设
| 大教堂模式(GNU Emacs C 核心、商业软件) | 集市模式(Linux 内核) | |
|---|---|---|
| 代码可见性 | 每次发布时可见,发布间仅限专属小团体 | 开发全程在互联网上公开 |
| 对 bug 的假设 | bug 是"tricky, insidious, deep"的深层现象,需少数人长期审视 | bug 大体是浅层的,暴露给一千个热切的共同开发者后很快变浅 |
| 发布策略 | 半年一版,憋到完美 | 早发布、常发布(Linus 1991 年高峰期一天数版) |
| 用户角色 | 消费者/测试者 | 共同开发者(co-developers) |
Raymond 明确指出这是全文的核心分歧点:
"Here, I think, is the core difference underlying the cathedral-builder and bazaar styles."(教堂建造者与集市风格的根本分歧在此。)
— Raymond, §Release Early, Release Often
2.2 Linus 定律(全文最著名的命题)
"Given enough eyeballs, all bugs are shallow."(只要有足够多的眼睛,所有 bug 都将无处遁形。)
两个常被忽略的精确化:
- Linus 本人的修正:发现 bug 和理解 bug 往往不是同一个人——
"Somebody finds the problem", he says, "and somebody _else_ understands it. And I'll go on record as saying that finding it is the bigger challenge."
("有人发现问题,另一个人理解它。我敢说发现问题才是更大的挑战。")
— Linus Torvalds,转引自原文
- Jeff Dutky 的重述:"Debugging is parallelizable"(调试是可并行的)——调试者只需与协调者通信,彼此之间不需要显著协调,因此不落入 Brooks 的平方复杂度陷阱(原文致谢部分与正文均有)。
- Raymond 给出的学理类比是德尔菲效应(群体等专家平均判断优于随机抽一人)与自由市场/生态学:一群自利行动者在最大化自身效用的过程中,产生了"比任何中央计划都更精巧高效的自校正秩序"。
2.3 十九条格言(全文骨架,维基条目与原文核对一致)
- 每一件好软件都始于开发者挠自己的痒处(scratch a personal itch)。
- 好程序员知道写什么,伟大的程序员知道改写与复用什么。
- "Plan to throw one away; you will, anyhow."(引自 Brooks《人月神话》:计划做扔掉一个版本,反正你会的。)
- 态度对了,有趣的问题会来找你。
- 失去兴趣时,你对程序的最后义务是把它交给合格的继任者。
- 把用户当共同开发者,是快速改进代码与高效调试最省力的路径。
- 早发布,常发布,倾听用户。
- beta 测试者与共同开发者基数足够大时,几乎每个问题都会被很快定位,且对某人是显然的。
- 聪明的数据结构 + 愚笨的代码,远好于反过来(改写 Brooks "Show me your flowcharts…")。
- 把 beta 测试者当最宝贵资源对待,他们就会成为你最宝贵的资源。
- 仅次于自己有好想法的,是能识别用户的好想法——有时后者更好。
- 最漂亮创新的解法,往往来自意识到你对问题本身的定义错了。
- "Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away."(设计完美不是无可增添,而是无可删减——Saint-Exupéry)
- 好工具在预期用途内有用,伟大的工具能承载你从未预期的用法。
- 写网关软件时尽量不打扰数据流——除非接收方强迫你,否则永不丢弃信息。
- 语言远非图灵完备时,语法糖是朋友。
- 安全系统的安全性等于其秘密本身;警惕伪秘密(security by obscurity 批判)。
- 要解决有趣的问题,先找到对你有趣的问题。
- 只要协调者拥有至少与互联网一样好的媒介,并懂得不靠强制来领导,多人的头脑必然胜过一人。(对 Brooks 定律的反命题)
2.4 关键前置条件与机制主张
- 集市不能从零起源:
"One can test, debug and improve in bazaar style, but it would be very hard to _originate_ a project in bazaar mode… what you need to be able to present is a plausible promise."(可以用集市风格测试、调试、改进,但极难以集市模式原创一个项目……你需要拿得出的是一个"可信的前景承诺"。)
— Raymond, §Necessary Preconditions
- 协调者的关键能力是识别而非原创:"it is absolutely critical that the coordinator be able to _recognize good design ideas from others_";以及常被低估的一条——人际与沟通能力("it helps enormously if you have at least a little skill at charming people")。
- 领导不靠强制的机制基础是声誉经济(egoboo):Raymond 借 Kropotkin《一个反抗者的回忆》说明志愿者组织的"理解原则":
"The former works admirably in a military parade, but it is worth nothing where real life is concerned, and the aim can be achieved only through the severe effort of many converging wills."
(命令与纪律原则在阅兵式上完美运转,在真实生活中一文不值;目标只能靠"许多意志收敛的艰苦努力"达成。)
- 对 Brooks 定律的正面反驳(第 19 条):若 Brooks 定律是全貌,"Linux would be impossible"。Tison 的中文书评补了一个重要澄清:开源其实是"小核心 + 大外围"——外围开发者工作在"分散而并行的子任务"上几乎不交流,Brooks 开销只存在于小核心团队内部,所以两者并不矛盾。
三、方法
原文是一篇理论驱动的自传式案例研究 + 格言提炼,方法论上分四步:
- 观察归纳:从 Linux 1991–1996 的开发史中提炼 Linus 的做法(早发布常发布、把用户当共同开发者、稳定/开发双版本号"两头下注")。
- 理论化:将成功归因到对调试任务的对立假设,提出 Linus's Law,并嫁接德尔菲效应、Weinberg"无我编程(egoless programming)"、Kropotkin、市场/生态类比等既有理论。
- 刻意实验:1996 年接手 popclient 改名 fetchmail,"run as a deliberate test of some surprising theories"——四项自设措施:早发布常发布("almost never less often than every ten days; during periods of intense development, once a day")、把所有联系者加进 beta 名单、每次发布发热情公告、认真倾听并回应测试者。
- 格言化传播:把结论压成 19 条可传诵的 heuristics。
方法论定性:这是 n=1 的自我确认式案例研究,证据形式是叙事与轶事(报高质量 bug 的邮件、粉丝信、beta 名单人数),没有对照组、没有失败案例、没有过程度量。这正是 Bezroukov 批评的主要火力点(见第六节)。它更接近"宣言 + 方法论散文",其力量在传播性与可操作性,而非统计效度。
四、数据与证据
原文内部证据(均为 Raymond 自述的第一手数字):
- fetchmail beta 名单 fetchmail-friends 写作时 249 人、每周新增 2–3 人,1997 年 5 月高点近 300 人,之后因"软件太好用了不需要盯名单"而流失;
- 发布频率:高峰期每日发布,低频不低于每十天一版;
- "Very few could afford even to hire the more than two hundred people who have contributed to fetchmail!"(fetchmail 累计贡献者 200+ 人);
- 关键设计转折(SMTP 转发)直接来自用户 Harry Hochheiser 的 scratch code——第 11 条格言的实证;
- Linux:1991 年高峰期一日数版;1998 年前后 200+ 贡献者;稳定版/开发版双轨编号。
- 接受史证据(原文尾声 + Wikipedia):1998-01-22 Netscape 宣布开放 Communicator 源码,CTO Eric Hahn 致信 Raymond:"Your thinking and writings were fundamental inspirations to our decision.";Frank Hecker 等内部推动者把这篇文章当作"外部独立背书"在 Netscape 内部游说(Wikipedia 注 6:paper's importance "mainly that it provided some independent validation of ideas…already being actively discussed within Netscape");"open source"一词于 1998-02 在 Palo Alto 战略会上被造出,OSI 随后由 Raymond 与 Perens 创立;Jimmy Wales 自述此文"opened my eyes to the possibility of mass collaboration"(催生 Wikipedia 的思想来源之一,Marshall Poe《The Hive》与《New Yorker》报道均有记载)。
- 三十年后量化(tinycomputers.io,2026):GitHub 托管逾 4 亿仓库;Linux 内核累计贡献者逾 2 万;所有主要云厂商运行在开源基础设施上——"Raymond's prediction wasn't just right. It was conservative."
反面证据(Bezroukov 1999 引用的一手材料):
- 微软内部 Halloween-I 备忘录:Linux 的高效部分源于"有尾灯可追"——"The easiest way to get coordinated behavior from a large, semi-organized mob is to point them at a known target."(对着已知目标——POSIX 规范与既有 Unix 参考实现—— mob 无需强领导即可协调;一旦达到 parity,管理成本将激增);
- Ken Thompson(Unix 作者)1999 年 IEEE《Computer》访谈:"I've looked at the source and there are pieces that are good and pieces that are not. A whole bunch of random people have contributed to this source, and the quality varies drastically."(内核代码质量参差);
- Linus 自己在 LinuxWorld 的表态:"Open source may sound democratic, but it isn't… they function as dictators."(补丁先经多层 lieutenant 审查才能到他手里);
- Alan Cox 描述 linux-kernel 邮件列表的演化:"It ceased to be a bazaar model and turns into a core team, which to a lot of people is a polite word for a clique."(不再集市,变成核心小队——对很多人来说这是小圈子的客气说法)。
证据充分性判断:方向性证据(开源确实赢了、Netscape 事件因果链、声誉经济确实运转)是强且多源印证的;但"Linus 定律"作为可检验命题从未在原文中获得对照实验级别的验证,其后的实证研究(如后续学者对 bug 密度与贡献者数的检验)与 2014 Heartbleed 事件表明它只在"代码错误"层近似成立,对架构性缺陷与安全缺陷不成立(见第六节)。Bezroukov 的总结很公允:"The main problem with the Bazaar model is that it has no predictive power for OSS's strong and weak points"——但它"provided a framework of discussion of open source phenomena"。
五、结论
原文自身的结论:开源的胜利不是道德问题而是演化竞赛问题——
"…simply because the commercial world cannot win an evolutionary arms race with open-source communities that can put orders of magnitude more skilled time into a problem."(因为商业世界无法在演化军备竞赛中战胜能把数量级更多的熟练时间投入一个问题的开源社区。)
— Raymond, 原文结尾段
三十年后的再评估(两篇 2026 年回顾一致收敛到同一图景):
- 数量上集市完胜:开源吞噬软件世界,Raymond 的预测"不是太乐观,而是太保守"(tinycomputers)。
- 但大教堂穿上了集市的外衣回归:"The bazaar won, but the cathedrals adapted."——Meta 开源 PyTorch/Llama、Google 开源 Kubernetes/Chromium、微软开源 VS Code/TypeScript,模式一致:开源你想要商品化的那一层,在其上层捕获价值(commoditize your complement)。开源被"历史上最强大的公司武器化为竞争策略"。
- 生态分层(tinycomputers 的三层模型):底层是真正的社区集市(Linux 内核、PostgreSQL、无数单维护者库);中层是"看起来像集市、服务教堂战略"的企业赞助项目;顶层是构建在开放地基上的专有服务。企业与项目陷入相互锁定(mutual capture):"Independence became entanglement, and the entanglement, paradoxically, is what makes the system work."
- Bressers 的修正更锐利:活到今天的"老开源"(内核、Python、Apache、Rust、Node.js)都是"Megachurch Open Source"(巨型教堂——基金会化、有缴款、有严格贡献规则);而按绝对数量看,大多数开源项目仍是"一个人"的集市,"The Cathedral was built to keep out the unwashed masses. The Megachurches were built to collect tithes. But the Bazaar wasn't built. It's always existed and will always exist."
- Raymond 对在哪里(tinycomputers 论证最透的一段):去中心化协调赢在信息问题的解法不同——
"A cathedral architect must understand the entire system well enough to direct work from above. A bazaar participant only needs to understand their local patch well enough to improve it. As systems grow in complexity, the information burden on the cathedral architect grows faster than the burden on any individual bazaar participant."
(教堂建筑师必须理解整个系统才能自上而下指挥;集市参与者只需理解自己的局部补丁。系统越复杂,教堂建筑师的信息负担增长越快。)
一句话结论:集市模式的协作机制(早发布、用户即共同开发者、声誉经济、可信前景承诺、并行调试)经受住了三十年检验并成为行业默认;但它的二元对立框架与制度真空预言失败了——它没有消灭大教堂,而是催生了教堂与集市共生的分层生态。
六、局限
Raymond 自认的局限(原文明写):集市难以从零原创项目,需要 plausible promise 前置;FSF 的版权转让流程与集市模式冲突("Paul Eggert noticed the conflict between GPL and the bazaar model");Netscape 若失败可能让开源概念倒退十年(单点押注的传播风险)。
Bezroukov(1999,全文精读)的系统性批评,五组命题逐一被攻击:
- Brooks 定律并未失效:互联网连接不消除沟通/管理开销;同等水平开发者下,地理紧凑团队恒优于分布式团队。开源的真正优势只是无地理壁垒地扩大了人才池质量,而非消除了 Brooks 定律。Linux 的顺利恰因它是"有规格(POSIX)+ 有参考实现(FreeBSD/Solaris)"的重实现——Halloween-I 称之为"有尾灯可追"。
- 并非所有 bug 都是浅的:bug 至少分代码错误/逻辑错误/架构缺陷三层,难度逐级递增一个数量级;"眼睛"对第一层有效,对架构层(如 Unix 安全模型、C 内存泄漏)几乎无效。并行调试浪费稀缺人才——"Talented developers usually dislike debugging code not their own"。Ken Thompson 对 Linux 代码质量的评价即为反例。Y2K 问题更是绝妙反例:源码完全可得,理解却已丢失。
- Linux 根本不是纯集市:黑白的二元图景太简化——内核核心高度集中(善意独裁者 + 受信任的 lieutenant 层级),Jordan Hubbard(FreeBSD)指出"bazaar"项目内含"fairly significant degrees of centralization";而微软反而长期实践早发布常发布、把用户变测试者("Microsoft as an idealized OSS community"——Halloween-I 作者语)。Jonathan Eunice:"Rarely do such simple categorizations do justice to reality."
- 地位竞争被理想化:开源社区有真实的政治行为、派系、偏袒(favoritism)、恐惧排除、职业倦怠(Linus 1995 年自述"光读邮件每天至少两小时";1998 年 3 月因二女儿出生停摆、10 月因积压补丁爆发冲突离开休假);"egoless programming"连 Weinberg 本人在 1996 年都承认是最被误解的概念。知识权力同样存在:"Reveal the code, conceal the kitchen"(亮出代码,藏起厨房——关键架构理解从不自动随源码开放)。
- 源码可得 ≠ 可理解:大型系统超过约 10 万行后发生"代码的二值化(binarization)"——没有高层文档与早期参与,源码对外来者实质封闭(Lions' Commentary 被盗版二十年恰是旁证);复杂项目的人才池在早期成形后自我关闭。据此他判断 Netscape 是错误的试验场(打开一个成熟晚期项目),其困难不构成对开源模式的否证。
三十年实践补上的新局限(tinycomputers 2026,四条盲区):
- 维护者倦怠不是例外而是结构:OpenSSL 几个志愿者护住大半个加密互联网,直到 2014 Heartbleed;left-pad、core-js、Log4j 逐一证明"集市的人力供给并不取之不尽——它集中在有趣的工作上,忽视必要的工作"。
- 搭便车规模化:数十亿美元商业价值从不付费的维护者身上抽取(Amazon 对 Elasticsearch 的托管服务),导致 MongoDB/Redis/HashiCorp 收紧许可证——"freedom without reciprocity becomes exploitation"(没有对等的自由会变成剥削)。
- 安全供应链:"A bazaar has no gatekeepers, which Raymond saw as a feature. It's also a vulnerability."(集市没有守门人——Raymond 视之为特性,这也是漏洞。)SolarWinds、依赖混淆、npm 抢注攻击全部利用集市信任模型。
- 治理真空:谁付维护费、谁定许可证、谁可商用——"These questions have no bazaar-native answers. They require institutions… which is to say, they require cathedrals."(这些问题没有集市原生答案,它们需要制度——也就是说,需要大教堂。)
本笔记的检索局限:中文译本全文与豆瓣书评未逐字精读(仅检索摘要);未直接核验 Raymond 对 Bezroukov 的回应原文(Wikipedia 注 14 存在 "Response to Nikolai Bezroukov" 一文);对 1997 原始宣讲版(v1.16)与 1998 First Monday 版(v1.33)的差异未做版本比对。
七、对我的启发:结合开源贡献课题提炼的十条协作原则
以下把 19 条格言 + 三十年修正,压成"今天的贡献者/维护者可直接执行"的原则。每条标注源头。
原则 1:先交付"可信的前景承诺",再谈社区
源:Raymond plausible promise;格言 1、8
给维护者提 PR 前,先让最小可验证单元成立:可运行的复现、能过 CI 的最小 diff、附测试。提交的不是想法,是"可运行、可测试、有前景"的增量。选 issue 时优先挑"挠到自己痒处"的——个人需要是最可持续的动机来源,"To solve an interesting problem, start by finding a problem that is interesting to you."
原则 2:把"问题表征(characterization)"当作一等贡献
源:Linus 修正——"Somebody finds the problem, and somebody else understands it. And I'll go on record as saying that finding it is the bigger challenge."
高质量 issue(版本信息、最小复现、bisect 到可疑 commit、现象与分析分离)是集市里最稀缺的货币之一。不写代码的贡献者完全可以靠"把深层 bug 变浅"建立声誉——这正是 Tison 书评所说"分析型 bug 报告取代现象型报告"的门槛所在。
原则 3:早发布、常发布、小步走——把大 PR 拆碎
源:格言 7、10;fetchmail 四项自设措施
反馈回路速度决定贡献被合并的速度。RFC/design doc 先行,代码分批可审;把维护者当 beta 资源对待(认真回应每条 review 意见),他们才会把你的 PR 当回事——格言 10 是一条自我实现的预言:"If you treat your beta-testers as if they're your most valuable resource, they will respond by becoming your most valuable resource."
原则 4:复用与接棒先于从零重写
源:格言 2、4、5;Tison 归纳的所有权三途径(创建项目 / 移交接力棒 / 认领孤儿项目)
进入一个生态时先问"哪个 almost-good-enough 的方案离目标最近",为它添砖而不是另起炉灶。认领无人维护的项目、给失去兴趣的维护者接棒,是贡献声誉曲线最陡的路径——前提是先证明自己是"a safe pair of hands"(Carl Harris 移交 popclient 给 Raymond 的标准)。
原则 5:公开承认好主意来自哪里
源:格言 11;原文:"if you are completely and self-deprecatingly truthful about how much you owe other people, the world at large will treat you like you did every bit of the invention yourself"
PR 描述、CHANGELOG、文档里明确署名 idea/patch 的来源。这不是道德姿态而是声誉经济的最优策略:诚实归因反而放大自己的信用。
原则 6:卡住时先怀疑问题定义,再怀疑解法
源:格言 12、13;fetchmail 从 MTA+MDA 重构为纯 MTA 的转折
"when you hit a wall in development… it's often time to ask not whether you've got the right answer, but whether you're asking the right question." 对贡献者的推论:当 patch 连续被拒或越修越复杂时,回到 issue 重新框定范围(也许该拆、该弃、该 upstream 化);删除特性与代码同样是贡献("无可删减"标准)。
原则 7:用"小核心大外围"结构化自己的贡献,别给核心团队加协调税
源:Tison 对 Brooks 定律的调和;Dutky"调试可并行"
外围贡献者应把工作收敛为彼此独立、可并行的子任务(独立模块、测试、文档、benchmark、CI 改造),与核心的接口点越薄越好。这正是集市不违反 Brooks 定律的微观机理——反过来,跨模块大改、需要多人来回对齐的 PR 才是 Brooks 开销的来源。
原则 8:做维护者/组织者时,靠透明与公平署名领导,不靠裁决权
源:格言 19、Kropotkin"许多意志收敛的艰苦努力";Bezroukov 对偏袒与政治的反面警告
决策公开(公开 RFC、公开合并标准)、署名按贡献价值而非亲疏——Bezroukov 指出 favoritism 的感知本身就足以摧毁士气与主动性,这是维持者社区最常踩的坑。同时正视倦怠风险:Linus 1995 年"读邮件两小时/天"是先例,维护者应尽早建设 lieutenant 层级与信息过滤("My workload is lower because I don't have to see the crazy ideas"——Torvalds),而不是硬扛到爆发。
原则 9:为依赖付费/出力,别把兴趣驱动的供给当无限
源:tinycomputers(Heartbleed/left-pad/Log4j);Bressers 引 Sovereign Tech Agency 与《Avoiding the success trap》(Atlantic Council, 2023)
审视自己项目的依赖树:哪些是单维护者集市项目?给它们的是 issue 轰炸还是 patch/文档/资助?Bressers 的行动建议直接可执行:"I encourage you to wander the bazaar… Look at the PRs, and commits, and bugs. Don't be a pest, but try to learn about a few projects."(去逛集市——读那些你依赖的小项目的 PR、commit 和 bug,别做讨人嫌的人,但要弄懂几个。)
原则 10:先判断项目在"教堂—巨型教堂—集市"谱系上的位置,再选贡献策略
源:Bressers megachurch 框架;tinycomputers 三层模型;Tison 对"伪开源"的批评
- 基金会型 megachurch(内核、Kubernetes、Rust):重流程——CLA/DCO、RFC、委员会、版本化道德规范;按其贡献规则行事,企业背景的贡献要主动披露利益关联;
- 单维护者集市(绝大多数项目):重直接、体谅与耐心——读 CONTRIBUTING 与近期 PR 风格、先小后大、接受被拒;
- 识别"伪开源集市":Tison 的批评——不少项目核心成员全部来自同一公司,"实质上只是源码可得的传统项目开发模式";把贡献投入这类项目前,校准其对社区贡献的真实接纳度(Elastic/OpenSearch 分叉即管控共同体的恶果)。同时谨守分叉禁忌:fork 魔改而不 contributing back 是礼物文化里代价最高的行为。
八、本次学到什么
- 读经典要连批评一起读:CatB 的 19 条格言单独读像成功学;配上 Bezroukov 的反驳(尾灯效应、bug 三层分类、代码二值化)和 2026 年的实践复盘(Heartbleed、许可证战争、megachurch),才变成一张能用的地图——判断力来自"主张 × 反例 × 时间"三点定位。
- 格言的适用域比格言本身值钱:"足够多双眼睛"对代码层 bug 成立、对架构与安全缺陷失效;"早发布常发布"需要"小核心大外围"的结构支撑才不违反 Brooks 定律。引用任何原则前先问它隐含的前置条件(plausible promise、可并行的子任务、声誉经济的正反馈)是否在场。
- 贡献者视角的杠杆点在结构而非努力:把贡献切成可并行的薄切片、把问题表征做成一等产出、在声誉经济里做诚实归因——这三件事的成本收益比远高于堆代码量。
- 二元对立是传播工具,不是分析工具:三十年后真实世界收敛于"教堂—巨型教堂—集市"的分层共生。做技术选型与社区参与决策时,用谱系思维替代站队思维。
*笔记完。引述页码定位:格言编号与原文段落一致(First Monday 1998 电子版小节标题即定位锚点)。*