GPL 的传染可以被两道边界阻止(但是很不幸,这两道边界都很模糊,所以你必须用最保守的方式「自我审查」):
如何证明不是 Derived Work
唯一被认可的方式是建立 address space boundary。被承认的 ASD 包括:
如何证明满足 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 的员工,但是仅此而已。如果你没有实证是哪个员工的行为,连这点也没法惩罚了。)