多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
我们在开发过程中,如果引用到了开源库,一定一定要小心,尤其是在大公司工作时的产品开发,一定要明白开源库的来源,以及许可证的限制;不然可能会导致公司巨大的法律风险,目前在软件开发中最常见的许可证有如下几种: (详细情况可以查看网站:[https://opensource.org/licenses)](https://opensource.org/licenses%EF%BC%89) ### ## **BSD (Berkerley Software Distribution)** BSD许可证给予用户在使用开源代码方面很大的自由,分为2-Clause(两条款)和3-Clause(三条款)两类,需要遵守以下规则: 1. 如果分发的软件包含源代码,则必须在源代码中保留原始的BSD许可证声明。 2. 如果分发的软件仅包含二进制程序,则必须在文档或版权说明中保留原始的BSD许可证声明。 3. 未经许可,不得使用原始作者或机构的名字为软件做市场推广。(仅3-Clause需要遵守) ### ## **Apache-2.0** Apache Licence是著名的非盈利开源组织Apache采用的协议,需要遵守以下规则: 1. 必须在源代码中保留原始的Apache许可证声明。 2. 如果用户修改了源代码,需要在被修改的文件中说明。 3. 在衍生产品中,必须保留原来代码中的版权、专利、商标及作者规定的其他需要包含的说明等信息。 4. 如果在分发的软件中包含Notice文件,则需要在Notice文件中包含Apache许可证声明。 ### **MIT (Massachusetts Institute of Technology)** 和BSD-2-Clause类似,即需要遵守以下规则: 1. 如果分发的软件包含源代码,则必须在源代码中保留原始的MIT许可证声明。 2. 如果分发的软件仅包含二进制程序,则必须在文档或版权说明中保留原始的MIT许可证声明。 ### ## **No License** 随便用,随便改,怎么都行。 ### ## **GPL 2.0** 只要软件中引用及修改了GPL代码或者链接了GPL类库,整个软件就就必须遵循GPL,不仅需要公开所有源码,并且允许他人可以自由地复制和分发。 ### ## **GPL 3.0** GPLv3包含了明确的专利许可以及添加了对数字版权管理和加密签名的限制,不仅要求用户公开源码,还要求公布相关硬件及必要的安装信息。 GPLv3能与更多的许可证兼容,例如Apache 2.0,但这个兼容是单向的,即GPLv3许可证的项目中可以包含Apache 2.0的开源代码,但是Apache许可证的项目不能包含GPLv3的开源代码。值得注意的是,GPLv3与GPLv2却并不兼容,即一个项目中不能同时包含GPLv2和GPLv3的代码,但是,如果软件以GPL “v2或更高版本”许可证发布,则与GPLv3兼容。 ### ## **AGPL** AGPL是对GPL的补充,如果使用了AGPL代码的软件是一个网络应用,那么这个软件的所有源码和修改代码也必须开源,除非购买了该AGPL代码的商业授权。 ### ## **LGPL** 和GPL相比,LGPL限制更少,是一个主要为类库使用设计的开源协议,需要遵守以下规则: 1. 如果软件通过动态链接的方式使用LGPL类库,则该软件不需要开源。 2. 如果软件通过静态链接的方式使用LGPL类库,则软件作者必须提供程序的二进制目标文件(不需要提供源代码),以便用户有机会更新LGPL类库并重新链接到该程序。 3. 如果修改了LGPL的源码或者衍生了新的代码,则所有修改后及衍生的代码也必须遵循LGPL许可证。 ### ## **MPL (Mozilla Public License)** MPL License由Mozilla基金会开发并维护,介于BSD(衍生代码可以闭源)和GPL(衍生代码必须以GPL方式开源)之间,最新发布的2.0版以更简洁和更好的兼容其他协议为目标,鼓励企业和开源社区为开发核心软件做更多贡献。使用MPL源码需要遵守以下规则: 1. 如果修改了MPL的源码或者衍生了新的代码,并且以源代码方式发布的文件,则所有修改后及衍生的代码也必须遵循MPL许可证。 2. 如果用户自有的源码通过专用接口访问MPL的源码及类库,则包含专用接口的代码必须遵循MPL许可证,用户自有源码不必遵循MPL许可证。 3. 用户获得MPL代码中的专利许可,但是不能使用其原始商标。 ### ## **EPL (Eclipse Public License)** EPL License由Eclipse基金会开发并维护,在CPL基础上删除了专利相关诉讼的限制条款。EPL比GPL许可证更为宽松,并且与GPL并不兼容。使用EPL源码需要遵守以下规则: 1. 如果修改了EPL的源码或者衍生了新的代码,并且以源代码方式分发,则所有修改后及衍生的代码也必须遵循EPL许可证。 2. 如果软件以二进制目标文件的形式分发,则需要声明可以根据请求向其他用户提供源代码。 3. 用户获得EPL代码中的专利许可。 ### ## **Permissive许可证** Permissive License(宽松式许可证)允许用户不经许可可以随意复制、修改和发布,但是并不要求分发时必须使用相同的许可证,用户可以在修改代码后选择闭源,常见的Apache、BSD、MIT属于Permissive许可证。 ### ## **Copyleft许可证** Copyright(版权) 的意思是未经许可,用户无权复制和使用。Copyleft License(反版权许可证) 作为Copyright的反义词,意为未经许可,用户也可以随意复制、修改和发布,但要求分发者必须使用相同的许可证发布修改后的衍生作品,以保证衍生作品也能被其他人自由使用,常见的AGPL, GPL, LGPL, MPL属于Copyleft许可证。 ### 以下是一张帮助理解的大致图片,具体请登录到本章开头的链接中进行了解。 :-: ![](https://img.kancloud.cn/1b/b0/1bb0369b1e9d2e58c5a076c3e6ac7a42_832x544.png =700x)