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




  

相关话题

  对于技术岗位而言,开发岗累还是算法岗累呢? 
  如何做好小团队的开发规范? 
  如何修改开源应用程序的功能? 
  如何写好 Git commit log? 
  ADO.NET Entity Framework 在哪些场景下使用? 
  如何看待开源中国中一片唱衰鸿蒙 OS? 
  Apple、Facebook、Google 都为开源社区做了哪些贡献,哪个贡献更大? 
  Java 中的多态是不是违背了里氏替换原则? 
  程序员反感(讨厌、不喜欢)什么? 
  如果一个公司倒闭, 是否意味着它开发的高级编程语言也会没落? 

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





© 2024-11-25 - tinynew.org. All Rights Reserved.
© 2024-11-25 - tinynew.org. 保留所有权利