【2013-10-29】【转】各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-10-29 标题【转】各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT分类编程 / 随手记 标签开源协议各种开源协议介绍 BSD、Apache Licence、GPL V2、GPL V3、LGPL、MITBSD 开源协议Apache Licence 2.0GPLGNU General Public LicenseGPL V2 与 GPL V3 的争议LGPLGNU Lesser General Public LicenseMIT转自open-open.com现今存在的开源协议很多经过 Open Source InitiativeOSI批准的开源协议目前有 58 种详见 OSI 批准协议列表。常见的 BSD、GPL、LGPL、MIT 等均属于 OSI 批准的协议。如果要开源自己的代码最好选择这些被批准的协议。BSD 开源协议BSDoriginal BSD license、FreeBSD license是一个给予使用者极大自由的协议使用者可以自由使用、修改源代码也可以将修改后的代码作为开源或专有软件再发布。发布使用了 BSD 协议的代码或基于 BSD 代码进行二次开发时需满足三个条件若再发布产品中包含源代码则源代码中必须保留原 BSD 协议声明。若再发布的只是二进制类库/软件则文档和版权声明中必须包含原 BSD 协议声明。不可以用开源代码的作者/机构名字和原产品名字做市场推广。BSD 鼓励代码共享对商业集成非常友好许多公司在选用开源产品时首选 BSD因为可以完全控制第三方代码并在必要时进行修改或二次开发。Apache Licence 2.0Apache Licence 是著名非盈利开源组织 Apache 采用的协议与 BSD 类似同样鼓励代码共享和尊重原作者著作权允许代码修改和再发布。使用时需满足需要给代码用户提供一份 Apache Licence。若修改了代码需在被修改的文件中说明。延伸代码修改和衍生代码中需保留原来的协议、商标、专利声明及其他原作者规定的说明。若再发布产品中包含 Notice 文件则 Notice 中需包含 Apache Licence可增加自己的许可但不得修改 Apache Licence 本身。Apache Licence 对商业应用友好使用者可以修改代码并作为开源或商业产品发布/销售。GPLGNU General Public LicenseLinux 采用了 GPL。GPL 与 BSD/Apache 等鼓励代码重用的协议截然不同GPL 的出发点是代码的开源/免费使用但不允许修改后和衍生的代码作为闭源商业软件发布和销售。GPL 的主要内容只要在软件中使用类库引用、修改后代码或衍生代码GPL 协议的产品该软件产品必须也采用 GPL 协议必须开源且免费。这就是 GPL 的传染性。由于 GPL 严格要求使用 GPL 类库的软件必须使用 GPL 协议商业软件或有保密要求的部门不适合使用 GPL 协议代码作为类库或二次开发基础。GPL V2 与 GPL V3 的争议GPL v2 要求修改后的代码必须整体按 GPL 流通源码必须向社会公开且不允许附加修改者自己作出的限制。GPL v3 草案不仅要求公布修改的源代码还要求公布相关硬件因此触及数字版权管理DRM相关问题备受争议甚至遭到 Linux 之父托瓦尔兹Torvalds的反对。两种协议并存的现状导致“世界有如此多软件都在 GPL v2 的约束之下如果要迁移到 GPL v3理论上需征得所有代码贡献者的同意”引自中科红旗 CTO 郑忠源。这一选择困境给开源社区带来了持续的兼容性问题。LGPLGNU Lesser General Public LicenseLGPL 是 GPL 针对类库使用而设计的变体协议。与 GPL 不同LGPL允许商业软件通过类库引用link方式使用 LGPL 类库而无需开源商业代码使 LGPL 类库可被商业软件作为类库引用并发布销售。但如果修改 LGPL 类库代码或进行衍生开发则修改部分和衍生代码必须采用 LGPL 协议。因此 LGPL 适合作为第三方类库被商业软件引用但不适合以 LGPL 代码为基础进行修改/衍生二次开发的商业软件。MITMIT 是与 BSD 同样宽泛的许可协议作者只保留版权无其他限制。使用时必须在发行版无论二进制还是源代码形式中包含原许可协议声明。