GNU GPL 许可证常见问题解答
润桐讯|开源软件的知识产权问题近年来日益受到关注和重视,集慧智佳对此也进行了跟踪研究,还曾承担国家级的开源知识产权研究课题,并为国内知名的互联网软件企业提供了开源知识产权风险排查服务。
本文由高级咨询师薛亮据自由软件基金会(FSF)的英文原文翻译而成,这篇常见问题解答澄清了在使用 GNU 许可证中遇到许多问题,对于企业和软件开发者在实际应用许可证和解决许可证问题时具有很强的实践指导意义。
1-GPL v3 是否与 GPL v2 兼容?
不兼容。许多要求已经从 GPL v2 变为 GPL v3,这意味 GPL v2 中的精确要求并不体现在 GPL v3 中,反之亦然。例如,GPL v3 的终止条件比 GPL v2 的终止条件更为宽泛,因此与 GPL v2 的终止条件不同。
由于这些差异,两个许可证不兼容:如果您试图将依据 GPL v2 发布的代码与依据 GPL v3 发布的代码组合,则将违反 GPL v2 的第 6 部分。
但是,如果代码依据 GPL “v2 或更高版本”发布,则与 GPL v3 兼容,因为 GPL v3 是其允许的选项之一。
2-GPL v2 是否有提供安装信息的要求?
GPL v3 明确要求再分发中包含完整的必要的“安装信息”。GPL v2 不使用该术语,但它需要再分发中包含用于控制可编译和安装可执行文件的脚本以及完整和相应的源代码。这涵盖了 GPL v3 中称为“安装信息”的部分内容,但不包括所有内容。因此,GPL v3 对安装信息的要求较强。
3-各种 GNU 许可证之间如何相互兼容?
各种 GNU 许可证彼此之间具有广泛的兼容性。下面是唯一的一种您不能将遵循两种 GNU 许可证的代码结合起来的情况:将遵循旧版本许可证的代码与遵循该许可证新版本的代码进行结合。
以下是 GNU 许可证的各种结合的详细兼容性矩阵,以便为特定情况提供易于使用的参考。它假设有人依据其中一个许可证编写了一些软件,而您希望以某种方式将该软件的代码结合到您要发布的项目(您自己的原始作品或其他人的软件的修改版本)中。在表顶部的列中找到项目的许可证,并在左侧的一行中找到其他代码的许可证。它们交叉的单元格会告诉您这种结合是否被允许。
当我们说“复制代码”时,我们的意思就是:您正在从一个源代码中获取一段代码(无论是否修改),并将其插入到自己的程序中,从而基于第一部分代码形成一个作品。当您编译或运行代码时,“使用库”意味着您不直接复制任何源代码,而是通过链接、导入或其他典型机制将源代码绑定在一起。
矩阵中每个标明 GPL v3 的地方,其关于兼容性的声明也同样适用于 AGPL v3。
在这种情况下,当结合代码时,您必须遵守 GPL v2 的条款。您不能适用更高版本的条款。
☉ 在这种情况下,您可以依据 GPL v2 或更高版本发布您的项目(您的原始作品和/或您收到并修改的作品),请注意,您使用的其他代码仍然只能遵循 GPL v2。只要您的项目依赖于该代码,您将无法将项目的许可证升级到 GPL v3 或更高版本,整个作品(您的项目和其他代码的任意结合)只能依据 GPL v2 的条款传递。
☉ 如果您有能力依据 GPL v2 或任何更高版本发布项目,您可以选择依据 GPL v3 或更高版本发布该项目,一旦您执行此操作,您就可以结合依据 GPL v3 发布的代码。
☉ 如果您有能力依据 LGPL v2.1 或任何更高版本发布项目,您可以选择依据 LGPL v3 或更高版本发布该项目,一旦您这样做,您就可以结合依据 LGPL v3 发布的代码。
☉ 在这种情况下结合代码时,您必须遵守 LGPL v2.1 的条款。您不能适用更高版本 LGPL 中的条款。
☉ 如果这样做,只要项目包含仅依据 LGPL v2.1 发布的代码,您将无法将项目的许可证升级到 LGPL v3 或更高版本。
☉ LGPL v2.1 允许您将遵循自 GPL v2 之后任何版本 GPL 的代码进行重新许可。如果在这种情况下可以将遵循 LGPL 的代码切换为使用适当版本的 GPL(如表所示),则可以进行此种结合。
☉ LGPL v3 是 GPL v3 加上在这种情况下可以忽略的额外权限。
☉ 由于 GPL v2 不允许与 LGPL v3 结合,因此在这种情况下,您必须依据 GPL v3 的条款传递项目,因为它允许此种结合。
4-“聚合”与其他类型的“修改版本”有什么区别?
“聚合”由多个单独的程序组成,分布在同一个 CD-ROM 或其他媒介中。GPL 允许您创建和分发聚合,即使其他软件的许可证不是自由许可证或与 GPL 不兼容。唯一的条件是,发布“聚合”所使用的许可证不能禁止用户去行使“聚合”中每个程序对应的许可证所赋予用户的权利。
两个单独的程序还是一个程序有两个部分,区分的界限在哪里?这是一个法律问题,最终由法官决定。我们认为,适当的判断标准取决于通信机制(exec、管道、rpc、共享地址空间内的函数调用等)和通信的语义(哪些信息被互换)。
如果模块们被包含在相同的可执行文件中,则它们肯定是被组合在一个程序中。如果模块们被设计为在共享地址空间中链接在一起运行,那么几乎肯定意味着它们组合成为一个程序。
相比之下,管道、套接字和命令行参数是通常在两个独立程序之间使用的通信机制。所以当它们用于通信时,模块们通常是单独的程序。但是,如果通信的语义足够亲密,交换复杂的内部数据结构,那么也可以视为这两个部分合并成了一个更大的程序。
5-我在使用 GPL 程序的源代码时是否具有“合理使用”权限?
是的,您有。“合理使用”是在没有任何特别许可的情况下允许的使用。由于您不需要开发人员的许可来进行这种使用,无论开发人员在许可证或其他地方对此怎么说,您都可以执行此操作,无论该许可证是 GNU GPL 还是其他自由软件许可证。
但是,请注意,没有全世界范围普适的合理使用原则;什么样的用途被认为“合理”因国而异。
6-什么时候程序和插件会被认为是单一的结合程序?
这取决于主程序如何调用其插件。如果主程序使用 fork 和 exec 来调用插件,并通过共享复杂的数据结构或来回传送复杂的数据结构来建立密切通信,可以使它们成为一个单一的结合程序。如果主程序使用简单的 fork 和 exec 来调用插件并且不建立它们之间的密切通信,插件被认为是一个单独的程序。
如果主程序动态地链接插件,并且它们彼此进行函数调用并共享数据结构,我们相信它们形成了一个单一的结合程序,它必须被视为主程序和插件的扩展。如果主程序动态地链接插件,但是它们之间的通信仅限于使用某些选项调用插件的“main”功能,并等待它返回,这是一种临界案例。
使用共享内存与复杂数据结构进行通信几乎等同于动态链接。
7-专利检索通过什么检索得到软件专利
试试看润桐专利数据库
8-分发一个意图链接到 Linux 内核的非自由驱动程序会违反 GPL 吗?
Linux(GNU / Linux 操作系统中的内核)依据 GNU GPL v2 进行分发。分发一个意图链接 Linux 的非自由驱动程序违反 GPL 吗?
是的,这是一种违规行为,因为这样做形成了更大的结合作品。用户期望把这些片段放在一起的事实并不会改变任何事情。
在代码实体部分拥有版权的 Linux 的每个贡献者都可以执行 GPL,我们鼓励他们对那些分发非自由 Linux 驱动程序的人采取行动。
9-如果模块 Q 的许可证具有与 GPL 不兼容的要求,但是只有当 Q 自身分发时,而不是在较大程序中包含 Q 时,该要求才适用,是否可以使得该许可证与 GPL 兼容?可以将 Q 与遵循 GPL 的程序结合使用吗?
如果程序 P 依据 GPL 被发布,这意味着“任何和所有部分”都可以依据 GPL 进行使用。如果您集成了模块 Q,并依据 GPL 发布结合程序 P + Q,则表示可以依据 GPL 使用 P + Q 的任何部分。P + Q 的一部分是 Q,所以依据 GPL 发布 P + Q 意味着,Q 的任何部分可以依据 GPL 进行使用。换句话说,依据 GPL 获得 P + Q 的用户可以删除 P,所以 Q 仍然遵循 GPL。
如果模块 Q 的许可证允许您授予该许可,则其与 GPL 兼容。否则,它不与 GPL 兼容。
如果 Q 的许可证在不明确的条件下表示,您必须在自己再分发 Q 时做某些事情(与 GPL 不兼容),那么不允许您依据 GPL 分发Q。因此,您也不能依据 GPL 发布 P + Q。所以您不能将 P 与 Q 进行链接或结合。
10- 我已经编写了一个与许多不同组件链接的应用程序,它们具有不同的许可证。我对我的程序有什么许可要求感到很困惑。您能告诉我可以使用哪些许可证吗?
为了回答这个问题,我们需要看一下你的程序使用的每个组件的列表,该组件的许可证和一个简短的(几句话应该足够)说明你的库如何使用该组件的描述。两个例子是:
◈ 为了让我的软件工作,它必须链接到遵循 LGPL 的 FOO 库。
◈ 我的软件进行系统调用(使用我建立的命令行)来运行 BAR 程序,该程序遵循 GPL,“具有允许与 QUUX 链接的特殊例外”。
GNU GPL 许可证常见问题解答相关推荐
- ug10许可证错误一8_申请流程企业排污许可证申请常见问题解答连载(一)
亲们,还记得前期我们发布的<排污许可证申请核发入门指南>系列连载和千呼万唤始出来-<固定污染源排污许可证分类管理名录>名录解读的内容吧,相信对大家一定有所帮助. 近期,我们排污 ...
- linux常见问题解答
linux常见问题解答 1.什么是LINUX? LINUX是一个可独立运作的POSIX兼容操作系统,它也包含了SYS V和BSD的功能.它 完全是独之发展的,所以其中没有任何有版权问题的代码.LINU ...
- 里程碑:DTrace 切换到 GPL 许可证
2019独角兽企业重金招聘Python工程师标准>>> News:dtrace dropped the CDDL and switched to the GPL! 根据 2月14日 ...
- Delphi XE5 常见问题解答
Delphi XE5 常见问题解答 有关于新即时试用的问题吗?请看看 RAD Studio 即时试用常见问答. 常见问题 什么是 Delphi? Embarcadero? Delphi? XE5 是易 ...
- 十问十答 GPL 许可证
GPL 是 GNU's General Public License 的缩写,翻译成中文叫 GNU 的通用公共许可证,是最受欢迎的开源许可证之一.它由理查德·斯托曼(Richard Stallman) ...
- 办理ICP证、SP证、BBS证及非经营性网站(ICP)备案常见问题解答
一.办理ICP证.SP证及BBS证常见问题解答 根据<互联网信息服务管理办法>(国务院令第292号).<互联网电子公告服务管理规定>(信息产业部令第3号)的有关规定,对互联网信 ...
- Jini技术常见问题解答
Jini技术常见问题解答 内容提要 Jini技术概述 Jini技术详解 Jini技术的开发 Jini和Java技术 Jini技术和操作系统 Jini技术和其它查找技术 Jini技术和补充网络 ...
- Unix编程常见问题解答(精华)
Unix编程常见问题解答 原帖:http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FUnix%2F3%2Ffaq%2FUnixP ...
- Unix编程常见问题解答
关于这篇"常见问题解答" ************************ 这篇"常见问题解答" 由Patrick Horgan自一九九六年五月开始起草:因其历 ...
最新文章
- mac的mysql数据库管理_Mac使用MySQL Workbench管理MySQL数据库
- 美团第一位前端工程师竟是转行程序员!关于他的10年技术生涯
- mysql 日志丢失_失而复得数据库日志文件丢失后的恢复
- ad域 禁用账号_通过AD域控平台统一批量管理公司电脑的桌面
- springmvc教程(4)
- 什么是集群(cluster)
- JavaScript数据类型和变量学习小记
- Facebook推出人脸识别新功能,防止用户肖像遭滥用
- 验证登录信息是否合法
- Jquery插件的编写和使用
- PX4无人机配置4G空地多机组网系统
- yii2得到的数据对象转化成数组
- 未来教育题库 ***Java二级试题第27套***
- python生成epub文件_将'epub'文件转换为文本
- 低版本的iphone 无法跑在xcode8上
- FOP(PDF与JAVA)
- 用计算机打生僻字的歌,学子写抖音最火《生僻字》歌,70多个生僻字,懵了~
- 机器学习中踩过的坑,如何让你变得更专业?
- Flink 中的木桶效应:单个 subtask 卡死导致整个任务卡死
- HEP惠普SN3600B,H3C新华三CN3360B光纤交换机调试配置方法