如果我在我的网站上使用GPL许可的JavaScript组件,它将被视为对公众的发布(因为组件的客户端代码已通过http加载到用户的浏览器中),因此我必须“开源”整个网站?
那么,我们可以说网站上JavaScript组件的使用是代码的分发,并且涉及整个网站代码的分发吗?
希望这个问题很清楚,您可以帮助我理解GPL的这一方面。
如果我在我的网站上使用GPL许可的JavaScript组件,它将被视为对公众的发布(因为组件的客户端代码已通过http加载到用户的浏览器中),因此我必须“开源”整个网站?
那么,我们可以说网站上JavaScript组件的使用是代码的分发,并且涉及整个网站代码的分发吗?
希望这个问题很清楚,您可以帮助我理解GPL的这一方面。
Answers:
我不是律师。我曾与律师讨论过如何使用GPL和LGPL将代码解释/动态链接到非自由软件中。我们所有人都很头疼。问题不仅仅在于您是否必须根据GPL发布网站的其余部分。这是一个非免费的浏览器是否可以合法运行GPL代码。
我最好的法律建议是不要尝试对Javascript代码使用GPL。我永远不会在GPL下发布Javascript库,如果我找到了一些我想使用的代码,我会尝试让作者给我一个例外。LGPL可能是一个更好的选择,但是该许可证太复杂了,我建议也避免使用它。
FSF自己可以在FAQ中为您提供答案。如果编程语言解释器的许可证与GPL不兼容,我可以在其上运行GPL覆盖的程序吗?。这个答案本身是令人沮丧的模棱两可,但是它建议了可以在非GPL浏览器中运行GPL代码的路径。您可能还会发现FSF文章The Javascript Trap很有趣,尽管它并没有真正为您的问题提供清晰的答案。
就上下文而言,应该记住GPL和LPGL是在Unix时代编写的,当时大多数事物都是静态链接的。没有动态链接,没有解释性语言,脚本本身被认为是有价值的知识产权,等等。
您已经将JavaScript库分发给了用户。您必须先遵守GPL的发行要求。这是否需要您分发网站的其余部分,这会使事情变得复杂-如果您甚至正在考虑走这条路线,我建议您与一位能干的律师谈谈您的确切情况,并记住这是至少违反许可证的精神,无论是否也违反许可证的规定。
这肯定会变得复杂。我举一个例子。如果您使用的是jQuery的GPL许可证(我知道它是双重许可证的,但请稍等片刻,请忽略)。
Google在其CDN上公开发布了jQuery(以及其他javascript框架),例如:http :
//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
因此,在这种情况下,您不是向用户分发javascript库的人,google是;-)
请注意:正如@bdonlan所述,只有经验丰富的律师才是真正考虑这一点的人。我仅提供了此答案,以提供您可以与律师交谈的内容的上下文。
您的应用程序+ GPL库+发布->开源GPL应用程序。
这是FSF和GPL的目的,并且无论您使用哪种编程语言,它都适用。
GPL的JavaScript库会感染您的所有JavaScript代码。可能不会感染您的HTML,页面内容或服务器端代码。
因此,如果您打算将它们用于一般用途,请不要在GPL下发布JavaScript库。
这个人写了一篇关于它的文章:http : //stuck-in-windows.blogspot.com/2009/02/fud-over-javascript-and-gpl.html
在他的文章中,他引用了gnu网站的FAQ,其中包含问答:
(Q)一家公司正在网站上运行GPL程序的修改版本。GPL是否表示他们必须发布其修改后的源?
(A)GPL允许任何人制作修改后的版本并使用它,而无需将其分发给他人。该公司正在做的事情就是其中的一个特例。因此,该公司不必发布修改后的源。
FAQ然后引用了GNU Affero GPL,它确实要求发布所有网站源代码。
例如,Magento使用GPL v3下的ExtJS。现在,当Magento由购物商店所有者下载并安装时,您的意思是商店所有者必须提供指向其“整个网站源”以及其产品的链接?有趣的笑
因此,我认为,根据GPL v3许可的Javascript库对于任何项目都是有用的,除非您试图修改Javascript库并将其出售给商业或相关的商业服务。