GPL对javascript库的限制[关闭]


69

如果我在我的网站上使用GPL许可的JavaScript组件,它将被视为对公众的发布(因为组件的客户端代码已通过http加载到用户的浏览器中),因此我必须“开源”整个网站?

那么,我们可以说网站上JavaScript组件的使用是代码的分发,并且涉及整个网站代码的分发吗?

希望这个问题很清楚,您可以帮助我理解GPL的这一方面。


7
有人可以正确回答吗?问题是,当我使用公司专有JavaScript中的GPL JavaScript时,GPL是否会感染我们专有JavaScript,甚至整个Web应用程序?如果提供给客户,我们是否必须将应用程序的整个客户端部分发布为GPL?我认为,我们必须提出的事实确实表明GPL多么疯狂。我敢肯定,答案是“是的,您的整个应用程序都被感染了”,其他每种编程语言都是如此。请勿在GPL下发布用于一般用途的javascript库。
山姆·沃特金斯

3
@SamWatkins是GPL编写的JavaScript确实会感染您的专有JavaScript(除非您未在代码中使用或引用GPL编写的JavaScript)。后端代码完全不会被感染。本文中有更多详细信息。
Greendrake

Answers:


10

我不是律师。我曾与律师讨论过如何使用GPL和LGPL将代码解释/动态链接到非自由软件中。我们所有人都很头疼。问题不仅仅在于您是否必须根据GPL发布网站的其余部分。这是一个非免费的浏览器是否可以合法运行GPL代码。

我最好的法律建议是不要尝试对Javascript代码使用GPL。我永远不会在GPL下发布Javascript库,如果我找到了一些我想使用的代码,我会尝试让作者给我一个例外。LGPL可能是一个更好的选择,但是该许可证太复杂了,我建议也避免使用它。

FSF自己可以在FAQ中为您提供答案。如果编程语言解释器的许可证与GPL不兼容,我可以在其上运行GPL覆盖的程序吗?。这个答案本身是令人沮丧的模棱两可,但是它建议了可以在非GPL浏览器中运行GPL代码的路径。您可能还会发现FSF文章The Javascript Trap很有趣,尽管它并没有真正为您的问题提供清晰的答案。

就上下文而言,应该记住GPL和LPGL是在Unix时代编写的,当时大多数事物都是静态链接的。没有动态链接,没有解释性语言,脚本本身被认为是有价值的知识产权,等等。


12
IANAL,但是我要说的是,由于浏览器和脚本不是彼此的派生作品,并且组合也不是分布式的,因此任何浏览器都可以运行GPL代码。
Shiny先生和新安宇

17
在Windows上运行GPL软件(例如Gimp)完全可以。Internet Explorer中的GPL Javascript代码会有什么不同?您链接的FSF中的FAQ问题似乎很清楚,一点也不模棱两可。
Pointy 2010年

2
因为Javascript动态地挂钩到/链接到IE提供的DOM事件。我确实认为这是一个极端的情况,但这就是FSF在“ The Javascript Trap”论文中所争论的。
DeepSpace101,2012年

6
不,西德 那不是“ JavaScript陷阱”中所讨论的。这篇文章只涉及运行非免费的JavaScript代码,而不是运行非免费的浏览器。你从哪里得到那个的?最重要的是有2个投票?
GuiPrá2013年

1
GPL不限制使用。关于发行。Javascript通常是源代码。在用户收到之前,不会对其进行编译或链接。
雷纳德

4

您已经将JavaScript库分发给了用户。您必须先遵守GPL的发行要求。这是否需要您分发网站的其余部分,这会使事情变得复杂-如果您甚至正在考虑走这条路线,我建议您与一位能干的律师谈谈您的确切情况,并记住这是至少违反许可证的精神,无论是否也违反许可证的规定。


9
@Quentin:为什么我们每次都需要就这一相同的问题与每一层进行讨论?现在是常见问题解答。
Dan Dascalescu 2014年

1
@DanDascalescu是正确的,这是gnu.org/licenses/gpl-faq.html#UnreleasedMods的问题。服务器代码不应分发,客户端JS代码应分发。
亚历山大·里利茨基

2

这肯定会变得复杂。我举一个例子。如果您使用的是jQuery的GPL许可证(我知道它是双重许可证的,但请稍等片刻,请忽略)。

