Contents
GPL/LGPL/PSF 许可证使用
原问
Lanser <[email protected]> 发件人当地时间 发送时间 16:26 (GMT+08:00)。发送地当前时间:下午3:37。 ✆ 发送至 [email protected] 主题 [CPyUG] [OT] 关于 license 的疑惑
- 有的源码 license 是 “GPLv3 和 LGPLv2.1”,不明白这个 "和" 是什么意思,二选一还是两个都遵守,显然 GPLv3 比 LGPLv2.1 要严格的多,后者要遵守的都在前者范围内了。
- 如果我使用该源码前为了匹配下层驱动,修改了一些代码后编译成 so 文件,上层应用使用这些 so 文件,那么上层代码要变成 GPLv3 吗,还是只需公开源码中修改的部分?
- 如果有个应用的源码用 GPLv3 分布的,我的程序中调用该应用的二进制,我的程序会被感染吗。
其实说白了就是 GPLv3 是仅对源码有效,还是对源码生成的二进制也有效,如果有效它怎么个感染法?
- Python 使用的 PSF license 是对生成 python 这个可执行程序的 C 源码,还是对发行的 python 库脚本也有效,对我自己写的 python 脚本呢? 如果我自己修改了 python 库脚本,是不是也要按 PSF license 公开呢。
初解
Xin LI <[email protected]> 发件人当地时间 发送时间 18:28 (GMT-07:00)。发送地当前时间:上午6:10。 ✆ 回复 [email protected] 发送至 [email protected] 日期 2011年3月25日 下午6:28 主题 Re: [CPyUG] [OT] 关于 license 的疑惑 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
On 03/25/11 01:26, Lanser wrote: > 有的源码 license 是 “GPLv3 和 LGPLv2.1”,不明白这个 "和" 是什么意思,二选一还是两个都遵守,显然 GPLv3 比 > LGPLv2.1 要严格的多,后者要遵守的都在前者范围内了。
请直接把原文放上来。
如果要猜的话,可能是两种情况之一:
- 第一种情况,或者说常见的,是 either GPLv3 or LGPLv2.1,这种情况根据自己的需要选一个就可以了。
- 第二种情况,假如如你所说是 GPLv3 and LGPLv2.1,即,LGPLv2.1和GPLv3同时使用,而不是两者之一时,则只有 GPLv3 生效。现实中这种情况不太常见。
> 如果我使用该源码前为了匹配下层驱动,修改了一些代码后编译成 so 文件,上层应用使用这些 so 文件,那么上层代码要变成 GPLv3 > 吗,还是只需公开源码中修改的部分?
取决于调用关系和具体是 GPLv3 还是 LGPL v2.1。
- 如果你的软件可以完全脱离以 GPL/LGPL 授权的代码独立运行,例如,GPL/LGPL 的东西只是一个驱动,而你的软件配合另外的驱动,无论是否是同一种硬件,只要能够正常运行并完成其功能,那么,你的软件部分并不会被视为 GPL/LGPL 软件的派生作品。
这种情况,如果你拥有那部分软件的 全部 所有权,则可以以你希望的任何许可证发布。
- 对于原来代码的修改部分,因为属于派生作品,如果你发布了它们的二进制版本,根据 GPLv3,就必须发布其源代码,并且不允许在你的定制硬件上设限使修改的版本无法运行。
- 这种情况,在发布二进制版本时,应明确地把两部分分开。如果需要规避
GPL/LGPL,应尽量使用未经修改的、其他人发布的预编译 .so。
- 如果软件不能脱离 GPL/LGPL 授权的代码独立运行,则 *很可能* 你的代码会被认为是派生作品。LGPL 允许调用 .so 时只开放 .so 本身的代码,而 GPL 则要求全部代码。但GPL本身有其他漏洞,漏洞是什么请自行咨询律师。
> 如果有个应用的源码用 GPLv3 分布的,我的程序中调用该应用的二进制,我的程序会被感染吗。 > 其实说白了就是 GPLv3 是仅对源码有效,还是对源码生成的二进制也有效,如果有效它怎么个感染法?
- 简而言之,GPL 对二进制文件有效,但如果你的软件可以完全不依赖 GPL 授权的二进制文件运行,则你的软件可以被认为是独立的第三方作品,而不受传染。
- 具体案例中,GPL 是否有效取决于如何使用。如果你要连接一个 GPL 授权的 .so 库,通常你的软件也就必须使用 GPL 发布。(LGPL并不要求这一点),例外情况 是,如果那个 .so 库有一个其他的实现,并且你的软件能够配合那个实现运行,则通常你的软件不是GPL软件的派生作品。
> Python 使用的 PSF license 是对生成 python 这个可执行程序的 C 源码,还是对发行的 python 库脚本也有效,对我自己写的 > python 脚本呢? > 如果我自己修改了 python 库脚本,是不是也要按 PSF license 公开呢。
- PSF 许可证与 BSD 授权类似,即,你需要宣示使用了 Python,但不必发布源代码。
如果希望自己的软件捐赠给 Python,则使用整个授权的第一部分(共8项)即可。这个许可证后面的 BeOpen 等部分只是延续早期代码的法统,这样做是为了满足某些国家的知识产权法律。新的代码并不需要这些部分。
最后:珍爱生命,远离GPL。
再解
原文来之 Qt embedded 4.5.2 (qt-embedded-linux-opensource-src-4.5.2/doc/html/opensourceedition.html) Nokia supports the free software concept by providing the Qt Open Source Edition, which is licensed under the GNU General Public License(GPL) (version 3) and the GNU Lesser General Public License (LGPL)(version 2.1). You can use this edition of Qt to create and distributesoftware with licenses that are compatible to these free softwarelicenses.
这样看起来似乎是 GPLv3 了
- delphij
- 不是。
- Qt是三者选一个。如果不用商业许可证的话,可以选 LGPLv2.1(含Qt额外免除条款) *或* GPLv3。
Qt额外免除条款明确规定满足下列条件使用Qt提供的头文件,并连接Qt库时,你自己撰写的程序完全不受 LGPLv2.1 影响:
1) 未修改Qt库的头文件;并且 2) 使用的Qt库头文件的部分仅限于用作参数的常量定义、数据结构定义、访问函数、宏、内联函数、模板;(*)并且 3) 遵守 LGPL 2.1 第 6 节内容。
- 如果从库中直接复制代码,满足下列条件仍可不受 LGPLv2.1 影响:使用的Qt库部分仅限于常量、数据结构定义、访问函数、或,不超过5行的宏、模板和/或内联函数;
(*) 在美国,实际的判例一般认为常量定义、数据结构的定义属于“事实”,因而其上无版权。
个人建议是只使用未经修改的 Qt 库,并且不要复制其中的任何代码,只通过 #include 引用头文件并在源文件中调用 Qt 库或使用常量。
- 最后,如果有疑虑的话,也可以购买 Qt 的商业授权。
> 如果我的软件是分层的,app 层使用了 GPLv3 的so 还用了其他我们自行开发的so (driver层)这些是私有版权的。 > 最终软件要运行这两种 so 都必须,那么是不是我只用公开 app 层代码就可以了,不需公开私有so的源码(即 driver层)。
- 这个问题非常复杂,从你的描述来看你的分层很可能不足以隔离应用层的 GPLv3 传染,除非你的驱动完全能够隔离 app 接口(常量、数据结构、接口定义)以外 的任何代码。
abt.
> > 请社区大律师解答 >
-----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.17 (FreeBSD) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iQEcBAEBCAAGBQJNjG5cAAoJEATO+BI/yjfByn8H+wQgQmBAi5F6wdvYLG4gC+PY NDHnEhkHr7WexkX9DQYYRMdG9l3DfEN2QWFIJY3Hh/VTT68Ma72VEWELnmKRWV22 Zk6DdsrqasN8UW02h497KzALQPyNegls8tI+7ZBe0UBC0RuuJ/ZVrZn5PI540Um1 O+suosP096F1bz2jWvWYs8gRauAmIZCRUJERYE5uJ5udW1Xo5Xx59Zjlqi0h0f4S BWqO7p/m4yPbnCKMutP9foybmCD8Vy9WaQ8WVQo5m/g7ZNHLcaJqLDom8bOpX5pS MikpO8oa7AuBLfFNRwgO8Dfr5CEQSab9sehAescwCLtfjAiZ9kIs5noqCG2zmN4= =Abxy -----END PGP SIGNATURE-----
反馈
创建 by -- ZoomQuiet [2011-03-25 13:14:18]