开源(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):意即授权条款不得限制为电子格式才有效,若是纸本的授权条款也应视为有效。
编辑本段开放源代码与自由软件
许多人将开放源代码与自由软件(freeSoftware)视为相同,但若以定义条件而言,自由软件仅是开放源代码的一种,也就是自由软件的定义较开放源代码更为严格,并非开放源代码的软件就可称为自由软件,要视该软件的授权条件是否合乎
自由软件基金会对自由软件所下的定义。
开源软件定义Version 1.9 开源不仅仅表示开放程序源代码。从发行角度定义的开源软件必须符合如下条件:
linux 开源标志
1.自由再发行
许可证不能限制任何团体销售或赠送软件,软件可以是几个不同来源的程序集成后的软件发行版中的其中一个原件。许可证不能要求对这样的销售收取许可证费或其他费用。
2.程序源代码
程序必须包含源代码。必须允许发行版在包含编译形式的同时也包含程序源代码。当产品以某种形式发行时没有包含源代码,必须非常醒目的告知用户,如何通过 Internet免费的下载源代码。源代码必须是以当程序员修改程序时优先选用的形式提供。故意地扰乱源代码是不允许的。以预处理程序或翻译器这样的中间 形式作为源代码也是不允许的。
3.派生程序
许可证必须允许更改或派生程序。必须允许这些程序按与初始软件相同的许可证发行。
开源opensource标志
4.作者源代码的完整性
只有当许可证允许在程序开发阶段,为了调整程序的目的将“修补文件”的发行版与源代码一起发行时,许可证才能限制源代码以更改后的形式发行。许可证必须明确地允许按更改后的源代码所建立的程序发行。许可证可以要求派生的程序使用与初始软件不同的名称或版本号。
5.无个人或团体歧视
许可证不能都有针对任何个人或团体制在专门奋斗领域内的任何人使用该程序。例如不能限制程序应用于商业领域,或者应用于遗传研究。
7.许可证发行
伴随程序所具有权力必须适用于所有的程序分销商,而不需要这些团体之间再附加许可证签字盖章。
开源领军人物(3张)
8.许可证不能特制某个产品
如果程序是某个特殊的软件发行版中的一部分,伴随该程序所具有的权力不能只以来于这一发行版。如果程序是从那一发行版中摘录出来的,使用或发行时用的都是那个程序的许可证,分销程序的所有团体都应拥有与初始软件版所允许的所有权力。
9.许可证不能排斥其他软件
许可证不能限制随该许可证软件一起发行的其他软件。例如,许可证不能要求所有与之一起发行的其他软件都是开源软件。
10.许可证实例
GNU GPL、BSD、X Consortiun和Artistic许可证都是我们认为符合开源软件定义的许可证。MPL也是一样。
GNU GPL
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利: 可自由复制你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。 可自由分发在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。 可以用来盈利你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。 可自由修改如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用GPL 协议。 需要注意的是,分发的时候,需要明确提供源代码和二进制文件,另外,用于某些程序的某些协议有 一些问题和限制,你可以看一下PierreJoye 写的Practical Guide to GPL Compliance 一文。使用GPL 协议,你必须在源代码代码中包含相应信息,以及协议本身。
GNU LGPL
GNU 还有另外一种协议,叫做LGPL (Lesser General Public Licence),它对产品所保留的权利比GPL 少,总的来说,LGPL 适合那些用于非GPL 或非开源产品的开源类库或框架。因为GPL 要求,使用了GPL 代码的产品必须也使用GPL 协议,开发者不允许将GPL 代码用于商业产品。LGPL 绕过了这一限制。
BSD
BSD 在软件分发方面的限制比别的开源协议(如GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新BSD 协议与简单BSD 协议,这两种协议经过修正,都和GPL 兼容,并为开源组织所认可。 新BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单BSD 协议删除了这一条款。
MIT
MIT 协议可能是几大开源协议中最宽松的一个,核心条款是: 该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版权和许可提示。 这意味着: 你可以自由使用,复制,修改,可以用于自己的项目。可以免费分发或用来盈利。唯一的限制是必须包含许可声明。MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。