【软件工程】《大教堂与集市》书摘
走进开源的世界。
黑客圈简史
- “真程序员”通常具备工程学和物理学背景,并常常是业余无线电爱好者。“真程序员”文化与批处理技术密切相关。
- “黑客”一词起源于MIT计算机文化,黑客文化起源于MIT的第一台PDP-1,APRAnet的诞生让黑客的影响逐渐扩散开来。
- UNIX和C的组合,很快适用于极为广泛的计算作业,它们具有强大的可移植性,并且都是KISS(Keep It Simple, Stupid)哲学下的产物。
- Linux最重要的特点不是技术上的,而是社会学上的。
- 互联网成为主流后,黑客文化开始受到尊敬,并有了一定的政治影响。
大教堂与集市
绝大多数商业公司采用的“大教堂”模式和Linux世界采用的“集市”模式
- Linus Torvalds的开发风格:早发布、常发布、委托所有能委托的事、开放到几乎是混乱的程度。
- 开源开发中的有用格言警句:
- 好的软件产品,往往源自于开发者的个人需要。
- 优秀的程序员知道写什么,卓越的程序员知道改写和重用什么。
- “计划好扔掉一个吧,你迟早会这么做的。”(《人月神话》)
- 如果你有正确的态度,有趣的事情自然会找到你。
- 当你对一个程序不再感兴趣时,你最后的责任就是把他交给一个可以胜任的接棒者。
- 把你的用户当作开发者对待,如果想让代码快速提升和有效排错,这是最省心的途径。
- 早发布、常发布、倾听用户的反馈。
- 如果有足够多的beta测试者和开发者,几乎所有问题都会很快显现,然后自然有人会把它很快解决。
- 聪明的数据结构配上愚笨的代码,远比反过来要好得多。
- 如果你把beta测试者当作最珍贵的资源对待,他们就会成为你最珍贵的资源。
- 仅次于拥有好主意的是,识别来自用户的好主意,有时后者会更好。
- 通常,那些最有突破性和最有创新力的解决方案来自于你认识到你对问题的基本观念是错的。
- “设计上的完美不是没有东西可以再加,而是没有东西可以再减。
- 任何工具都应具备预期内的功能,但一个伟大的工具能给你带来预期外的功能。
- 写网关类软件时,尽可能不要干扰数据流,而且绝不要扔掉信息,除非接收方强迫你这么做。
- 当你的语言还不是图灵完备的时候,语法糖会让你受益良多。
- 系统的安全性只取决于它所拥有的秘密。谨防虚假的秘密。
- 想要解决一个有趣的问题,先去找一个让你感兴趣的问题。
- 如果开发协调者有一个至少像Internet这样好的沟通媒介,并且知道如何不靠强制来领导,那么多人合作必将强于单兵作战。
- 集市模式的必要条件:
- 可以用集市模式测试、排错和完善项目,但以集市模式从零开始一个项目是非常困难的。
- 一个协调者是否能识别出别人的优秀创意,一定是最关键的。
- 设计原创性不是集市模式的成功关键。
- 一定水准的设计和编码能力。
- 集市项目的协调人或领导人必须要有很好的人际交往和沟通能力。
- Linux是第一个有意识并成功将整个世界作为其人才库的项目。
- “玩”是创造性活动中最具经济效能的工作模式。
开垦心智层
黑客的“礼物文化”——通过付出时间、精力和创意,参与者在竞争中获取声望
- 开源软件中习惯做法的特点:
- 绝大多数黑客在不了解习惯做法的情况下就知道去这样做;
- 他们对习惯做法的遵循表现出非凡的一致性;
- 这些习惯会随着时间演进,并有着连贯一致的趋势。
- 黑客项目所位于的空间不是心智层,而更像一种双重心智层空间,也即在心智层上探索的程序项目空间。
- 礼物文化产生于没有生活必需品稀缺问题的人群中,在气候宜人且物产丰富的生态环境中,我们经常可以在其居民文化中观察到礼物文化。在礼物文化中,社会地位并不取决你控制了什么,而是你给予了什么。黑客的礼物文化也即通过付出时间、精力和创意,在参与竞争中获取声望的文化。
- “编程乐趣”要在一定社会环境下才能成为个体的主要动机,而“声誉竞争”可能对该环境提供起到了至关重要的作用。
- 开源文化的禁忌:项目产生分支、“流氓”补丁、移除某人姓名。
- 声誉竞争模型推论:
- 项目创建会比项目合作让人获得更多声誉;
- 相比增量改进现有软件的仿造产品,创意十足的产品会让人获得更多声誉;
- 一个软件如果只有作者本人才理解或需要,则在声誉竞争中几乎连参赛资格都没有;
- 对现有项目做出贡献会比另起一个新项目更容易吸引注意力;
- 和成熟项目进行竞争比填补领域空白要难的多。
- 什么才是好礼物:
- 如果程序不能像我所预期的那样工作,那就不是好的——不管它多聪明和有原创性。
- 在心智层的拓展性工作要比在某功能域内(对现有作品)的重复性工作好。
- 能进入主要发行版的作品比不能进入的好,在所有主要发行版中包含的作品最令人尊敬。
- “使用”是最真实的赞美,类别杀手比同类竞争者好。
- 相比那些只挑有趣和简单工作的人,长期致力于艰苦和乏味工作(如何调试、写文档)的人更令人钦佩。
- 重要的功能拓展比低层次的修补好。
- 所有权惯例除了最大化声誉激励外,还有防止和解决冲突的作用。
- 黑客文化中,项目如果没有一位“善意独裁者”领导,往往很脆弱。
魔法锅
开源软件不仅在技术上,也在经济上挑战着现有秩序
- 安全性是可靠性的一部分,只有在算法及其实现经过彻底的同行评审之后,才有可能被认为是安全的。
- 开源开放的协作资助模式——各方都能获益(Apache)。开源不仅能降低成本,还能分散和减轻风险(Cisco)。源码的开放和合作社区的存在,提供了一种故障保险机制,其本身价值足以吸引资金支持。
- 可以通过创造软件服务市场获取一些非直接的服务价值。
- 占领市场——利用开源软件建立或维护专有软件的市场地位。
- 硬件糖霜——市场压力迫使硬件公司编写和维护软件,但软件本身不是盈利中心,它是一项开销。
- 送配方,开餐馆——开源软件不是为闭源软件而是为服务占领市场。
- 附属物策略——出售开源软件的附属物。
- 当下收费,未来免费——以封闭许可证的方式发布软件的二进制及源码,但其中的封闭条款有过期时间。
- 软件免费,品牌收费——开源一项软件技术,保留其测试套件或兼容性标准,然后卖品牌认证。
- 软件免费,内容收费——开源软件而销售内容订阅。
- 开源获取高收益的条件(可以考虑开源地条件):
- 当可靠性/稳定性/可扩展性至关重要时;
- 没有其它方法比独立同行评审能更便捷易行地验证设计和实现正确性时;
- 当软件成为对业务起关键作用地资产时;
- 当创建或运转一个公共计算或通信基础架构时;
- 当关键方法属于公共知识时。
- 开源不仅可用来扩展市场,有时还能作为有效对抗公司间竞争地战略手段。
- 开源社区层级隔离地做法,创建了一种非常灵活地内部市场改善机制:
- 这个网络中没有哪个节点是必不可少的。
- 通过专业化减少开销并提升效率。
黑客的反击
- 网景源码发布后的策略:
- 忘掉自底向上,开始自顶向下。
- Linux是我们最好的例证。
- 抓住财富500强。
- 赢得那些效劳财富500强的有威望的媒体。
- 说服黑客,游记市场。
- 使用“Open Source”认证标识,保持纯净度。
- 电脑是人类的设计。硬件设计和软件设计最终要回归到为人类设计,而且是为全人类设计。
如何成为一名黑客
长期以来,存在一个崇尚共享文化且成员都是编程专家和网络高手的社区,如果你是这个文化的一部分,如果你对这个社区有贡献,社区中其他人知道你并称你为黑客,那你就是一名黑客。
- 黑客的态度:
- 这个世界充满了迷人的问题等待人们去解决。
- 不要解决一个问题两次。
- 无聊和乏味是有害的。
- 自由是好事。
- 态度不能代替能力。
- 黑客的基本技能:
- 学习如何编程。
- 找一个开源UNIX,学习使用并运行它。
- 学习如何使用WWW和HTML。
- 得到其他黑客的尊敬:
- 写开源软件。
- 协助测试和调试开源软件。
- 发布有用的信息。
- 帮助做一些基础工作。
- 服务黑客文化自身。