浅谈“开源”文化

    开源(Open Source,开放源码)被非赢利软件组织(美国的Open Source Initiative协会)注册为认证标记,并对其进行了正式的定义,用于描述那些源码可以被公众使用的软件,并且此软件的使用、修改和发行也不受许可证的限制。

   一、 开放源代码的定义由Bruce Perens(曾是Debian的创始人之一)定义如下:

  自由再散布(Free Distribution):获得源代码的人可自由再将此源代码散布。源代码(Source Code):程式的可执行档在散布时,必需随附完整源代码或是可让人方便的事后取得源代码。衍生著作(Derived Works):让人可依此源代码修改后,在依照同一授权条款的情形下再散布。原创作者程式源代码的完整性(Integrity of The Author’s Source Code):意即修改后的版本,需以不同的版本号码以与原始的程式码做分别,保障原始的程式码完整性。不得对任何人或团体有差别待遇(No Discrimination Against Persons or Groups):开放源代码软件不得因性别、团体、国家、族群等设定限制,但若是因为法律规定的情形则为例外(如:美国政府限制高加密软件的出口)。对程式在任何领域内的利用不得有差别待遇(No Discrimination Against Fields of Endeavor):意即不得限制商业使用。散布授权条款(Distribution of License):若软件再散布,必需以同一条款散布之。授权条款不得专属于特定产品(License Must Not Be Specific to a Product):若多个程式组合成一套软件,则当某一开放源代码的程式单独散布时,也必需要符合开放源代码的条件。授权条款不得限制其他软件(License Must Not Restrict Other Software):当某一开放源代码软件与其他非开放源代码软件一起散布时(例如放在同一光碟片),不得限制其他软件的授权条件也要遵照开放源代码的授权。授权条款必须技术中立(License Must Be Technology-Neutral):意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。

   二、开源的相关协议

    (1)GNU GPL

  GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利(国内有名为MacroSkin(2.x)的界面引擎技术采用此份协议开源):

  可自由复制,你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。

  可自由分发在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。

  可以用来盈利你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。

  可自由修改如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用GPL 协议。

  需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有一些问题和限制,你可以看一下PierreJoye 写的Practical Guide to GPL Compliance 一文。使用GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。

    (2)GNU LGPL

  GNU 还有另外一种协议,叫做LGPL (Lesser General Public Licence),它对产品所保留的权利比GPL 少,总的来说,LGPL 适合那些用于非GPL 或非开源产品的开源类库或框架。因为GPL 要求,使用了GPL 代码的产品必须也使用GPL 协议,开发者不允许将GPL 代码用于商业产品。LGPL 绕过了这一限制。

    (3)BSD

  BSD 在软件分发方面的限制比别的开源协议(如GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新BSD 协议与简单BSD 协议,这两种协议经过修正,都和GPL 兼容,并为开源组织所认可。

  新BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单BSD协议删除了这一条款。

    (4)MIT

  MIT 协议可能是几大开源协议中最宽松的一个,核心条款是:

  该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。

  这意味着:你可以自由使用,复制,修改,可以用于自己的项目。可以免费分发或用来盈利。唯一的限制是必须包含许可声明。MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。

    三、开放源代码

    开源不仅仅表示开放程序源代码。从发行角度定义的开源软件必须符合如下条件:

    1.自由再发行

  许可证不能限制任何团体销售或赠送软件,软件可以是几个不同来源的程序集成后的软件发行版中的其中一个原件。许可证不能要求对这样的销售收取许可证费或其他费用。

    2.程序源代码

  程序必须包含源代码。必须允许发行版在包含编译形式的同时也包含程序源代码。当产品以某种形式发行时没有包含源代码,必须非常醒目的告知用户,如何通过Internet免费的下载源代码。源代码必须是以当程序员修改程序时优先选用的形式提供。故意地扰乱源代码是不允许的。以预处理程序或翻译器这样的中间 形式作为源代码也是不允许的。

    3.派生程序

  许可证必须允许更改或派生程序。必须允许这些程序按与初始软件相同的许可证发行。

   4.作者源代码的完整性

  只有当许可证允许在程序开发阶段,为了调整程序的目的将“修补文件”的发行版与源代码一起发行时,许可证才能限制源代码以更改后的形式发行。许可证必须明确地允许按更改后的源代码所建立的程序发行。许可证可以要求派生的程序使用与初始软件不同的名称或版本号。

    5.无个人或团体歧视

  许可证不能都有针对任何个人或团体制在专门奋斗领域内的任何人使用该程序。例如不能限制程序应用于商业领域,或者应用于遗传研究。

    6.许可证发行

  伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证签字盖章。

    7.许可证不能特制某个产品

  如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只以来于这一发行版。如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。

    8.许可证不能排斥其他软件

  许可证不能限制随该许可证软件一起发行的其他软件。例如,许可证不能要求所有与之一起发行的其他软件都是开源软件。

    9.许可证实例

  GNU GPL、BSD、X Consortiun和Artistic许可证都是我们认为符合开源软件定义的许可证。MPL也是一样。

自由软件是开放源代码的一种。

 

    另外,开放源码软件通常是有版权( copyright ) 的,它的许可证可能包含这样一些限制:着意地保护它的开放源码状态,著者身份的公告,或者开发的控制。实际上,开源软件同时涉及源码本身和开发过程,涵盖了三个方面的意义:免费分发的源代码、模块化的体系和集市式的开发--在这种开发方式中,任何地方的任何人都可以参与最终产品的制造,三个方面互相之间有密切的联系,集市式的开发过程给开源软件以强大的改错能力,因为它将程序中的错误公开给了数量巨大的观众,他们都是潜在的改错者。另一方面,任何人都可以复用和发行开源软件的代码这一事实又支持了公众利益,因为创新的观念被整个集市所共享。另外,“open source”这一术语还被延伸到其他智力团体中,指那些可通过公开手段获得的智力资源,比如报纸、教学课件等。

    美国在像网络这样的虚拟环境中,驱动系统的底层代码,尤其是广为人知的那些应用程序之间的通信协议,它们在某种意义上很像现实社会中的法规。换句话说,这些代码对网上的行为给出了一些规范,它鼓励某些行为,而限制其他行为,就像现实社会的法律一样。因此,开放源码带来了一个更民主的开发方式,在这种方式下,好的主意将被集体分享,而不是作为智力资本被个人秘藏着。在这种意义上,开放源码实质上成为一种政治哲学。

    开放源码的精神在于使用者可以使用、复制、散布、研究、改进软件。最早可以回朔到1960 年代。当时,售卖大型计算机的厂商如IBM,把一些软件及原始码一并送给客户,让客户能够因不同需求而自行更改软件。在 1991-1992 年期间,住在芬兰的Linus Torvald制造了第一版的 Linux 操作系统。在一群热心的程序人员努力下,把 Linux 操作系统以及外围的应用程序逐一打造。  出名的作品除了趋于成熟的Linux 操作系统外,还有Apache网页服务器、Perl 程序语言、MySQL 数据库、Mozilla 浏览器、Open Office等等。近来,在政府的推动及各软件大厂(如IBM、Redhat、Apple 等)的推动下,预料这股旋风将会掀起新的软件革命。源代码开放是信息技术发展引发网络革命所带来的面向未来以开放创新、共同创新为特点的、以人为本的创新2.0模式在软件行业的典型体现和生动注解。

    四、开源的版本版权

    开放原始码软件是以全世界有抱负有理想的工程师为研发团队,持续不断的创造及改进新一代的软件产品。 它的精神不在于收取软件的使用费用,而在于分享,所以不收费,但是使用者需要尊重原著作者的创作以及相对应开放原始码的版权问题。

    开放原始码软件就是正版软件,随着使用者的增加,开放原始码软件趋于精致产品化,功能接口甚至不输给高价位的商用软件。

    全世界有超过几万套开放原始码软件,从网页浏览器、文书处理工具、操作系统以至于企业应用程序等一应俱全。

    五、开源的标志纲要

    开放源代码定义给出了开放源代码软件的基本性质。不幸的是,术语“开放源代码”遭到了滥用,并且由于它的描述性,它不能作为一个商标被保护。由于社团需要一种可靠的方式以确定一份软件是否真正是开放源代码软件。OSI为此目的而注册了一个认证标志,OSICertified。如果你在一份软件上看到了该标志,那么该软件就是必定是按照遵从开放源代码定义的许可证发布的,否则,该发行人就是在滥用该标志而且违反了法律

    OSI Certified标志被用于软件而不是许可证:人们需要知道的是组成软件的包和它们的许可证是开放的源代码。此外,单独的许可证可能不是“货物”,它由美国专利和商标局注册认证标志。但是软件的作者显然必须能够在不询问情况下(自我认证)、在适当的时刻确认他们的软件是按照OSICertified的开放源代码方式发布的。所以认证按照两步进行:

    OSI提供一个满足开放软件源代码定义的开放源代码许可证表。这些许可证经过公众的详细审查并且被所批准。如果你有一个希望加入该列表的许可证,请与license-approval@opensource.org联系,它启动了获得许可证批准的程序。

posted @ 2013-04-15 22:37  木木兮  阅读(1810)  评论(0编辑  收藏  举报