百科问答小站 logo
百科问答小站 font logo



使用了GPL软件开发的产品,如何避免GPL感染? 第1页

  

user avatar   feng-dong 网友的相关建议: 
      

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 的员工,但是仅此而已。如果你没有实证是哪个员工的行为,连这点也没法惩罚了。)




  

相关话题

  为什么有一些程序员认为开源有助于发现软件中的缺陷? 
  有没有人能将知乎上的技术大牛都组织起来,做一个开源项目?比如实现一个CoreOS这样的东东 
  作为一个女程序员是怎样的体验? 
  JetBrains如何看待自己的软件在中国被频繁破解? 
  编程和研究原子弹哪个更难? 
  Facebook 为什么不用 .NET? 
  没有法律效力的协议不用遵守?不遵守也不算违法吗 
  java程序员的技术更新那么快,为什么每个技术还要读源码,会使用不就好了吗?技术那么多也学不完啊? 
  Agile(敏捷开发)在大公司内如何落地生根? 
  如何看待在某度搜不到megengine官网? 

前一个讨论
三国演义中有哪些故事都是骗人的?
下一个讨论
如何向小朋友解释为什么太阳和月亮挂在天上掉不下来?





© 2024-12-26 - tinynew.org. All Rights Reserved.
© 2024-12-26 - tinynew.org. 保留所有权利