Google在其CDN上公开发布了jQuery(以及其他javascript框架),例如:http :
//ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js

因此,在这种情况下,您不是向用户分发javascript库的人,google是;-)

请注意:正如@bdonlan所述,只有经验丰富的律师才是真正考虑这一点的人。我仅提供了此答案,以提供您可以与律师交谈的内容的上下文。


广告“因此,在这种情况下,您不是向用户分发javascript库的人,而google是”,无论分发谁,您的代码都取决于GPL许可的库(就像使用C / C ++头文件),因此它也应该在GPL下。因此,您的客户端javascript在GPL之下,但这是一个问题,您的服务器端代码是否也应获得GPL许可。
弗兰塔

2

只是增加更多的燃料...

阅读gpl v3后,很明显,如果您包括gpl作品,则需要在源代码的顶部提供许可证文本和版权声明。

因此,如果我从文件中删除注释和空格并缩短变量名,然后将其“分发”到某人的浏览器(当然是以源形式),则可能会违反许可。顺便说一句,解决方案可能是二进制uuid,它代表损坏的文件的相应许可证。有什么想法吗?

如果我使用带有gpl stmt的库来提供库的源代码和自己的“源代码”,那么将其交付给浏览器是否构成了免费提供源代码?

我认为其中存在足够的漏洞,使许可证无法执行。

我的2美分/不是律师。


2

您的应用程序+ GPL库+发布->开源GPL应用程序。

这是FSF和GPL的目的,并且无论您使用哪种编程语言,它都适用。

GPL的JavaScript库会感染您的所有JavaScript代码。可能不会感染您的HTML,页面内容或服务器端代码。

因此,如果您打算将它们用于一般用途,请不要在GPL下发布JavaScript库。


2
GPL代码不能与其他其他copyleft代码自由混合,例如Apache许可代码。如果要免费许可证,请查看MIT或BSD许可证。这些许可下的代码可以在任何软件项目中自由使用。很好!您也可以像我一样将代码发布到公共领域。我宁愿拥有专有软件,也不愿拥有GPL软件。至少它不假装是免费的,并且从真正的免费软件上吸了很多力气。如果您想要一个免费的内核,请摆脱Linux并查看* BSD。在GPL被裁定为非法之前,Linux永远不可能是自由软件。
山姆·沃特金斯

2
GPL常见问题解答中列出的JavaScript的明显例外情况如何?gnu.org/licenses/gpl-faq.html#WMS
CloudMeta 2012年

2
仅当作者将其添加到许可证中时,该例外才有效。无论如何,它仍然会污染您的其他JavaScript代码。还可以添加“作为特殊的例外,忘记GPL,并使用此代码执行任何您喜欢的事情”。我称其为“公共领域”。
Sam Watkins 2012年

1
在我看来,GPL是对自由软件的不合时宜的选择。我确实感谢Stallman对免费软件所做的工作,但是由于自由软件许可证之间的许可证不兼容的困难,并且由于我相信除了免费软件外还可以编写专有软件,我不再希望将GPL用于任何软件项目-软件。
山姆·沃特金斯

对现有自由软件项目的改进应成为自由软件,但库的客户不一定是自由软件,并且可以在商业项目中重用自由软件项目中的某些代码。
山姆·沃特金斯

-1

这个人写了一篇关于它的文章: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,它确实要求发布所有网站源代码。


12
不过,JavaScript与后端Web代码不同,因为Java Script是通过下载而“分发”给最终用户的。我会将此问与答解释为是指未分发的后端代码。
尼尔斯2012年

-2

例如,Magento使用GPL v3下的ExtJS。现在,当Magento由购物商店所有者下载并安装时,您的意思是商店所有者必须提供指向其“整个网站源”以及其产品的链接?有趣的笑

因此,我认为,根据GPL v3许可的Javascript库对于任何项目都是有用的,除非您试图修改Javascript库并将其出售给商业或相关的商业服务。


1
不过,ExtJS也获得了商业许可...您知道Magento是否使用付费版本?我认为ExtJS团队会争辩说,如果您使用gplv3版本,则必须开源其他产品,这是他们让人们付款的一部分。
尼尔斯2012年

GPL并不禁止您对库收取费用,但它不允许您限制买方继续分发库。
Dave Van den Eynde
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.