🏷️ 分类: 技术 商业
🔖 标签: #开源软件 #软件开发哲学 #Linux #Eric S. Raymond #集市模式 #大教堂模式

大教堂与集市

The Cathedral and the Bazaar

Eric S. Raymond 对 Linux 历史的观察,颠覆了传统软件工程的认知,揭示了两种截然不同的开发哲学。

两种模式的对决

⛪️

大教堂模式

集中式、预先规划、保密开发

  • 由少数天才巫师在与世隔绝的环境中精心构建。
  • 严格的中心化控制,发布周期长。
  • Bug 被视为深奥、隐匿的难题。
  • 在发布前,版本严格保密。
🎪

集市模式

分布式、演进式、开放协作

  • 在混乱喧嚣的合作中,由众人共同演化而成。
  • 早发布、常发布,最大程度地授权。
  • 相信“只要眼球足够多,所有 Bug 都显而易见”。
  • 从一开始就将用户视为共同开发者。

一个故事的开始:Fetchmail 的诞生

个人之痒

1996

作者需要一个更好的 POP3 客户端来解决邮件回复地址的问题。“每个好的软件都始于一个开发者的个人之痒。” (法则 1)

重写与复用

重构

作者没有从零开始,而是选择了一个有潜力的项目 `popclient` 进行重写和改进。“伟大的程序员知道要重写(和复用)什么。” (法则 2)

项目交接

社区精神

原作者欣然将项目移交给更有热情的继任者。“当你对一个程序失去兴趣时,最后的责任是把它交托给一个称职的继任者。” (法则 5)

`fetchmail`诞生

质的飞跃

在采纳了用户关于 SMTP 转发的建议后,项目被重构并更名为 `fetchmail`,找到了自己真正的身份。

顿悟时刻:Linus 定律

"Given enough eyeballs, all bugs are shallow."

Bug

只要眼球足够多,所有 Bug 都显而易见。

发布周期的对比

集市模式的 19 条实践法则

💡

项目启动与动机

万事之始

1. 每个好的软件都始于开发者的个人之痒。

4. 如果你有正确的态度,有趣的问题会自己找上你。

18. 要解决一个有趣的问题,先找到一个让你自己感兴趣的问题。

⚙️

设计与开发哲学

建造之法

2. 好的程序员知道写什么,伟大的程序员知道重写和复用什么。

3. "准备好扔掉一个版本,你终将为此。"

9. 聪明的数据结构和傻瓜式的代码,远胜于反之。

12. 最具创新性的解决方案,往往源于你意识到自己对问题的看法是错的。

13. "设计的完美,不是无可增加,而是无可删减。"

14. 一个真正伟大的工具,会以你从未预料到的方式被使用。

15. 编写网关软件时,尽可能少地干扰数据流。

16. 当你的语言远非图灵完备时,语法糖可以是你的朋友。

17. 安全系统与其秘密一样安全。警惕伪秘密。

🧑‍🤝‍🧑

社区与协作的力量

众人拾柴

5. 当你对程序失去兴趣时,将它交托给称职的继任者。

6. 将用户视为共同开发者,是快速改进和高效调试的捷径。

7. 早发布,常发布,并倾听你的用户。

8. 只要有足够大的测试和协作基础,几乎所有问题都会被快速定位。

10. 如果你视测试者为最宝贵的资源,他们会真的成为你最宝贵的资源。

11. 识别用户的“好点子”,有时比自己拥有好点子更重要。

19. 只要有好的协作媒介,并且领导者懂得无为而治,众人拾柴必然火焰高。

背后的驱动力:Egoboo 经济学

开源社区并非纯粹的利他主义,而是由一种非物质的“效用函数”驱动:黑客们的自我满足和在同行中的声誉 (Egoboo)。

贡献代码、文档、Bug报告 获得声誉和满足感 激励更多、更高质量的贡献
👨‍💻
🏆
🚀

集市模式成功地将个体黑客的“自私”动机与只有通过持续合作才能实现的宏大目标紧密相连,形成了一个高效、自发、自我纠正的良性循环。

历史的回响

1991

Linux 诞生

Linus Torvalds 开始以“早发布、常发布”的集市模式开发 Linux 内核,颠覆了操作系统开发的世界。

1997.05.21

《大教堂与集市》发布

Eric S. Raymond 首次公开发表本文,系统性地总结了集市模式的理论与实践。

1998.01.22

网景拥抱集市!

Netscape 宣布开源其浏览器源代码,并明确表示此决策深受《大教堂与集市》的启发。这是开源思想在商业世界的一次里程碑式胜利。