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)。