梦断代码阅读笔记之二
在本书第一章里,作者为我们介绍了一些关于开源的历史和开源的开发方式。同时作者为我们对比了传统开发模式与开源开发的优劣之处。这两者的对比能让我们对于软件开发模式有一个更深刻的认识。
开源不仅给出了一种生产和分发软件的替代性经济基础方案;它还能彻底改变软件开发的具体过程——将其从少数隐士手里拿出来,散播到广大人群中。程序员瑞蒙德在论文《大教堂与集市》中将两种开发方式做了一个有趣的比喻:最重要的软件应该需要像建教堂一般,由独立的巫师或一队相互隔离的魔法师精心打造,在面世之前绝对不发布beat版本。而开源开发的风格——早发布、多发布、全委托、尽开放——让我吃惊。这里不存在静穆、虔诚的教堂式开发——相反,Linux社群看似一个乱哄哄的大集市,铺设了各种日程和手法。要从中得到前后一致和稳定的系统,简直只能指望奇迹再三出现。可事实上这种集市风格看来行之有效,真令人震惊。
瑞蒙德在这些开源工作中看到了超越布鲁克斯法则的力量。这种新的开发模式可集众程序员之长,且免于让项目深陷泥潭。瑞蒙德之处其中的两个要诀:其一,低成本、广泛的接入像互联网那样的网络,让开发者之间建立起迅速、可信的通讯渠道,储存可被开放访问的共享知识和代码池。其二,围绕一种领导方式,形成合作团队的良好风气,欢迎新成员的加入,鼓励成员做出贡献,同时尽可能增加合格成员。一旦具备这些条件,就能彻底改进在程序中寻找和修正缺陷的过程。与其害怕竞争对手窃取代码而秘不示人,不如将其展示给全世界,邀请同道加入。而且假使你独具魅力,懂得如何管理一群开发者,或许还能组织起一个自循环的集智体系。瑞蒙德还表达了一个李纳斯法则:“眼球足够多,缺陷无处躲”。他由此对布鲁克斯法则提出不同意见:“让懂得怀柔政策的开发协调人员拥有至少像互联网那样好的沟通媒介,多人必好过一人”。
开源本身,即让程序员学习和扩展源代码的可能性,已经是布鲁克斯描述世界的一部分,但是开源方法和基于互联网的协作集市,仍然待以来者。瑞蒙德的观点,更多的体现于看到互联网和开源开发领导方式在让接触源代码更具有价值方面的重要性,而不在于解释为什么应该让程序员接触到源代码。
瑞蒙德的这些言论令人信服的阐述了开源方式是一种飞跃,但是并未完全解决布鲁克斯所看到的,从头搭建一套软件系统的过程中所遇到的困难。瑞蒙德展示了开放集市如何能够融大群程序员之智慧于一炉、且不触及布鲁克斯法则的铁律,但他无法说明开源方式是否更易预测开发新程序所需的时间,或者是否能够加速软件面世的进程。