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




  

相关话题

  设计模式有何不妥,所谓的荼毒体现在哪? 
  为什么说C++很难? 
  如何看待2022年秋招Java后端开发岗一片红海? 
  如何看待开源中国Gitee在不通知用户的情况下突然禁止图床外链访问,导致用户权益受损的行为? 
  为何巴西人能做出 Lua 这种出彩的东西? 
  为什么 Windows 没有形成成熟的软件包和升级体系? 
  培训班输出的2百万“码农”会对IT行业造成什么影响? 
  为什么 Windows 没有形成成熟的软件包和升级体系? 
  有哪些好的C#开源项目推荐? 
  如何看待微软员工称谷歌利用不正当手段对Edge造成了破坏? 

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





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