• 开源博客谈(一)

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://freestorm.blogbus.com/logs/1846874.html

    如今开发一个产品还真是舒服,只要你做的不是前无古人的工作。你总可以找到一些美妙的材料。你想做电子商务网站吗?想搞论坛吗?想开博客吗?没问题,网上有大量的现成产品,你只需要在搜索引擎上输入“开源 某某”,然后在返回的众多结果中挑一个就好了。当然,拿回这些开源(开放源代码)的软件包,你还需要作一些工作,比如:修改一下界面,调整一些文字描述,然后再编译一下。一个“个性化”的产品就诞生了。

     

    开放源代码的确是一件好东西,很大程度上提高了产品的研发效率。当我们能够拿到一套高质量的源代码的时候,就仿佛是站在了巨人的肩膀上。有许多基础性的工作已经由其他人完成了。在自由软件和开放源代码的帮助下,程序员可以很快地搞出一个产品的原型,而不需要一行一行地敲代码。

     

    然而你要小心,站在巨人的肩膀上固然可以让你看得更远,但并不意味着你自己可以看得那么远。而且巨人的肩膀并不是十分稳固的。许多人(包括程序员)对开放源代码的都存在着误解,其中最大的误解就是:开放源代码的错误是最少的,安全性也是最好的。这样想的人通常都漏了一个前提,开放源码的错误之所以少(安全也是因为错误少),是因为代码中可能出现错误会被使用他们的程序员发现。也就是有大量的程序员对这些代码进行了白盒测试。如果这个前提不存在,那么里面包含的错误将要延迟到用户使用的时候才能发现,而安全问题则需要黑客帮你发现了。在这种情况下黑客还有一个十分便利的条件。

     

    那么作为使用这些东西的程序员之一,你是否认真阅读代码并理解了作者的思路呢?也许你会指望其他的程序员会做这件事情,并把发现的错误反馈给作者。然后你就等着原作者发布新的版本来修正这些错误。如果大部分的程序员这样想,开源代码的质量和安全性绝对不会比那些不开放源代码的商业软件高!而且你会发现,你的用户最终也会发现:软件错误修正的速度令人绝望!而这种例子并不少见,尤其是那些直接把开源代码作为产品推出的公司。

     

    实际上开放源代码只是降低了产品开发的风险,在开放源代码的基础上开发一个产品还有许多事情要做。作为一个完整的开发过程,程序员需要完全掌握产品的所有技术细节,才有充裕的手段应付不断涌现的新需求以及事先没有预料到的安全威胁。如果所有的代码是自己编写的,这一点要求比较容易满足。而从一个开放源码的基础上进行开发,则需要认真阅读和理解别人的代码,很多时候这种工作不会比自己写一段相同功能的程序花的时间少。事实上在开源代码安全方面依赖于开发人员和黑客间的能力对比,也依赖于那些愿意把漏洞公开的“好黑客”。

    作为一个有近20年代码经验的老程序员,我始终认为只有你能够把握的代码才是好的代码,不要总满足于站在巨人的肩膀上,自己也需要成长为巨人。


    收藏到:Del.icio.us