评自由软件与开源软件的概念纷争 samp自由城开源

评自由软件与开源软件的概念纷争 samp自由城开源

中国开源软件推进联盟主席 陆首群

1983年Richard Stallman提出了自由软件(Free Software)的概念,1998年ChrisPeterson提出了开源软件(Open SourceSoftware)的概念,自由软件和开源软件有共性也有区别。有人说,这可看作为观察同一类事物的具有不同价值取向的两种角度;两者都致力于突破专用软件(私有软件)的约束和包围;对各自的开放源代码的许可证,两者对“被许可人权利”的“限制”在严、宽的程度有所不同;正如Apache创始人BrainBehlendorf所说的那样,无论是自由软件还是开源软件,都一直处于“利他主义(Altruism)和利己主义(Capitalism)”既斗争又合作的漩涡之中,自由软件当然主张纯粹的“利他主义”,而开源软件则力求从中取得平衡点。开源软件相对于自由软件有两点“发展”:(1)在一定程度上开源软件可与私有软件相连接,(2)允许开源软件建立商业模式;开源软件在继承并融合自由软件哲学理念的基础上,在发展中形成多元的指导思想;开源软件可以包容自由软件。自由软件与开源软件在价值观念和实现方式上是可以互补的,在原创性开发和规模化发展上也是互补的,我们通常可以把他们看成是一体,统称为自由/开源软件(FLOSS,Free/Libreand Open SourceSoftware)。10年来,自由软件与开源软件两个概念的争论,延绵不断、时急时缓,其中也不乏相互妥协与包容。几年前我曾讲过:“不要挑动自由软件与开源软件之间的分裂”,“不要热衷于搞内耗”,“自由、开源软件,合则两利,分则俱伤”。

自由软件的创始人曾认为:“开发、传播自由软件是一项政治运动,一项社会工程,是使用技术手段来进行社会变革的自由运动”。我认为,唱这样泛政治化的调子非学者所为,似乎对自由软件及其作用,估计过高了,我们还应该把它从“神坛”上请到人间来。

在历史上自由软件的概念有多种解释,但多数人认同的概念是:自由软件的原作者们放弃自己知识产权的权利,向公众开放许可,不但开放源程序代码,而且鼓励人们自由使用、自由复制、自由修改、自由演绎和自由发布,在全球各地创立一种自由开发、使用和传播的环境,核心是保证自由传播,自由软件在传播过程中一直要保持自由。人们对自由软件进行修改、改进和再发布时,要严格接受自由软件的运行规则,即在自由软件的许可证中,不允许被许可人将本许可证许可的源程序代码的修改或演绎版本,以其他的许可证方式再许可。

自由软件强调其价值观念、文化特征、伦理道德或哲学理念(即看世界的方法)。

1983年RichardStallman本着自由、开放、共享、协作、奉献的价值观念,面对当时充斥全球的专用软件逆流而动,提出了自由软件的概念;写出《GNU宣言》(GNUManifesto,作者注:GNU一词,从字面上讲,即GNU’s NotUnix,GNU作为自由软件操作系统不是当时著名的Unix操作系统,含义为自由软件运动的组织、计划、技术、体系、工程);启动GNU工程,企图通过不受约束的操作系统、应用程序与编程工具,来开发、推动自由软件模式;建立通用公共许可证(GPL,GereralPublicLicense,一种主要的自由软件的运行规则);提出“左版”(Copyleft)版权;并创建自由软件基金会(FSF,FreeSoftware Foundation)。

自由软件基金会致力于GNU系统的编写工作,唯一缺乏的构件是一个操作系统内核,由于种种原因,GNU自由操作系统的内核Hurd一直没有开发成功,恰巧在1991年LinusTorvalds开发了Linux操作系统(即Linux内核,LinuxKernel),FSF随即把Linux(Kernel)作为GNU操作系统的内核,并将Linux(Kernel)在GNUGPL下发布,从而使一个完整的、可运行的、自由软件操作系统得以实现。RichardStallman一直认为自由软件和开源软件在基本原理上存在着分歧,但它们或多或少在行动上一致,可以在许多项目上一起工作;他认为开源是一个方法论问题,实用问题,是一种开发模式;自由软件运动的“敌人”是私有软件,开源运动是“同盟军”,他不反对开源运动。

有趣的是,Linux(Kernel)的开发成功,使自由软件运动实现了关键性突破(即推出GNU Linux操作系统),RichardStallman自然把Linux(Kernel)称之为自由软件(实际上也是迄今为止一种主要的自由软件),对此LinusTorvalds也表赞同,但他后来更多地称之为开源软件。

