我可以在商业应用程序中使用GPL软件吗


203

我对GPL有3个问题:

  1. 如果我在应用程序中使用GPL软件,但不修改或分发该软件,是否必须在GPL下发布我的应用程序?

  2. 如果我修改了应用程序使用的某些软件该怎么办。然后,我是否必须根据GPL发布我的应用程序,还是可以仅根据GPL条款提供经过修改的软件。

  3. 如果我使用GPL软件但不修改它,该如何在我的应用程序中分发呢?

我的例子是,我有一个PHP框架,使用GeSHi库突出显示了一些输出。

  1. 因为GeSHi是GPL,我的框架是否必须是GPL?

  2. 如果我将修改返回给GeSHi维护者,是否可以针对应用的特定用例修改GeSHi?

  3. 我可以使用GeSHi重新分发我的框架吗?


10
商业!=专有
Gerstmann

2
只是好奇,在这种情况下分布意味着什么?例如,如果所讨论的程序是某个设备中的固件,但除销售该设备的公司之外任何人都无法触摸该固件,那么这是“发行版”吗?
Wes Miller

2
是的,是分布。这就是为什么您会发现诸如ADSL路由器之类的东西的原因:可以(必须)下载源代码。信誉良好的供应商会提供货源,因为许可条件要求它们。同样适用于NAS盒,IP摄像机和许多其他小工具。
quick_now 2013年

2
@quickly_now-这就是为什么在GPLv3中添加了Tivoisation的原因,因此,如果您在设备中使用GPLv2代码,则不必真正释放它,但是如果您使用GPLv3代码,则可以这样做。请记住,Tivo使用GPL代码并且从未发布过其修改,这使很多人感到不安,并在一定程度上导致了GPLv3的产生。
斯科特·惠特洛克

Answers:


177

如果我在应用程序中使用GPL软件,但不修改或分发该软件,是否必须在GPL下发布我的应用程序?

答案:您的问题有点模棱两可。两种情况:

(a)如果您不分发您的应用程序,那么答案是“否”,因为您没有分发您的应用程序。例如,如果仅在您的公司内部使用,则您没有义务做任何事情。

(b)如果您确实分发了您的应用程序,并且使用了GPL作为应用程序的一部分(即使仅在运行时链接到库),即使您不收取任何费用,即使您不进行更改该GPL软件以任何方式出现-那么您必须使您的应用程序的源可用。

提供源代码并不意味着下载。可能是您必须收到书面请求,然后发送清单的影印本(请参阅评论:您实际上无法发送清单。这有点夸张了)。您可以收取“合理”的处理/复印费用。但是您不能逃避提供自己的源代码的义务。

如果我修改了应用程序使用的某些软件该怎么办。然后,我是否必须根据GPL发布我的应用程序,还是可以仅根据GPL条款提供经过修改的软件。

答案:见上文。如果您使用的是GPL软件,则必须提供源代码。这包括修改后的GPL代码。

如果我使用GPL软件但不修改它,该如何在我的应用程序中分发呢?

答案:见上文。您可以分发它(GPL代码),前提是您可以使用它。

因为GeSHi是GPL,我的框架是否必须是GPL?

解答:如果您分发框架,则可以。

如果我将修改返回给GeSHi维护者,是否可以针对应用的特定用例修改GeSHi?

解答:如果需要,可以。不用了 您可以对其进行修改,但是在分发应用程序时,您必须使源可用,并且还必须对库进行修改的源。

我可以使用GeSHi重新分发我的框架吗?

解答:如果需要,可以。如果您的应用程序未随GPL代码一起分发,而是让用户单独下载使用该代码,那么您的情况会有些特殊,可能会引起一些争论,但最终还是会采用相同的原则:您必须使您的资源可用。

如果要避免这些问题,则需要使用具有不同许可的东西,或者至少要使用LGPL,这将允许运行时调用库,而不会将GPL条件的病毒传播回代码。

如有疑问,您需要法律咨询。您从我这里或其他任何人那里得到的任何建议都应谨慎对待。只有律师才能给您适当的法律建议。


67
又爱的GPL:触及它是开源的力量一切
TheLQ

31
请注意:它可能会违反许可以提供源代码的复印件。如许可证中所述:“作品的源代码是指对其进行修改的作品的首选形式。”
mipadi

26
@Petah:GPL就像病毒一样:它感染了它所接触的一切。如果提供通用接口,并允许用户安装他们选择的各种组件,则可以不受GPL的污染。但是,假设您放弃了您的东西,而其他人则将两者捆绑在一起……那么,看起来您的东西会受到GPL的触动。无论如何尝试,您都将面临非常困难的情况。
quick_now 2011年

10
如果问题已被问过几次,那么为什么这不是重复的?

11
请注意,收取“合理的”手续费并不会对对您的源代码感兴趣的人产生很大的威慑力;您的源代码的第一个收件人可以选择合法地向其他人提供您的源代码。
Brian

12

如果您在网站上使用它而不是重新分发可执行文件,这似乎非常不同意。

您可以复制,分发和修改软件,只要您跟踪源文件中的更改/日期并将修改保留在GPL下。您可以使用GPL库以商业方式分发应用程序,但还必须提供源代码。GPL v3试图弥补GPL v2中的一些漏洞。

特别

如果您以可执行文件的形式分发此库,则必须通过在分发时提供它来公开源代码,或者列出一种可访问的方式(URL,物理副本)来获取源代码,为期3年。如果您通过Web门户提供服务,则不适用。

https://tldrlegal.com/license/gnu-general-public-license-v3-%28gpl-3%29


2
您能对此进行扩展吗?目前它是您自己的一句话,还有tldrlegal的文字。在网站上使用GPL与在独立应用程序中使用GPL有何不同?

网站通常不分发软件(但仅提供服务)
Basile Starynkevitch 2014年

3
ASIDE:有一个AGPL许可证试图解决作为服务运行的GPL:tldrlegal.com/license/…–
kbrock

如果有问题的GPL库是用HTML,JavaScript和CSS编写的,并且库代码已由服务器“分发”到访问该网站的用户的网络浏览器中,我想知道这是否可能导致您的其他HTML,javascript,和CSS代码成为GPL。有趣的一点是,仅通过查看网页的源代码,该代码就已经“可用”,尽管可能不是其首选形式。但是,即使那样,您的服务器端代码也不会被分发,因此我想也不必是GPL。
still_dreaming_1 2015年

2

免责声明:我不是律师,而且我有一段时间没有阅读任何GPL版本,因此此答案在法律上可能不准确。

如果您发布/分发包含GPL组件的软件(例如静态链接库),则您的软件必须受GPL保护。(这是对版本2的印象;版本3可能有所不同。)

如果您使用LGPL的库发布/分发软件,则GPL无需涵盖您的软件,但是这些库必须保留LGPL。

对[L] GPL组件的修改建议将其返还给创建者/维护者。我不清楚这如何影响您产品的许可。


-4

我们可以在丛林中强制执行此类规则,但在现实生活中(国家或州的司法管辖),它取决于谁,谁,何时何地。

在非GPL OS上以二进制或库形式分发GPL程序时,就会出现法律问题(法律)。从法律的角度来看,GPL程序感染并感染了父母和孩子的非GPL程序(专有甚至其他开源许可证)。感染意味着衍生程序违反了GPL,被感染意味着GPL程序违反了自己的许可。当您以个人(人员,组织,公司)的身份编译分布式GPL源时,没有任何问题。


11
这似乎只是重复在4年前发布的先前答案中提出和解释的观点
gna
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.