笔者虽然对开源软件(Opensoft)作了较为长久的研究,也写了关于几篇关于它的分析文章,虽然在这些文章中有过关于它的概念性探讨,但从来没有试图给过关于它的定义,或者说揭露其内涵。这并不是说笔者没有意识到探讨其内涵的重要性,而是鉴于人们对开源软件的普遍看法和认识,太过轻易地否定先行者的看法,提出新的观点,那是极不负责任的。经过长达半年之久的历史追溯和专门研究,笔者意识到,想穷究一个事物的内涵,或者说一劳永逸地给出一个定义是不可能的,也是毫无意义的。
有鉴于此,笔者希望能阶段性地阐述自己的观点,也算是一段时间研究的小结。
对于开源软件的定义或内涵的解释,之所以存在较大差别或者本质的差别,在于人们看待开源软件的出发点和剖析的角度不同。此前,人们在摸索开源软件的定义和内涵时,大都是从开源软件本身出发,企图解释其内在的精神意义,而笔者则是从从事和支持开源软件的人身上寻求其所代表的精神追求。
毫无疑问,说开源软件具有何种精神,实际上还是在说开源软件从业者的精神,只不过他们的精神被附着在开源软件身上罢了。但是,所谓失之毫厘,迥以千里。从开源软件身上探索其所代表的精神,更容易让人们陷于其文字意义上的剖析和组合,从而陷于虚幻,趋于不切实际。从开源软件从业者身上来探讨开源软件的精神则不同,可以廊括各式人等伏诸于开源软件的意义和精神。
此前,人们对开源软件的界定主要有两层涵义:第一层认为开源软件意味着免费。开源软件的另一种说法自由软件(Freesoft),其实就是从这个角度来描述的。在英文中,Free一字本身就意味着免费,因此Freesoft就让开源软件蒙上了免费软件的外衣;第二层涵义意指开源软件的源代码是开放的,相对于商业软件的开放性。其实,开源软件虽然提倡源代码开放,但从当前的发展情况来看,开源软件的开放是不彻底的,它与商业软件的差别只不过是开放程度的不同而已。
众所周知,开源软件的开发者、主要是首创者和核心代码开发者,考虑到自身的利益,或者是为了制约商业软件的竞争对手,在开放源代码时通常会有所保留,这意味着开放源码也是有限度的;而商业软件呢,为了便于自身的推广,为了其他软件能与其兼容,也会开放部分源代码。随着人们软件兼容性的认识,即使商业软件拥有者不打算开放源代码,也会受到政府部门和企业的强制要求,让其开放源代码。对此,微软可谓典型。去年,迫于Openoffice.org成为国际办公软件标准的压力,微软不得不公开宣称将开放MS Office的源代码,以便能使自己办公软件成为国际标准。而当前,在欧盟的紧逼下,开放更多的Windows源代码只不过是早晚的事。从这层意义上来说,无论是开源软件还是商业软件都存在开放源代码的说法,开源软件并没有完全开放,商业软件也没有完全不开放,单从是否开放而言,两者没有本质的差别,只有度的不同。
身兼开放源代码应用基金会(OSAF)总裁、主席和Mozilla基金会主席的Kapor先生表示,他所领导的两个基金会并不是要创建新的杀手程序,而是要利用开源软件的模式削弱微软在网络浏览器和电子邮件软件领域的垄断地位。无疑,开源软件的出现让人们多了一种选择,也让人们意识到部分商业软件的高额垄断利润。从这层意义上说,有人把开源软件的精神内涵界定为挑战他人。
但是在笔者看来,这期间固然有挑战他人的意义,但如果这样界定的话,就会扼杀开源软件从业者的持续或永久的创造性。在这儿笔者觉得更应该强调开源软件挑战自我的精神意义。
软件被误解为“免费软件”,以致于被误解为无商业化经营的可能性。事实上,Free所代表的是“自由”,即代表开放源码自由传播的开放性,而非成本上的“免费”。“对大部分开源软件开发者来说,他们没有任何利益上的诉求,与其说他们是在挑战权威,不如说他们在挑战自我,追求技术上的突破和挑战。”由于开源软件有着没有成本的开发基础,这为许多不着一文、没有任何经济基础的人从事开发提供了可能。其实,作为个体从事开源软件开发的人,除了部分有组织有计划的开发者,可能是企业领袖或管理人员、大学教授、科研机构的科研人员,大部分都是赤条条来赤条条去的人物,诸如学生(主要是大学生和高中生)、下岗工人、业余从事开发的蓝领工作者等。对于他们来说,开发软件是一种爱好和生活需求,或借以打发业余时间,或为了证明自己,首先考虑的并不是经济问题;对于他们来说,虽然初衷有可能是为了挑战微软等商业巨头的垄断地位,但最终体现的却是对自我能力、水平和天赋极限的挑战和突破。
可以说挑战自我是开源软件体现的第一重精神境界,也可以说是开源软件开发者的终极追求之一;开源软件的第二重精神境界则是对团队精神的追求。
为什么这样说呢?上面我们提到,以个体存在的大部分开源软件的开发者,都是在经济上谈不上富有的人,他们没有经济实力通过招募、雇佣来进行集体开发。而鉴于大型软件的开发需要,单个的个体显然无法完成那么浩大的开发工程。而为了完成开源软件挑战商业软件的固有使命,人们惟有通过合作来实现。这点不难理解,单个个体虽然可以开发出无数的小型软件,其意义也不容低估,但是真正在社会上产生影响的,还是像操作系统、办公软件和浏览器那样的大型软件,正因为此,Linux和火狐甫一面世就会受到人们的追捧,而其他数以亿计的小软件,虽然也有不少人使用,但却鲜有受到整个社会青睐和宣传的。
这样一来,经过人们的摸索和长期追求,大家逐渐认识到团结合作的重要性,这时候团队精神便开始在开源软件开发者身上体现出来。这种团队精神,在国外以开源社区的形式存在,在国内虽然也有,但数量远远不够,还不足以形成规模。此前,两院院士倪光南就曾表示,开源社区的不足是制约中国开源软件业发展的桎梏。在去年“开源中国社区”成立时,中国开源软件推进联盟主席陆首群先生表示,我国开源软件的发展需要一个健全的社区开发机制,而“开源中国社区”的成立将有助于在国内建立一套以社区为中心的开源开发机制,通过国内联合与国际合作,才有可能实现与国际接轨,避免低水平的重复,培养出我们自己的软件大师,形成具有竞争力的国际性的开源项目。这其实也解释了开源软件业对合作和团队精神的需求。
我想,随着人们对开源软件挑战自我和团队精神两大内涵的认识,开源软件业必将携无可抵挡之势,形成对商业软件帝国的挑战和颠覆。