GPL、BSD和Artistic均被认为是自由软件许可证的范例(我看BSD作为自由软件许可证有点勉强,它似乎阻断了自由传播),实际上,GPL是一种主要的自由软件许可证,不但大多数自由软件是依照GPL发布的,很多主流的开源软件也是依照GPL发布的,在现有约60多种自由、开源软件许可证中,使用GPL的占65.8%,占绝大多数。所以作为自由软件许可证的限制措施:在被许可人进行修改或演绎的版本作再发布时,不得以其他的许可证方式再许可,严格限制了在传播中出现两种不同许可证的冲突,其实对自由软件而言,一旦发生冲突,主要是不同许可证与GPL许可证之间的冲突。

对许可证的限制,开源软件要比自由软件宽松、灵活一些。从自由/开源运动自身的利益出发,在自由软件向开源软件演变时,要求对其许可证限制的规定能作变通处理。1998年就在“变通处理“问题上,引爆了自由软件与开源软件的一场争论。争论是围绕Linux操作系统扩展问题展开的:随着Linux的发展,早期Linux由其内核作其代表已不能满足用户对其功能扩大的需求,期望Linux扩展,随着Linux纳入了各种“库函数”进行扩展时,人们发现在其中的C库(glibC)中,有一些库函数是专用软件。当然Linux(Kernel)模块在执行自由软件许可证即通用公共许可证(GPL)时,是没有问题的,但在与库函数模块相连时,就要对许可证作变通处理,如执行次级通用公共许可证(LGPL,LesserGeneral PublicLicense);而且当时有人提出,要把GPL和LGPL都认定为“开源许可证”。1998年自由软件与开源软件的争论,涉及到学术和意识形态领域,这场争论随着RichardStallman的妥协而日渐平息,最终开源相对占居了上风。

这样,开源软件虽然在连接专用软件问题上有所“发展”,但也有一定限制,即不允许附加的专用软件占主导地位;或者说,在由不同模块组成的开源软件中,允许出现不同许可证并存于一体的局面,也有所突破,但这时也要求附加软件模块所执行的另外一种许可证不占主导地位。

开源(OpenSource)的概念是由Chris Peterson提出来的,开源的定义取自BrucePerens为Debian社区起草的“自由软件指导方针”,该方针支持在DebianGNU/Linux自由软件平台上可运行及开发非自由软件用户,但不允许该平台依赖于任何非自由软件(作者认为,这里说的自由软件似改为开源软件为宜)。结合我们上面讲的,这项方针体现开源软件较之自由软件的第一个“发展”。另外该方针还体现从务实的商业立场来发展和传播开源软件的观点,这是开源软件较之自由软件的第二个“发展”。

自由软件运动一直试图改变世界,却忘记当今这个世界是用知识产权堆砌起来的,自由软件运动冲击专用软件和专利、版权(右版)制度,威胁到一些私有商业软件企业,他们已开始反击。

自由软件运动厌恶并摒弃商业行为,但如果它还不愿与开源运动合作,它就突破不了自身“技术发烧友”的狭隘圈子,难以持续发展,做大做强,不可能在软件市场上形成主流,也无法在社会上广泛传播。自由软件不能光靠自由的理念,以及“左版”版权、开放源程序代码这样的善良意图,不能光凭自己的所谓道德力量,这是打不赢这场现实激烈的“战争”的。

有人说,如果没有Linux(Kernel),就不可能推动自由软件运动(GNU)的成长;如果没有RedHat(指实现Linux商业化),Linux就不可能成为主流操作系统。我认为,这种说法是很有道理的。

自由软件与开源软件是可以互补的;在一定意义上开源软件运动可以包容自由软件运动。

开源软件同样坚持开放源程序代码,执行“左版”版权和自由/开源软件许可证,如前所述,开源软件尊重自由软件的价值观念,并在其主要部分继承和融合了这些理念;但开源软件在发展中形成了多元指导思想。除继承、融合自由软件的价值观外,它还有所创新和“发展”:开源软件要求把RichardStallman所坚持的“开发者第一、使用者第二”的观念颠倒过来,即从主要强调“开发者使用程序的自由性”改变为更强调“使用者使用的方便性”;开源软件不主张把“伦理”与“实现”对立起来,而主张统一起来(事实上,Stallman在总结Linux取得成就的主要原因时一度也认承:不认为是代表自由软件理念的GPL规则起的作用,而是LinusTorvalds找到的社区实现方式起的作用);开源软件不主张搞泛政治化,要求实现商业化(当然这与专用软件的商业化是有区别的,开源软件要求创建一种便民的低成本销售模式,或支持SaaS,创建一种“软件免费、服务收费”的模式)。

