开源协议,全称为开源软件许可证(Open Source Software License),是一组法律文件,规定了软件的源代码可以被公众自由地使用、研究、修改和分发的条款和条件。这些协议旨在保护软件用户的权利,同时平衡原作者的权益和公众的利益。

以下是开源协议的主要特点和目的:

1. 自由使用:允许用户不受限制地运行软件,无论出于何种目的。

2. 获取源代码:保证用户能够获取到软件的源代码,以便理解其工作原理并进行修改。

3. 分发权利:允许用户自由地复制和分发软件,包括原始版本和修改后的版本。

4. 修改和衍生作品:允许用户对软件进行修改,并创建基于该软件的衍生作品。

5. 共享改进:要求用户将软件修改后的版本回馈给社区,以促进整个社区的共同进步。

6. 无歧视:保证任何人都可以使用该软件,不得因个人或团体身份而加以限制。

开源协议通常由以下几种类型:

- 宽松型许可证(如MIT、BSD):对软件的使用和分发几乎没有任何限制。

- copyleft许可证(如GPL、AGPL):要求任何修改后的软件或衍生作品都必须以相同的许可证发布,确保软件的自由性得以延续。

- 弱copyleft许可证(如LGPL):允许与闭源软件结合使用,但对修改后的库代码要求开源。

开源协议不仅是一种法律文件,也是开源文化和开源运动的重要组成部分,它们推动了软件技术的创新和共享。常见的开源协议包括GPL、MIT、Apache、BSD、LGPL、MPL、EPL等。

MIT

MIT许可证(MIT License),全称为麻省理工学院许可证,是一种极其宽松的开源许可证。它允许用户自由地使用、复制、修改、合并、发布、分发、 sublicense(再许可)和/或销售软件的副本,同时只需满足以下条件:

1. 版权声明:软件的源代码必须包含原始版权声明和许可声明。

2. 免责声明:软件的分发不得包含原作者的名称,以表明其对该软件的支持或认可。

MIT许可证的特点是简单、灵活,并且对使用者几乎没有限制,因此它被广泛应用于各种开源项目中。它允许商业用途,同时也保护了原作者免于因软件的使用、修改或分发而产生的责任。

GPL

GPL,全称GNU通用公共许可证(GNU General Public License),是由自由软件基金会(Free Software Foundation)制定的自由软件许可证。GPL是一个copyleft许可证,这意味着任何基于GPL许可的软件衍生作品也必须遵循GPL许可,从而保证了软件的自由性和开源性。

GPL的主要特点和条款包括:

1. 自由使用:用户可以自由地运行GPL许可的软件,无论出于何种目的。

2. 获取源代码:GPL要求软件的分发必须包含源代码,或者提供获取源代码的方式。

3. 修改和分发:用户可以自由地修改软件,并且可以将修改后的软件分发出去,但必须以GPL许可的形式进行。

4. copyleft原则:任何包含GPL软件一部分的作品,整个作品都必须遵循GPL许可。这意味着衍生作品也必须是开源的。

5. 无歧视:GPL不允许对任何个人或团体进行歧视,软件必须对所有用户平等开放。

GPL有几个版本,最常用的是GPLv2和GPLv3。GPLv3是在GPLv2的基础上进行了一些更新和改进,包括对专利、数字版权管理(DRM)和合同条款的明确规定。

GPL许可证适用于那些希望确保其软件及其衍生作品始终保持自由和开源的开发者。由于其copyleft特性,GPL在开源社区中具有广泛的影响力和争议性。一些开发者选择GPL是因为它保证了软件的自由性,而另一些开发者则可能因为GPL的限制性而选择其他更宽松的许可证。

Apache

Apache许可证2.0(Apache License, Version 2.0)是由Apache软件基金会(Apache Software Foundation)发布的一个开源许可证。它是一个宽容许可证(permissive license),意味着它对软件的使用、修改和分发给予了相对宽松的条件。

以下是Apache许可证2.0的主要特点和条款:

1. 版权声明:分发的软件必须包含原始版权声明。

2. 免责声明:软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、特定用途的适用性和非侵权性的保证。

3. 专利授权:明确授予用户使用、修改和分发软件的专利权,旨在防止专利诉讼。

4. 贡献者许可:如果对软件进行了修改并提交给项目,则这些修改默认按照相同的许可证条款进行贡献。

5. 商标:许可证明确指出,它不授予使用贡献者名称、商标、服务标记的权利。

BSD

BSD许可证(Berkeley Software Distribution License)是一系列开源许可证的总称,最初由加州大学伯克利分校的计算机系统研究小组(CSRG)开发。BSD许可证以其宽容性和简洁性而闻名,它允许用户广泛地使用、修改和分发软件,同时只需满足一些基本的条件。

以下是BSD许可证的主要特点和条款:

1. 版权声明:分发的软件必须在所有副本中包含原始版权声明。

2. 免责声明:软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、特定用途的适用性和非侵权性的保证。

3. 无歧视条款:不允许在软件的分发中使用贡献者的名字来推广衍生产品。

