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




  

相关话题

  同时收到一家小游戏公司cocos2dx开发和某公司外包C++开发的offer,工资外包略高,不知该怎么选择,给点建议? 
  C#在开源框架的数量和质量上有希望追上JAVA么? 
  如何看待国内代码托管服务 Gitee 的域名被阿里云停止解析? 
  学习编程照着别人的代码敲进去有效率吗? 
  数据库事务原子性、一致性是怎样实现的? 
  对于技术岗位而言,开发岗累还是算法岗累呢? 
  怎么看c#排行飙这么高? 
  如何优化如图所示的,将父类实例扩展为子类实例的代码? 
  如果把Linux kernel移植到新的平台,根据GPL协议,是否必须开放源代码呢? 
  为什么知乎都在劝退计算机国企? 

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





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