自由/开源软件开发的全过程,一般是由社区进行“自由软件项目”的原创性开发,与由企业(或发行商)进行“开源软件产品”的工程化开发两个阶段组成的。

由全球志愿者组成的社区其开发机制是:集体开发、合作创新、对等评估;社区开发不直接考虑市场需求,没有开发路线图,没有商业模式,其推出的“社区发行版”可在网上自由免费下载,社区不负责对已往的发行版进行持续回馈式的纠错改错、打补丁(BugFix, Patch ),也不负责向公众或用户提供支持或服务。

社区版充满很多原创性的亮点,但它在总体上质量还不够稳定,性能还不够成熟,它只是一个研发“项目”,还不是一个“产品”,距产品化尚有距离。国内有人认为国际上一些著名社区(如LinuxKernel,Ubuntu等)推出了优秀“产品”,其实这是误解,他们研发了优秀“项目”,有很多优秀成果,但决不是优秀“产品”;而且如果只是社区的研发成果,可以肯定还有很多不完善之处。国内有人设想在这个阶段能够实现“自主创新”,拥有“自主知识产权”,这只能是不现实的空想。社区开发的自由软件“项目”,遵循左版版权、执行GPL许可证,有人在网上免费下载后,对源代码进行修改并再发行,这时如果想摒弃原来的GPL许可证于不顾,照样可能遭遇法律追究的责任(如果像Google那样,进行修改后不再发行,而转化为提供服务,这是可行的)。

企业在社区对自由软件“项目”进行原创性开发的基础上,进一步开发工程化实现技术,实现开源软件的“产品”化工作。工程化实现技术由专用技术、工程经验、质量认证、兼容性测试技术等组成,工程化实现技术可催化自由软件研发“项目”促使其更加稳定、优质、高效、成熟,实现原创软件“产品”化。社区开发阶段与企业开发阶段结合和互补,实际上是将社区的分布式开发成果与企业的工业开发流程的无缝结合,不但实现“产品”化,而且为“产业”腾飞创造条件。在开源软件产品中的工程化实现技术是可以不公开的,也就是在这里,在这个阶段,可以“自主创新”,可以“拥有自主知识产权”。开源软件是具有商业模式的,从其发展的角度出发,开源软件需要实现商业化,认识到可以用开源来构建商业模式是一个巨大的进步,商业化对于开源软件不应视为高度敏感的“雷区”,商业化绝不会毁掉开源。开源软件只有实现商业化才能持续发展,做大做强,在市场上真正冲击专用软件的垄断地位,形成主流的竞争形势。

开源软件虽然需要商业化,但也要防止其过度无限制的发展,防范有关“资本”或“商业”活动对开源的侵蚀。在自由/开源软件运动冲击下,近来一些私有商业软件企业在进行自身适度“开源”的同时,以兼并、“结盟”、组建“产业链(生态系统)”和成立社区“基金会”的名义,运用将自己在标准、专利、技术、人才、资金和市场等方面的优势地位,在推动这些“合作”中,或在建立技术平台上,力图抓住自己的“主导地位”,“反客为主”,这些动态在自由/开源软件队伍中引发了不同的反应和争论,RichardStallman近来关于自由软件和开源软件的一些言论,似乎有点过激或有些反复,恐怕与他在这方面的受到的刺激和担忧有关。

在自由/开源软件队伍中,我们不时会听到对RichardStallman批评的声浪,来自BSD社区的评击尤为激烈;在推行GPLv3自由/开源软件许可证时,出现了LinusTolvalds与Richard Stallman意见相左的情况,去年RichardStallman的主要助手、自由软件基金会首席法律顾问Eben Moglen也离他而去。

我还是那句话,自由软件与开源软件宜合不宜分。

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/110518.html

更多阅读

开源软件相关概念三 详解GPL许可 gpl许可

30、 什么是“copyright”?“CopyRight”在英文中是“版权”的意思,相当于我国的“著作权”。指的是作者对其创作的文学、艺术和科学作品依法享有的专有权利,包括发表权,署名权,修改权,保护作品完整权,使用权和获得报酬权等。Copyright是

声明:《评自由软件与开源软件的概念纷争 samp自由城开源》为网友微笑男孩分享!如侵犯到您的合法权益请联系我们删除