4. 允许商业用途:BSD许可证允许软件用于商业目的,无需支付版税。

5. 允许修改和分发:用户可以自由地修改软件,并以源代码或二进制形式分发,无论是原始版本还是修改后的版本。

BSD许可证有多个版本,其中两个最著名的版本是:

- 2-clause BSD许可证(也称为FreeBSD许可证):这是最简单和最宽松的BSD许可证版本,只包含版权声明和免责声明。

- 3-clause BSD许可证(也称为Modified BSD许可证或Revised BSD许可证):除了2-clause BSD许可证的要求外,还增加了一个无歧视条款,禁止使用贡献者的名字来推广衍生产品。

BSD许可证由于其宽容性和对商业友好的特性,被广泛应用于各种开源项目中,尤其是在商业环境中。它允许软件的自由使用和分发,同时保护了原作者的权益。

LGPL

LGPL(Lesser General Public License,较少通用公共许可证)是一种开源软件许可证,属于GNU许可证家族的一部分。它是由自由软件基金会发布的,旨在为开源软件提供一定的灵活性,尤其是在库(libraries)的使用上。

LGPL被视为一种“弱版权”许可证,介于严格的版权要求(如GPL许可证)和较为宽松的许可协议(如MIT或BSD许可证)之间。LGPL主要应用于库,允许这些库被用于自由软件以及私有软件中。

以下是LGPL的一些关键特点:

1. 库的应用:LGPL主要用于库。这意味着,如果一个库是依据LGPL许可证发布的,它可以被用于任何类型的应用程序,无论是开源的还是专有的。

2. 修改和分发:你可以复制、分发和修改依据LGPL许可证发布的软件,但必须标明修改,并且这些修改也需在LGPL许可证下发布。

3. 静态链接和动态链接:如果应用程序静态链接到LGPL库,则整个应用程序必须按照LGPL许可证发布。然而,如果应用程序动态链接到LGPL库,则应用程序本身不需要开源。

4. 逆向工程:你必须允许对应用程序进行必要的逆向工程,以便调试和重新链接库。

LGPL的初衷是为了在GPL许可证严格的版权要求和其他更为宽松的许可证之间提供一个折中方案,特别是针对库的集成和再分发。

MPL

MPL(Mozilla Public License)是由Mozilla基金会发布的一个开源许可证。MPL是一种弱copyleft许可证,这意味着虽然它要求对修改过的代码进行开源,但允许与非开源软件结合使用。MPL旨在平衡开源和闭源软件开发者的需求。

以下是MPL的主要特点和条款:

1. 版权声明:分发的软件必须在所有副本中包含原始版权声明。

2. 源代码分发:必须提供修改过的源代码,或者提供获取源代码的方式。

3. 修改和分发:允许用户修改软件,并且可以将修改后的软件分发出去,但必须以MPL许可的形式进行。

4. 弱copyleft:MPL允许将MPL许可的代码与闭源代码结合,但修改过的MPL代码部分必须保持开源。

5. 专利授权:明确授予用户使用、修改和分发软件的专利权。

6. 商标:不允许使用贡献者的名称、商标或服务标记来推广衍生作品。

MPL的版本有MPL 1.0、MPL 1.1和MPL 2.0。MPL 2.0是对早期版本的一个重要更新,它简化了许可证的条款,并与其他开源许可证(如GPL和Apache)兼容。

MPL许可证适用于那些希望其代码被广泛使用,但在某些情况下也允许与闭源代码结合的软件开发者。它的设计旨在鼓励更多的开发者参与到开源项目中,同时保护了项目的开源性质。

EPL

EPL(Eclipse Public License,Eclipse公共许可证)是一种开源许可证,由Eclipse基金会维护。EPL分为两个版本:原始的EPL-1.0,发布于2004年,以及更新的EPL-2.0,发布于2017年。EPL-1.0已被弃用,Eclipse基金会推荐开源软件贡献者转向使用2.0版本。

EPL是一种弱版权许可证,它在自由软件和专有软件之间提供了某种平衡。以下是EPL的一些关键特点:

1. 修改和分发:如果你修改了依据EPL许可证发布的组件,并在你的程序中以源代码形式分发,你必须按照EPL许可证公开修改后的代码。如果你以目标代码形式分发这样的程序,你必须声明可以应要求向接收者提供源代码,并分享请求源代码的方法。

2. 专利授权:EPL保护作者免受可能的诉讼或损害,如果一家公司在其商业产品中使用了他/她的组件。它还提供了专利授权。

3. 与Eclipse插件交互:Eclipse基金会明确表示,仅仅与Eclipse插件“接口或互操作”并不会使你的代码成为插件的衍生作品3。

4. 版权声明和许可证文本:如果你重新分发包含EPL组件的程序,你必须包含完整的许可证文本和版权声明。

EPL与LGPL和Mozilla公共许可证2.0等其他弱版权许可证相似,它对使用许可代码的要求比宽松许可证(如MIT或Apache许可证2.0)更多,但比强版权许可证(如GPL v2和GPL v3)提供了更多的自由