GPL源码感染的问题

GPL 的传染可以被两道边界阻止(但是很不幸,这两道边界都很模糊,所以你必须用最保守的方式「自我审查」):
  1. 证明你的产品不是 derived work;或者
  2. 证明你满足 system exception。

如何证明不是 Derived Work
唯一被认可的方式是建立 address space boundary。被承认的 ASD 包括:
  1. 基于 MMU 的内存空间隔离(进程隔离,用户态,内核态隔离)。
  2. 程序、数据隔离。比如 GCC 不会感染被编译的源文件。
  3. 虚拟机隔离。两种语言并不使用同样的 IP(instruction counter)。比如 Lua 虚拟机和其上的 Lua 代码,JVM 和 Java byte code。VM 使用硬件的 IP,而 byte code 采用 VM 提供的虚拟 IP。Byte code 到 VM 之间的控制权切换并不是简单的 IP 附值。

如何证明满足 System Exception
这个比较少见。比如说,GCC 是运行在 Linux 上的。如果 Sun 把 GCC 移植到 Solaris 上,也不会感染 Solaris。必须证明你的系统是 GPL 软件的潜在目标平台。比如说,如果有人给 Photoshop 开发 GPL 许可证的 plug-in,也不可能感染 Photoshop。

后话
FSF 是一个意识形态很浓的组织。它们在不断试图增强感染性,而不是控制它。比如对于 ASD,FSF 就非常不满,甚至针对 Web service 开始提出能越过 ASD 的许可证。所以最好的方法是远离 FSF。Linus 在早期为 Linux kernel 采用 GPL,不过 kernel 社区稳定之后,Linus 对 FSF 的行为越发反对,决定永久停留在 GPLv2。而且很多类型的开源软件都有更商业友好的版本。

针对你的案例
如果我在发布软件的时候不同时发布使用到的 GPL 软件,而是让用户自己安装这些GPL软件,那么是否可以私有?
发布方式无关紧要。取决于 ASD 是否存在。
如果我使用了某种 GPL 的编程语言开发程序,而这个程序也必须在安装了此编程语言运行环境时才能使用,那么我发布这个程序是否必须用GPL? 这个应该不必吧?
属于 ASD。
如果我以 GPL 协议发布了某种软件,我是否可以再使用其它协议发布同一款软件?
可以。但是要保证其中没有其他人的 GPL 代码。或者集成其他人的代码需要要求其作者放弃 copyright。
最后确定一点,如果我不发布我的软件,而只是做为一个web site运行,那么不管是否使用GPL软件,都可以私有?
没有发布行为,不违法。但是你的知识产权很危险。因为你的整个 site 从法律上说是 GPL 的。任何人以任何手段拿到,都可以自由公开。(当然你可以惩罚签署了 NDA 的员工,但是仅此而已。如果你没有实证是哪个员工的行为,连这点也没法惩罚了。)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值