计算机是迄今人类是伟大的发明创造之一,它的应用领域已经从最初的数学计算扩展到社会的各个领域。今天的计算机不仅仅是一种计算工具,还是工业控制装置、通信设备、娱乐工具……从系统科学的观点来看,任何计算机都是由硬件系统和软件系统组成的。硬件是计算机技术的物质基础,自计算机发明以来,特别是在20世纪80年代和90年代,计算机的硬件性能得到了惊人的提高和改进。以计算机芯片来说,其集成电路的集成规模越来越大,计算速度越来越快。计算机硬件和生产具有工业时代的一切特征,例如,芯片运算加快的速度和以月份为单位的时间之间要满足摩尔定律,硬件生产必须要追求大规模以降低成本,否则就会被残酷的市场淘汰出局。相比之下,计算机软件生产方式则原始得多,甚至可以说,软件的生产和研制至今仍然停留在手工作坊阶段:一个计算机程序在开发时要经历好几个步骤,而且每一个步骤都要靠人(一个或者多个开发人员、甚至一个或者多个开发小组协作)来操作完成。首先是编写源代码。所谓源代码,是有由程序员书写的源语言程序,它可以是用底层的汇编语言编写,还可以用高级的编译语言来设计,或者用可读性很高的脚本语言来生成,最终都是吩咐计算机按照程序员的意志行事。计算机当然读不懂人编写出的源代码,所以还要把由源代码组成的源文件编译或者汇编成为一条条计算机可执行机器指令,最后机器指令被转换成相应的电信号去驱动计算机完成各种各样的任务。在传统的开发模式下,源文件在编译之后形成的文件称为目标文件,最后,利用链接器(link)将一个(或者多个)目标文件生成二进制的可执行文件。如果一切设计都是高质量的话,得到的二进制可执行文件是可以作为商品出售的。
这些步骤对于作坊里一个的技巧娴熟工匠应该是很容易理解的。生产软件的方法在本质上与几个世纪前在手工作坊里制作一双靴子并没有什么两样。与生产皮鞋不同的是,利用同一个二进制的可执行文件,商家可以花费很少的成本便复制出许多个相同的软件复制品,而一个设计精巧的软件又可以获得消费者的青睐,以很高的价格售出大量的软件复制品。人们现在看到的那些成功的软件公司一本万利的发财秘密就在这里。这些商业性软件公司提供的只是二进制的可执行文件,他们不提供程序的源代码,大家将无法得知他们的软件是怎样开发出来的。在软件贸易中,对于一般用户来说,得到了程序的目标代码就可以使用;程序的源代码并不是必需的。对于软件的所有者来说,由于源代码比较容易阅读和理解,通过对源代码的分析,他人能够了解自己软件中的设计构思;掌握自己软件中的技术秘密,因此通常不希望向用户提供程序的源代码,不过,对于使用水平比较高的用户,为了便于自己排除故障、改进程序、了解程序间互连接口,可能要求得到源代码。因此,在贸易中是否提供程序的源代码,也常常是讨论的焦点之一。
在软件产业的发展过程中,知识产权制度发挥了非常重要的作用。正是知识产权制度的作用,使得软件行业知识创新、产品创新的速度保持高速,使得软件产业在全球迅猛发展。对软件产品的独占权给许多软件公司(特别是大型软件公司)带来了丰厚的利润,极大地提高了它们开发新软件的积极性,微软公司是这方面的最好例证;此外,由于赋予软件公司对其开发的软件的独占的修改权,使得同一种软件的不同版本之间和同一系列的不同软件之间的兼容性加强了,易于实现对文档的互相调用。但与此同时,也出现了负面的情况,传统商业软件公司为了保持其软件的竞争力,往往对源代码保密,软件的开发被局限于公司的内部。对源代码的保密使得很难集众人之力共同对软件性能及其安全性进行改进,而且,软件公司出于自身利益考虑,往往不愿公布它们设计的软件的漏洞,致使许多系统软件存在安全隐患,如果这种不安全的软件使用在国防或其他国民经济重要部门的计算机上,那对于国家秘密的保护是相当不利的。另一方面,源代码的密闭,软件版权的极易取得和较长的保护期,使得软件开发陷入了公共技术领域缺失的窘地,没有哪一项软件开发可以摆脱在先的软件技术,而在先的软件都有至少50年的保护期,于是,新软件的开发举手投足都会面临知识产权侵权的风险。于是出现这样的局面,一方面是大型商业软件公司在知识产权制度的保护下蓬勃发展,而另一方面是软件用户不堪承受高昂的软件价格求助于盗版,版权保护软件走向了两个极端。
软件开发技术的垄断引起了软件用户以及计算机专家的不满,在这样的背景下,1984年,麻省理工学院在软件开发工作者和学者专家中发起了开发自由软件的运动,并且建立了自由软件基金会(Free Software Foundation,FSF)。自由软件的倡导者Richard Stallman在《为什么软件不应有所有者?》一文中指出,软件的编写者将软件“据为己有”看上去天经地义。但必须看到,一个软件并不是单纯的工具,一旦软件的编写者将其传播出去,就不简单地是在提供“工具”,而是在传播“思想”。在这一点上,现有的版权体系采用了所谓保护“表达”(expression),不保护“思想”(Idea)的两分法,为软件保护问题设置了无法解释的障碍,造成了软件的精神分裂。 Stallman试图创造一种有别于传统的知识产权模式,避免垄断、加强软件技术交流与合作的软件发展模式,这种模式要求软件开发者开放源代码,允许任何使用者阅读源代码并可以修改,同时不需要向软件开发者支付使用费,在他的理论下,用户彼此拷贝软件不但不是“盗版”,而是体现了人类天性的互助美德。对Stallman来说,自由是根本,用户可自由共享软件成果,随便拷贝和修改代码。通过版权制度保护计算机软件的根本目的是鼓励创新,保护版权是鼓励创新的一种手段,版权法既要保障软件开发者的权利,以鼓励其开发软件的积极性,又要保证广大软件用户能够接触、使用软件,使全社会共享软件开发者创造的成果。
自由软件的英文称谓是“Free Software”,由于英文中“free”这个字的双重含义,很容易将其理解为“免费”,对此,自由软件基金会(FSF)的版权声明作了明确的解释,“当提到Free Software时,我们指的是自由而不是价格,我们所设计的通用公共许可证是为了保证你有散发自由软件和拷贝的自由” 。自由软件,指的是软件发行时附上程序的源代码,并且授权允许使用者修改的软件。 为了避免“自由”二字代给人们的误解,也便于理解这类开放源代码的本质追求,Eric S.Raymond倡导使用开源软件(open source software)取代自由软件。
自由软件也好,开源软件也好,早期的倡导者都是在理念层面上的追求,随着开源社区的迅猛发展,开源软件种类的增多,开源软件在与商业软件的博弈和共存中走进的商业化。而人们也发现,尽管开源软件的诞生是反知识产权的,但纵观不同种类的开源许可证,他们有一个共同的特点,就是承认版权,不过是在特定的被许可人遵守权利人提出的条件的基础上,由权利人将其软件及其复制品的知识产权的某些权能让渡给特定的被许可人。开源软件并不是否定知识产权,是在承认版权和专利权这类知识产权的基础上而兼顾创新和最终用户的。
中国的开源软件虽然比美国、欧洲等发达国家起步晚,但是近几年得到了快速的发展。2002年上半年,中国的Linux市场处于高速发展的形势,2004年,中国Linux软件市场的销售总量达到3亿元,比去年同期增长20%,Linux的增长率已经连续四年高于操作系统市场的增长率,中国的Linux产业正逐步走向成熟。
虽然开源软件产业已经在中国大地植根,但对于开源软件的法律规则、游戏规则、开源软件产业的文化是否真正被国人所知晓,这都还需要学术界、产业界乃至社会各界的共同努力推动,只有这样,我们才能真正建立自己的开源软件产业,才能融入全球开放源代码的大潮中。