软件设计天生就是可重用的,无论模块化设计,还是面向对象编程都体现了一个目标——减少不必要的重复开发。软件是人类共同的财富,软件的可继承性是软件迅速发展的基石。开源的目的也是最大程度地提高软件的复用性。
开源的好处是显而易见的,甚至还是一些国家政府的要求,但为什么各大软件厂家在开源问题上还是“犹抱琵琶半遮面”呢?原因是多方面的。
1.知识产权的保护
保护知识产权是对人类科技工作的尊敬,专利保护已经有了上百年的历史。然而到了信息时代,这个保护却变得有些困难,因为信息产品的研发成本高,但复制的成本太低廉了。
2.开源代码的非产品性
对于厂家来说,无论自己开放与否,都可以使用开源的代码为自己服务。降低研发成本就意味着利润的增加,但是开源的代码直接使用的问题也很多。
代码功能设计目的是不同的。自由代码的编写是爱好者的思路,没有具体的使用目标,而厂家推出的产品,是要对客户负责的,目的性要强很多,所以对代码的改造是必然的,而代码的再造成本就要重新评估了。
在代码测试中,源代码是否在厂家产品的适用范围,以及代码本身的测试,是使用开源代码首先要解决的问题。由于开源代码的编写者大多数是爱好者,一般是在实验环境中实现的,所以对实际工作环境的具体问题很难考虑周全。
公共代码的漏洞是可怕的。取自公共的代码用到产品上,这段代码本身的缺陷同时也会带到产品中。
3.用户的担心
产品是给用户使用的,用户对产品是否开源的心理是矛盾的,主要是担心安全方面的问题。一方面,用户希望厂商告诉自己实际的情况,用户希望对自己使用的产品有足够的了解,心理才能踏实。另一方面,用户不希望知道的人太多,从安全的最小化原则讲,知道的人越少就越安全。
用户的这种既要了解又不希望扩散的心理,对厂家的影响是巨大的。
厂家是否选择开源的代码,是否把自己的代码开放,都需要从使用产品的客户角度去考虑。比如一些具有绝对垄断地位的软件有着难以衡量的安全隐患,我们认为让其开源也是不错的选择,促使从开源的土壤中走出更多的竞争产品,打破垄断地位。用户有了真正的选择权利,才是解决安全问题的根本方法。
所以,我们提倡开源联盟的发展,但不提倡所有的厂家都参与开源。商业与技术的发展关系紧密,但不是简单的等价。
(责任编辑:A6)