开源协议简介以及使用
开源协议简介
什么是开源协议
开源协议是针对电脑软件或者其他产品规定,允许在指定的条件下或限制下,使用修改源代码、分享蓝图或设计的公共协议,不同的协议中定义了个人或者公司是否使用开源代码进行修改、设计使用、商用以及是否需要标注来源。
为什么需要开源协议
开源协议是证明软件版权的有力证据,这里就要提到软著(计算机软件著作权),软件著作权是国内对于软件版权的保护证明,但是软著对于版本更新支持不好,每次更新迭代都是要重新注册。
开源协议上虽然在国内没有明确的法律支撑,但是却是软件版权的有利证明,并且对于更新迭代支持更好。
开源协议列表
常用开源协议
Apache License 2.0
Apache 背书的常用协议,Apache很多开源项目都用到了,以下是协议内容:
- 永久免费的全球性的不可撤销的版本许可
- 允许复制、公开以及其衍生内容
- 允许对内容商用化
- 修改内容必须显著声明,且保留原始源作品中的版权、商标等信息
- 在与Apache协议不冲突情况下允许在衍生内容中添加自己的许可
BSD
The BSD License(BSD)是Berkeley Software Distribution License(柏克莱软体散布授权条款)的缩写,许多软体是在此一授权条款下发布的。
以下是 BSD 2-Clause协议内容:
- 源代码的再分发必须保留上述版权声明、本条件列表和以下免责声明
- 源代码修改后必须在内容中标识版权声明
BSD 3-Clause 协议在 BSD 2-Clause基础上添加了
- 未经事先书面许可,不得使用版权所有者或其贡献者的名称来认可或推广本软件衍生的产品
GNU General Public License (GPL)
由 MIT 教授理查德·斯托曼(Richard Stallman)提出应将软件源码看成人类共同拥有的知识财富,应该公开地自由交换、修改提出了GNU计划并建立了自由软件基金会;同时,发布了一份举足轻重的法律文件,GNU 通用公共授权书(GPL),主要分为版本2和版本3,主要区别是版本3中添加免责声明等附加内容。
以下是GPL协议内容:
- 允许对代码复制、编辑
- 允许衍生内容商用
- 衍生的产品必须开源,并且不得限制公开权益,不允许修改后和衍生的代码做为闭源的商业软件发布和销售
- 必须声明来源并且需要声明原有的协议
GNU Library or "Lesser" General Public License (LGPL)
根据GPL协议的规定,所有的衍生内容必须开源,就会导致一个现象,有部分开源项目库如果是GPL协议并且没有替代的方案,这时如果一个非开源项目想要使用这部分项目内容就必须开源,就会与开发者的想法矛盾,因此LGPL诞生了。
允许以动态链接使用开源库,同时,调用了该库的函数的那部分代码还是要开源的,除此之外的部分不需要开源。
MIT license
MIT许可协议之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称“X许可协议”(X License)或“X11许可协议”(X11 License)
- 允许对源码进行修改、发布、公开
- 必须包含著作权声明和许可声明
Mozilla Public License 2.0
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。
MPL协议与LGPL协议类似,如在已有的源代码库上加一个接口,除了接口程序的源代码以MPL许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。
Common Development and Distribution License(CDDL)
CDDL(Common Development and Distribution License,通用开发与发行许可)开源协议,是MPL(Mozilla Public License)的扩展协议,它允许公共版权使用,无专利费,并提供专利保护,可集成于商业软件中,允许自行发布许可,修改后的代码版权归软件的发起者。
Eclipse Public License version 2.0
Eclipse Public License(EPL)是一个与CPL相类似的许可证,任何扩展自Eclipse源码的代码也必须是开源的。
- EPL允许Recipients任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。
- 将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布
- 要发布修改后的源码时必须声明源代码可获取且要告知获取方法
- 需要将EPL下的源码作为一部分跟其他私有的源码混合发布时,EPL代码需要使用EPL协议,其余模块可以不用开源
开源协议使用
github/gitlab 添加
在仓库中直接添加比较简单,通过Add file
文件
将文件名称命名为LICENSE,会自动提示右侧的Choose a license template
选择好对应的开源协议,添加到自己的项目中。
idea 添加
idea是可以直接通过新建文件的方式,来选择建立不同需求上的开源协议的。
New->License file-> 选择需要使用的开源协议
操作如下图:
直接创建
当没有编译器或者没有具体的网页操作时,可以简单的通过记事本方式,将需要使用的开源协议的规范内容COPY到文件中,命名为LICENSE