少年听雨歌楼上,红烛昏罗帐.壮年听雨客舟中,江阔云低断雁叫西风. 而今听雨僧庐下,鬓已星星也! 悲欢离合总无情,一任阶前点滴到天明。

2007年4月26日星期四

我看开源

本来开源不开源是软件行业内的一件事情。然而最近王开源在微软创新大会上的举动则把软件业的很多问题抛向了整个社会,再加上很多不理性的思考,使得开源这件事情承载了太多它本不该承受的东西。

这里,我仅仅想谈论一下开源和闭源的一些关系。

所谓开源就是指开放源代码。众所周知,软件,作为计算机硬件上运行的程序,其核心就是有成千上万行的源代码组成的(这么说,仅仅是为了通俗易懂,其实,可以运行的大多数软件都是二进制代码,并不是可以被容易理解的程序源代码)。软件要作为商品,软件要成为知识产权保护的对象,其核心也就是在谈论源代码的归属问题。

软件作为商品,传统上是指二进制形式的可执行状态的软件。也就是说,用户仅仅需要执行这些软件,使用这些软件就行了,并不需要知道或者查看软件的源代码。源代码作为软件开发商的“财产”,由软件开发商自己维护。

软件作为知识产权保护的对象,源代码就是其最终的形式。也就是说,知识产权保护的就是源代码,二进制形式相对来说并不重要。因为源代码记录了软件的结构和行为。通过源代码,很容就能够重新建立二进制形式的软件。因此,对软件知识产权的保护,从某种意义上来说,就是对软件源代码及其文档的保护。

问题出现在哪儿呢?问题在于软件同时又是人类知识的一部分。作为人类的知识来说,需要传播、共享和发展。因此,作为商品,作为知识产权保护对象的软件形式就和这一目标有一定的矛盾。矛盾在于,软件开发商要想使用软件盈利,就必须保护源代码不被外界所知晓,就必须以种种形式保护那些区别于别的开发商的算法和功能,不被其他开发商所使用。然而,这种做法又严重影响了软件业的发展,不利于知识的传播,不利于软件技术的发展。

有一些很容易被理解的例子。比如,几乎每一代的微软Office产品都会推出新的界面风格,然而这些界面风格的具体实现方法并不被外界所知道,这也就造成了大多数软件开发商无法使用这种界面风格。要想实现这些效果,有时候非常困难,甚至是不可能的。

再比如,Windows操作系统功能强大,但是因为不清楚其内部结构和具体的实现方法,研究和学习操作系统的人都无法学习到其先进之处,也不能够继续发展。

例子很多。所以就有人开始提倡开放源代码,能够促进知识共享和发展。典型的案例就是Linux操作系统的兴起。这里我不想探讨Linux操作系统如何兴起的,我也不想讨论开源带来的后果,但有一点是肯定的,借着Linux的东风,开源运动蓬勃兴起。

但是,并不是开放了源代码就解决了一切问题。也并不是所有开放源代码的人肚子里面都是一个想法。事实上,开放源代码现在成为了掩盖很多问题的挡箭牌。

最开始的问题就是,开放源代码和软件是否免费是不是一回事情。很多人理解开放源代码就是免费软件的意思。的确,很多开源软件都是免费软件。所以,现在很多人推崇开源软件的真实原因在于这些软件免费。

然而,仔细想一想就知道了,免费就意味着,软件的开发者和使用者之间的天然契约——消费关系不存在了。那么,又如何约束双方的行为呢?使用者如何不非法利用源代码,开发者又如何承担相应的义务呢?

在现实中,大多数免费的开源软件都没有明确这方面的信息。开发者对提供的开源软件不符任何责任,也不承担提供技术支持的义务。使用者也有可能非法使用这些软件,比如在商业软件中使用这些开源的代码。或者是使用源代码来对其他用户进行攻击。

第二方面的问题就是知识产权的问题。开放了源代码,那么,软件这一智慧结晶怎么保护呢?假设,一个公司花了很大的人力和财力开发一个软件,一旦公开了源代码之后,怎么能够通过这个产品来盈利,来进行发展呢?微软就是因为这个原因拒绝提供其大多数软件的源代码。

当然,现实中有很多变通的例子。比方说,IBM和Sun公司,都是很重要的商业软件公司,但同时又是开源运动的支持者。两家公司捐献了很多产品的源代码给开源社区,如Eclipse、Solaris、Java Platform,堪称开源的典范。可是,两家公司又都从开源中得到了不小的好处。IBM通过开源Eclipse,为自己的闭源产品WebSphere、DB2打开了销路。Sun通过开放Solaris和Java Platform,吸引了更多人关注其服务器套件产品。通俗地讲,这是放长线钓大鱼。这些商业公司的初衷和提倡开源运动的某些死硬份子的想法是迥然不同的。

最后一个问题也是最关键的问题就是,对于用户来说,开放源代码重要吗?

你是否因为不知道电视机的内部结构和实现过程就对使用电视机没有自信了呢?你是否因为不清楚短信收发的过程和编码技术就不敢使用手机了呢?

同样的道理,任何用户都不清楚Windows的源代码,但是这妨碍Windows成为最普及的操作系统吗?

答案很明显。换个角度,你让一个普通用户使用Linux和Windows,然后让其选择一个其更喜欢的系统,答案应该也是很显然的。

我一直坚信,对于普通用户,开放源代码实际上是很危险的。任何用户如果都能够很容易接触到操作系统的源代码,则要安全使用操作系统基本上就是不可能的了。即便是对专业人士来说,除开工作需要和研究,很少有人愿意去了解其使用的每一款软件的源代码,这不符合人们的习惯。

开源不开源现在来说,其重要性仅仅是对某些软件开发者而言,对于普通用户现在还看不出优势和劣势。同时,开源更和国家利益没有必然的联系,更不是什么支持民族产业的理由。希望大家理性看待开源的软件和运动。

没有评论: