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




  

相关话题

  如何将“软件工程”课程中所学的东西,付诸实践? 
  为什么 Xbox One、PlayStation 4 都使用 AMD 的SOC? 
  为什么要先 git add 才能 git commit ? 
  迄今为止押宝多核的策略几乎都失败了,为什么开发者如此抵触多核? 
  软件开发中遇到需要引用的两个库包含的某个同名DLL版本不一致的情况应该如何处理? 
  程序员们在公司写的代码手头会私下里留一份吗? 
  请求参数用string好还是数字好? 
  行业内对低代码开发是什么看法? 
  腾讯开发微信花了多少钱?真的技术难度这么大吗?难点在哪里? 
  对于私有属性,如何判断什么时候使用浅拷贝,什么时候使用深拷贝? 

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





© 2024-05-09 - tinynew.org. All Rights Reserved.
© 2024-05-09 - tinynew.org. 保留所有权利