【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 同样宽泛的许可协议作者只保留版权无其他限制。使用时必须在发行版无论二进制还是源代码形式中包含原许可协议声明。

相关新闻

最新新闻

Paramiko SFTP 文件传输:Python 3.9 环境实现批量上传/下载的5个关键步骤

Paramiko SFTP 文件传输:Python 3.9 环境实现批量上传/下载的5个关键步骤

Paramiko SFTP 文件传输:Python 3.9 环境实现批量上传/下载的5个关键步骤在自动化运维和分布式系统管理中,文件传输是最基础却最容易出问题的环节之一。想象一下这样的场景:凌晨三点,你需要在50台服务器上紧急部署一个热修复补丁&…

2026/7/11 0:10:31
3分钟快速上手:国家中小学智慧教育平台电子课本下载工具完全指南

3分钟快速上手:国家中小学智慧教育平台电子课本下载工具完全指南

3分钟快速上手:国家中小学智慧教育平台电子课本下载工具完全指南 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具,帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载,让您更方便地获取课本内容。 …

2026/7/11 0:10:31
Spine+Unity 2D骨骼动画全流程实战:从美术拆分到程序驱动与性能优化

Spine+Unity 2D骨骼动画全流程实战:从美术拆分到程序驱动与性能优化

1. 项目概述:为什么是SpineUnity?如果你正在开发2D游戏,尤其是需要角色有丰富动作和细腻表现力的项目,那么“逐帧动画”这个词很可能已经让你头疼不已了。美术同学画到崩溃,程序同学导入到眼花,资源包体积还…

2026/7/11 0:10:31
FFXIV TexTools:快速高效管理《最终幻想14》模组的终极解决方案

FFXIV TexTools:快速高效管理《最终幻想14》模组的终极解决方案

FFXIV TexTools:快速高效管理《最终幻想14》模组的终极解决方案 【免费下载链接】FFXIV_TexTools_UI 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_TexTools_UI 你是否曾为《最终幻想14》模组安装的复杂流程感到困扰?手动备份、文件替换、…

2026/7/11 0:10:31
STM32F439ZG与ADS122U04高精度ADC系统设计指南

STM32F439ZG与ADS122U04高精度ADC系统设计指南

1. 项目背景与核心需求在工业测量、医疗设备和环境监测等领域,我们经常需要将物理世界中的模拟信号(如温度、压力、光强等)转换为数字信号进行处理。ADS122U04是TI公司推出的一款24位高精度Δ-Σ模数转换器(ADC),而STM32F439ZG则是…

2026/7/11 0:10:31
直流有刷电机驱动技术解析与TC78H651AFNG应用

直流有刷电机驱动技术解析与TC78H651AFNG应用

1. 直流有刷驱动器技术背景与市场现状直流有刷电机作为最传统的电机类型之一,凭借其结构简单、控制方便、成本低廉等优势,在工业自动化、消费电子、汽车电子等领域仍占据重要地位。根据市场调研数据显示,2023年全球有刷直流电机市场规模达到7…

2026/7/11 0:05:30

月新闻