1983年Richard Stallman提出了自由软件(Free Software)的概念,1998年Chris Peterson提出了开源软件(Open Source Software)的概念,自由软件和开源软件有共性也有区别。有人说,这可看作为观察同一类事物的具有不同价值取向的两种角度;两者都致力于突破专用软件(私有软件)的约束和包围;对各自的开放源代码的许可证,两者对“被许可人权利”的“限制”在严、宽的程度有所不同;正如Apache创始人Brain Behlendorf所说的那样,无论是自由软件还是开源软件,都一直处于“利他主义(Altruism)和利己主义(Capitalism)”既斗争又合作的漩涡之中,自由软件当然主张纯粹的“利他主义”,而开源软件则力求从中取得平衡点。开源软件相对于自由软件有两点“发展”:(1)在一定程度上开源软件可与私有软件相连接,(2)允许开源软件建立商业模式;开源软件在继承并融合自由软件哲学理念的基础上,在发展中形成多元的指导思想;开源软件可以包容自由软件。自由软件与开源软件在价值观念和实现方式上是可以互补的,在原创性开发和规模化发展上也是互补的,我们通常可以把他们看成是一体,统称为自由/开源软件(FLOSS,Free/Libre and Open Source Software)。10年来,自由软件与开源软件两个概念的争论,延绵不断、时急时缓,其中也不乏相互妥协与包容。几年前我们曾讲过:“不要挑动自由软件与开源软件之间的分裂”,“不要热衷于搞内耗”,“自由、开源软件,合则两利,分则俱伤”。
自由软件的创始人曾认为:“开发、传播自由软件是一项政治运动,一项社会工程,是使用技术手段来进行社会变革的自由运动”。我认为,唱这样泛政治化的调子非学者所为,似乎对自由软件及其作用,估计过高了,我们还应该把它从“神坛”上请到人间来。
在历史上自由软件的概念有多种解释,但多数人认同的概念是:自由软件的原作者们放弃自己知识产权的权利,向公众开放许可,不但开放源程序代码,而且鼓励人们自由使用、自由复制、自由修改、自由演绎和自由发布,在全球各地创立一种自由开发、使用和传播的环境,核心是保证自由传播,自由软件在传播过程中一直要保持自由。人们对自由软件进行修改、改进和再发布时,要严格接受自由软件的运行规则,即在自由软件的许可证中,不允许被许可人将本许可证许可的源程序代码的修改或演绎版本,以其他的许可证方式再许可。
自由软件强调其价值观念、文化特征、伦理道德或哲学理念(即看世界的方法)。
1983年Richard Stallman本着自由、开放、共享、协作、奉献的价值观念,面对当时充斥全球的专用软件逆流而动,提出了自由软件的概念;写出《GNU宣言》(GNU Manifesto,作者注:GNU一词,从字面上讲,即GNU’s Not Unix,GNU作为自由软件操作系统不是当时著名的Unix操作系统,含义为自由软件运动的组织、计划、技术、体系、工程);启动GNU工程,企图通过不受约束的操作系统、应用程序与编程工具,来开发、推动自由软件模式;建立通用公共许可证(GPL,Gereral Public License,一种主要的自由软件的运行规则);提出“左版”(Copyleft)版权;并创建自由软件基金会(FSF,Free Software Foundation)。
自由软件基金会致力于GNU系统的编写工作,唯一缺乏的构件是一个操作系统内核,由于种种原因,GNU自由操作系统的内核Hurd一直没有开发成功,恰巧在1991年Linus Torvalds开发了Linux操作系统(即Linux内核,Linux Kernel),FSF随即把Linux(Kernel)作为GNU操作系统的内核,并将Linux(Kernel)在GNU GPL发布,从而使一个完整的、可运行的、自由软件操作系统得以实现。Richard Stallman一直认为自由软件和开源软件在基本原理上存在着分歧,但它们或多或少在行动上一致,可以在许多项目上一起工作;他认为开源是一个方法论问题,实用问题,是一种开发模式;自由软件运动的“敌人”是私有软件,开源运动是“同盟军”,他不反对开源运动。
有趣的是,Linux(Kernel)的开发成功,使自由软件运动实现了关键性突破(即推出GNU Linux操作系统),Richard Stallman自然把Linux(Kernel)称之为自由软件(实际上也是迄今为止一种主要的自由软件),对此Linus Torvalds也表赞同,但他后来更多地称之为开源软件。
GPL、BSD和Artistic均被认为是自由软件许可证的范例(我看BSD作为自由软件许可证有点勉强,它似乎阻断了自由传播),实际上,GPL是一种主要的自由软件许可证,不但大多数自由软件是依照GPL发布的,很多主流的开源软件也是依照GPL发布的,在现有约60多种自由、开源软件许可证中,使用GPL的占65.8%,占绝大多数。所以作为自由软件许可证的限制措施:在被许可人进行修改或演绎的版本作再发布时,不得以其他的许可证方式再许可,严格限制了在传播中出现两种不同许可证的冲突,其实对自由软件而言,一旦发生冲突,主要是不同许可证与GPL许可证之间的冲突。
对许可证的限制,开源软件要比自由软件宽松、灵活一些。从自由/开源运动自身的利益出发,在自由软件向开源软件演变时,要求对其许可证限制的规定能作变通处理。1998年就在“变通处理“问题上,引爆了自由软件与开源软件的一场争论。争论是围绕Linux操作系统扩展问题展开的:随着Linux的发展,早期Linux由其内核作其代表已不能满足用户对其功能扩大的需求,期望Linux扩展,随着Linux纳入了各种“库函数”进行扩展时,人们发现在其中的C库(glibC)中,有一些库函数是专用软件。当然Linux(Kernel)模块在执行自由软件许可证即通用公共许可证(GPL)时,是没有问题的,但在与库函数模块相连时,就要对许可证作变通处理,如执行次级通用公共许可证(LGPL,Lesser General Public License);而且当时有人提出,要把GPL和LGPL都认定为“开源许可证”。1998年自由软件与开源软件的争论,涉及到学术和意识形态领域,这场争论随着Richard Stallman的妥协而日渐平息,最终开源相对占居了上风。

openSUSE 11.1正式版
Ubuntu 8.10后版本将
Linux之父李纳斯托瓦
[图文]惠普10寸小上网
Intel:Linux将统治Ne
Ubuntu 8.10 全部官方
Ubuntu 9.04将在2009
Ubuntu官方发布Ubuntu