论开源文化(一)
唐永忠
0 研究开源文化的战略意义
我们在这里深入讨论“开源文化”,原因在于三点:
第1:没有对开源文化的深入研究,开源文化的建设就只能是无源之水;
第2:没有开源文化的建设,开源社区就只能是一种相对简单的兴趣共同体;
第3:只能作为简单兴趣共同体的开源社区,难以真正发展成为与软件开发企业相抗衡的软件开发组织。
1 “开源”的含义
本文所研究的“开源文化”,特指“开源社区”健康发展所需要的的文化;而“开源社区”(Open Source Community)更准确的名称是“开源软件社区”(Open Source Software Community);而“开源软件”(Open Source Software)则是“开放源代码软件”的简称。因此,要想诠释“开源文化”,必须先解释什么是“开源社区”;而要想解释“开源社区”,就必须先解释什么是“开源软件”;而要想解释“开源软件”,就必须先解释什么是“源代码”(Source Code)。
1.1 “源代码”释义
源代码,也称源程序,是指人类可以读懂的计算机语言指令。之所以被称为“源代码”,在于2点:
(1)目标代码之源。电子计算机只能读懂以机器语言表达出来的目标代码,它读不懂源代码。但人们直接通过机器语言编写目标代码,既不符合人的语言习惯,也十分低效。因此,人们通过近似于日常语言的高级语言来编写源代码,然后通过计算机系统中的编译器,源代码就可以转换为电子计算机可以读懂的目标代码。这样做,既符合人运用语言的习惯,也更为高效。从这一点来说,源代码是相应的目标代码的源。
(2)后续相关软件代码的源。对于程序员来说,看到1款软件的源代码,就能够读懂软件设计者关于这款软件的设计构思,而如果读懂了1款软件的源代码,在理论上讲,就可以在其基础上开发出一系列的后续软件。从这一点来说,1款软件的工作代码是后续软件工作代码的源。
在某种意义上讲,开源软件才是软件产业的本源。1969年,美国电报电话公司(AT&T)贝尔实验室的研究人员Ken Thompson编写了UINX的第一个版本,这是一个多用户、多任务的操作系统,整个七十年代,它都在免费传播,从而迅速成为在大学和研究机构中很流行的系统。UINX是人类第1个用高级语言(C语言)编写并有较高的运行效率的系统,是使用源代码的软件的先驱,也是开源软件的先驱
虽然开源软件是软件产业的本源,但是,今天的软件产业的主流却不是开源软件,而是“私有软件”(Proprietary Software)。因此,研究开源软件,就不得不谈及私有软件。
1.2 “私有软件”释义
1976年2月3日,这是一个人类计算机软件产业永远值得铭记的日子。在这一天,Bill Gates发表了著名的《Open Letter to Hobbyists》(致电脑业余爱好者的一封公开信),在这封公开信中,Bill Gates明确提出软件应该具有“CopyRight”(版权)。这封公开信奠定了软件产品“CopyRight”的理论基础,也促使私有软件成为软件产业发展的主流。
“Copy Right”理念的提出,必然导致源代码被彻底被封闭起来,这是因为3点:
1) 不封闭源代码,必然导致一些非本软件开发企业的程序员以免费方式获得源代码,并以此无偿使用这款软件来获利,而该软件开发企业难以收回开发成本;
2) 不封闭源代码,一旦非本软件开发企业的程序员读懂了这款软件的源代码,他就可以在此基础上开发出一系列的延伸软件,而这些后续软件必然与本软件开发企业自行开发的后续软件产生竞争,这将严重损害本软件开发企业的利益;
3) 即使本软件开发企业并不准备自行开发后续软件,其他程序员开发的后续软件的“Copy Right”也存在着难以合理界定的难题。
从这个意义上讲,私有软件就是闭源软件。
客观地讲,Bill Gates的“Copy Right”理念以及私有软件的兴起,对于推动软件产业的兴旺功不可没。
但是,Microsoft等私有软件厂商对于软件市场的垄断,引发了用户和广大软件开发者的强烈不满,兴起了反对私有软件理念的运动,开源软件就是这种运动的重要组成部分。
首先兴起的私有软件运动,是自由软件运动(Free Software Movement),它是开源软件运动的先河,因此,在诠释开源软件之前,应该先介绍一下自由软件。
1.3 “自由软件”释义
1983年,MIT的Richard Stallman 开始倡导自由软件运动。1985年,Stallman等人创建了自由软件基金会(Free Software Foundation,简称FSF)。
Stallman提出了与“Copy Right”理念针锋相对的“Copy Left”(许可复制权)理念,其表现形式是GPL,即公共许可证(General Pubic License)。
按照Stallman的了解,自由软件应该是具有如下4大自由的软件:
1) 自由之0:出于任何目的运行该软件的自由;
2) 自由之1:有研究该软件如何运行并加以改进使之更符合自己需要的自由;
3) 自由之2:有重新发布以帮助邻里的自由;
4) 自由之3:有改善程序,公布改进方案(和通常的修订版)以推动整个社区利益的自由。
1991年,Linus Torvalds开发出Linux,并接受“Copy Left”理念,使得自由软件运动有了自己可以与Microsoft的Windows相抗衡的操作系统。自由软件运动初战成功。
但是,自由软件运动关于自由的追求,毕竟和现实的商业氛围格格不入,带有着过于理想化的色彩。这种反商业的信条,让一些本来也反对私有软件的人士对自由软件敬而远之。
正是在这种背景下,一部分原有自由软件运动人士,如Eric Raymond,开始尝试将理想的自由软件与现实的商业氛围进行某种衔接,这就是本文所涉及的开源软件运动。
1.4 “开源软件”释义
1998年2月,Eric Raymond等人正式创立“Open Source Software”(开源软件)这一名称,并组建了开放源代码(软件)创始组织(Open Source Initiative Association,简称OSI)。
OSI曾给出了开源软件的标准定义。按照OSI的定义,开源软件是指允许任何人使用、拷贝、修改、分发(免费/少许收费)的软件,它必须满足以下6个条件:
1) 允许自由地再发布软件;
2) 要求程序的源代码是可获得的;
3) 可以修改和派生新的软件,并可以重新发布;
4) 发布时保持软件源代码的完整性;
5) 许可证不对任何个人或群体有歧视,许可证不得歧视任何应用领域;
6) 与程序有关的权利必须适用于任何重新发布的程序,不需要得到附加的其它许可证的许可。
用一句话概括,开源软件就是源代码开放且可以自由复制的软件。
开源软件运动超越自由软件运动的地方在于,它既抓住了私有软件的Achilles Heel(阿基里斯之踵),即封闭源代码,又可以实现与商业氛围的结合。
1.5 “开源社区”释义
由于以Microsoft为代表的私有软件企业占据着软件产业的主流地位,开源软件要想生存和发展,就必须在组织形式上进行创新。这一创新是由Eric Raymond在1998年提出的,他在被堪称开源软件的(大教堂和市集)中正式提出了“开源社区”模式(Raymond将开源社区形象地比喻为“市集”)。
开源社区是开源软件开发最重要的组织形式,是由所有参与开发和改进可以软件的爱好者所组成的社区。
2002年,Seidel发表了论文(关于C型组织的最初描述),认为开源社区是一种新的组织结构,他将这种新的组织结构命名为“C 型”组织。Seidel认为“C 型”组织有6个基本特征:
1) 没有正式的组织边界;
2) 追求更高目标的强有力的团队文化;
3) 所进行的工作没有物质报酬——免费公布产品的源文件;
4) 没有商业秘密——所有的开发工作都是在互联网上公开进行的;
5) 联络方式经济有效(通过互联网);
6) 项目最初源自于兴趣而不是基于市场调研。
Lerner和Tirole在2001年发表论文,他们经过研究发现,开源社区往往由核心团队、领导者用户、跟随用户、商业企业组成。其中,核心团队居于整个社区的中心,是非制度化的、动态的社群领导者。开源软件的领导者往往具有如下2个特征:
1) 领导者都是项目初始代码的开发者或早期的重要贡献者;
2) 在软件后期发展中,不一定是重要的贡献者,而是项目管理者,并具有可信的管理者地位。
从上述关于开源社区的分析可以看出,开源社区这种组织有着不同于软件开发企业的本质特征,这种本质特征就在于,软件开发企业内部的各个员工是基于利益关系而组织在一起的,而开源社区内部的各个成员是基于兴趣而走到一起的。
从这个角度来说,软件开发企业是一种利益组织,而开源社区是一种兴趣组织。
1.6 “开放社区”释义
对于开源社区这种软件开发组织,西方学者进行了更加深入的研究,他们提出了更为深刻的理解,这就是“开放社区”, (Free/Open Communities)。
Tzouris在2002年发表了论文——A Multidisciplinary Study>(软件自由、开源软件和参与者动机——一项多学科的研究),在这篇论文中,Tzouris首先提出,开源社区应该是“开放社区”,他界定了开放社区的4个基本特征:
1) 共享的标准化和原则性的信念:指的是基于共同理解的为软件作贡献的共享的价值理念;
2) 共享的因果信念:指的是对因果和报酬结构的共同理解;
3) 对合法有效性的共同意见:指的是贡献者对目前问题采用的解决方案的有效性具有一致意见;
4) 共同政策企业:指的是能够通过为软件提供源代码实现的共同目标。
Reagle在2003年发表了论文,在这篇论文中,Reagle也认为开源社区应该是“开放社区”,他认为“开放社区”应该具有如下5个特征:
1) 开放的产品:提供满足开放源代码定义的产品;
2) 透明性:可以获得所有的程序、规则、决定和原理;
3) 完整性:确保所有的程序和参与者贡献的完整性;
4) 不歧视:禁止对个人、团体或与社区活动不相关的特征的歧视,应客观评价个人和建议的优缺点,领导阶层应属于精英分子或建立在民主选举基础上;
5) 不干涉:这是开放的关键,如果参与者不同意前几条的标准,他们可以带走自己的产品在他们自己的概念标准下着手自己的工作,不受任何干涉。
1.7 “开放文化”内涵初探
如果仅仅凭借兴趣,开源社区是难以发展壮大起来的,开源社区要想真正发展壮大到可以和巨型软件开发企业进行有效的竞争,就必须在兴趣的基础上,形成共同的文化,也就是要将开源社区从兴趣组织发展为文化组织。
这一点,前文所提到的Seidel、Tzouris和Reagle这3位学者都已经认识到这一点。
Seidel认为“C 型”组织应该“追求更高目标的强有力的团队文化(‘C 型’组织的第2个特征)”。
Tzouris关于开放社区的4个基本特征的研究,实际上都是指开源社区的文化特征。
Reagle认为开放社区应该具有的“不歧视”和“不干涉”也都是关于开源社区文化的界定。
西方学者关于开源社区所应具有的文化特征的研究成果,在一定程度上已经初步揭示了本文所指的开源文化的内涵。
当然,在本文看来,这些学者关于开源文化内涵的理解,无论在全面上,还是深入上,都有不足,还需要本文展开进一步的研究。