本章是全书的核心,通过作者开发`fetchmail`的亲身经历,系统阐述了“集市”模式的原则和优势。
观点: Linux的成功颠覆了传统软件工程的认知。作者将自己原先信奉的“大教堂”模式与Linux所代表的“集市”模式进行对比,并有意识地在`fetchmail`项目中实践“集市”模式,验证其有效性。
- 原则 1: 好的软件源于开发者切身的痛点。 (Every good work of software starts by scratching a developer's personal itch.)
- 原则 2: 优秀的程序员懂得复用与重构,而非从零开始。 (Good programmers know what to write. Great ones know what to rewrite (and reuse).)
- 原则 3: 准备好抛弃你的第一个版本,你总会这么做的。 (Plan to throw one away; you will, anyhow.)
- 原则 7: 早发布,勤发布,并倾听用户的声音。 (Release early. Release often. And listen to your customers.) 这是集市模式的核心实践。
- 原则 8: Linus定律:“只要有足够多的眼球,所有Bug都将无处遁形。” ("Given enough eyeballs, all bugs are shallow.") 这是对并行调试和同行评审力量的最佳诠释。
- 原则 10: 将你的用户(测试者)视为最宝贵的合作开发者,他们便会成为你最宝贵的资源。 (Treating your users as co-developers is your least-hassle route to rapid code improvement.)
- 原则 11: 认识到用户的好点子,其价值不亚于自己有好点子。有时,前者更佳。 (The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.)
- 原则 13: 设计的完美,不是无可增加,而是无可删减。 (Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.)