ios开源项目开源工具技巧开源世界

开源license学习笔记

2019-03-01  本文已影响0人  cheng3100

最近因为工作相关,学习了下开源license的资料,这里整理如下。同时本文本身遵循permissive license,大量参考了两篇文章,参考资料和作者披露在最后。

开源license分类

开源licensen大体分为两类:宽松许可(permissive license)和严格许可(copyleft license)

宽松许可

这类许可的核心在于要求使用了开源代码的软件要有披露要求(notice requirement),即需要明确指出使用了哪些开源代码并附上原始作者,宽松许可主要有

BSD(二条款)

分发软件时,必须保留原始的许可证声明

BSD(三条款)

分发软件时,必须保留原始的许可证声明。不得使用原始作者的名字为软件促销。

MIT

分发软件时,必须保留原始的许可证声明,与 BSD(二条款版)基本一致。

Apache2

分发软件时,必须保留原始的许可证声明。凡是修改过的文件,必须向用户说明该文件修改过;没有修改过的文件,必须保持许可证不变。

严格许可(copyleft)

copyleft是GNU基金会的发起人理查德-斯托曼发明的一个词,与copyright一词相对,核心要求在于,阻止任何破坏软件自由的行为,具体来说,凡是使用了遵循copyleft许可代码的软件,则整个文件甚至工程必须全部开放并同样遵循copyleft许可,从这一点上说,copyleft许可就如同病毒一般,只要使用一点则整个软件都要遵循,同时扩散过程中不断加大遵循范围。这类license主要有

AGPL

如果云服务(即 SAAS)用到的代码是该许可证,那么云服务的代码也必须开源。

GPL

如果项目包含了 GPL 许可证的代码,那么整个项目都必须使用 GPL 许可证。

LGPL

如果项目采用动态链接调用该许可证的库,项目可以不用开源。

MPL

只要该许可证的代码在单独的文件中,新增的其他文件可以不用开源。

开源license限制

分发(distribution)

披露要求(notice requirement)

闭源软件的开源代码使用策略

以上可以看出,开源代码并不是随意拿来用没有限制地,但也不是说只要用了开源代码就不能闭源,这里分情况讨论

有无分发

是否为宽松许可

前面可以看出,宽松许可的限制只是披露要求,而严格许可则几乎无法保持闭源,因此在不得不使用开源代码的时候,尽量选用宽松许可如BSD、MIT下的代码

【参考资料】
阮一峰:开源许可证基础知识扫盲
Heather Meeker-9 open source license management rules for startups

上一篇 下一篇

猜你喜欢

热点阅读