@
skydiver 看了你链接中排名第一的答案(冯东的答案),里面很多明显错误/逻辑不清的地方。以下仅举几个例子:
> 比如说,GCC 是运行在 Linux 上的。如果 Sun 把 GCC 移植到 Solaris 上,也不会感染 Solaris。必须证明你的系统是 GPL 软件的潜在目标平台。
这几句话非常具有误导性。事实是:无论把GCC移植到哪个平台,都不可能感染这些平台。因为GCC是独立运行的程序,按照GPL中对于“使用”的定义,独立运行的程序是不会感染其他程序的。至于所谓的“必须证明你的系统是 GPL 软件的潜在目标平台”,我没明白什么意思。我知道的是,如果微软开发一款运行在Windows平台上的GPL授权的软件,只要没有共享代码,那么显然不用担心Windows受到影响。
原题主问:如果我不发布我的软件,而只是做为一个web site运行,那么不管是否使用GPL软件,都可以私有?
冯东回答:没有发布行为,不违法。但是你的知识产权很危险。因为你的整个 site 从法律上说是 GPL 的。任何人以任何手段拿到,都可以自由公开。(当然你可以惩罚签署了 NDA 的员工,但是仅此而已。如果你没有实证是哪个员工的行为,连这点也没法惩罚了。)
再次强调:GPL中明确定义了什么是“使用”。一个网站可以用很多GPL的程序,但并不意味着整个网站都被GPL感染了。MySQL也是GPL授权,但并不意味着运行MySQL的网站就都被迫需要用GPL。软件如果没有发布,是不存在许可证问题的。另外,GPL是对*用户*授权,不是我的用户,我没有义务用给他看代码。*员工*不一定是软件的用户,所以并不会受到GPL协议的影响。换句话说,GPL说的是软件用户可以使用/修改/在分发软件的代码。但是员工并非他们开发的软件的用户,所以他们不能享有GPL赋予的权利。保护公司内部代码不外露的手段是保密协议,这已经是很强的法律手段了。并不存在所谓“知识产权很危险”这个问题。
再多说几句:
除了GPL以外,还有其他许可证也是会感染“使用者”的,即copyleft类型许可证。但是不同许可证对“使用者”的定义不同。LGPL就不把使用共享库的用户认为是使用者。换句话说,如果我使用了一个LGPL的共享库,那么我可以不以LGPL许可证发布我的代码。但是如果我修改了LGPL授权的程序,我需要再分发。所以LGPL是比GPL更弱的许可证。还有一个AGPL,是比GPL更强的许可证。前面说了,如果我用GPL的程序通过网络对外提供服务,那么我是不会被GPL印象的。比如,我修改了MySQL的代码,并且使用修改后的MySQL对外提供数据库服务,那么我是不用把我修改后的MySQL以GPL授权的。简单说,我是MySQL的用户,我利用MySQL给我的用户提供服务,而这些用户并不直接是MySQL的用户。即,你用户的用户不是你的用户,所以GPL无法影响。AGPL则不同,它把用户的用户也归类为自己的用户。典型的AGPL程序就是MongoDB。如果我做了一个网站,修改了MongoDB,那么一旦我的网站有了用户,我则必须给这些用户提供我修改的MongoDB的代码。AGPL的传染性非常强,所以有些大公司都会禁止使用AGPL的软件。是的,MongoDB在一些公司是禁止使用的。