工作场所中的GPL?


12

我曾经在一家咨询公司接受过采访,谈话中他们谈到他们使用开源产品(这很棒,我已经广泛使用了Hibernate,JBoss等。)令我惊讶的是,当我问到是否他们在为客户编写应用程序时使用了GPL许可的OSS,他们说:“当然,一直如此!只要客户得到了他们想要的东西并且感到高兴。” 现在,我不是律师,也不是大批执照的人,但是我给人的印象是,使用GPL代码(假设您包括了一些库),那么您需要在同一执照下发布整个应用程序。当我指出这一点时,我得到了一个快速的回答:“好,完成后,我们将所有源代码提供给客户,因此这实际上不是问题。”

不想进一步强调这个问题(采访不是像这样的争论的地方),我让它滑下来。但是,这仍然使我担心该业务的特定实践。GPL许可代码的正式字词是什么?它需要“开放”吗?您是否必须发布并说“我的公司使用了这个库,所以您可以在这里下载我们花费数百万美元构建的购物和订单履行系统应用程序”。在这种情况下,公司是否有权在客户不知情的情况下使用GPL代码?仅“给他们源头”就足够了吗?

Answers:


15

适用标准免责声明:我不是律师,您也不是。

GPL的核心是保护使用该程序获取和使用源程序的人的权利。它并不要求您发布使用GPL代码编写的任何程序的源代码,仅在于您发布此类程序时还必须提供源代码。

我可以编写供个人使用的任意数量的应用程序,提取GPL代码,并且永远不将任何这些源代码提供给任何人。我可以编写供公司内部使用的此类应用程序,而只需要向使用该程序的公司内部人员提供源代码(实际上,如果他们有充分的理由要求它,我将不得不这样做)。如果我为其他实体编写此类程序,则只需给他们提供代码(并明确说明该程序已获得GPL许可)-如果他们继续分发该程序,那么他们还必须使源可用,但我不了解。

因此,您的咨询公司可能唯一担心的是,他们未能使客户知道他们提供的代码所依据的许可证。实际上,我在撒谎-如果他们与客户协商了不同的许可证(客户拥有代码的所有权利...),那么他们也可能因此陷入困境...但是对于任何第三方代码而言,这都是正确的:除非是公共领域,否则您必须遵守许可,并且除非版权持有者授予您该权利,否则不得重新许可。


1
您是对的,但AGPL对此更严格

@Pierre:正确,在某种意义上,您不能通过坚持使用服务器应用程序来向用户提供源代码。
Shog9,2010年

1
有趣。因此,在标准GPL中,如果您编写了SaaS应用程序,那么您不需要提供源代码,因为您并不是从技术上“分发”应用程序本身?
瑞安·海斯

2
@Ryan:对。好吧,您不需要将其提供给用户。任何获得编译代码的人仍然可以获取源代码。
Shog9,2010年

7

作为顾问,我很想尽早向客户提出许可问题,以便他们做出明智的选择。如果适用于他们的问题的最佳技术是在GPL之下,但他们不遵守许可,那么我将无法使用它。实际上,这产生了两个影响。

首先,许多人乐于为避免这种问题而专门购买商品。这在嵌入式系统世界中尤其常见,在这种情况下,要符合GPL要求有效地发布完整的硬件设计并记录其所有工作方式,以符合GPL的精神,这是使最终用户可以更改产品的一种尝试。 。尽管可以制造出如此开放的产品,但这需要公司各个层次的巨大投入。更大的问题是,设计的许多组件是由其制造商根据NDA向我们记录的,因此实际上不可能创建使用NDA下发布的文档的GPL兼容代码。

其次,相对于任何修订版的GPL,我们现在都更倾向于MIT许可证及其许多亲属(这清楚表明了商业用途是可以接受的)。我没有任何客户反对将错误修复和改进发布回相关产品社区。由于许可证是许可的,因此我可以履行我的NDA义务,让我的客户满意,并为相关社区做出贡献。


2

开源不一定意味着免费。

IANAL也可以,但一般来说,GPL的要求是为您的项目提供源代码。您当然可以将产品出售给其他人。但是,我相信您不能阻止他们放弃它。这可能是使大多数GPL软件免费的原因,例如啤酒。我相当确定您不必仅将代码发布到world + dog,因为它是GPL的。

从GPL的序言到v3(强调我自己):

大多数软件和其他实际作品的许可旨在剥夺您共享和更改作品的自由。相比之下,GNU通用公共许可证旨在确保您可以自由共享和更改程序的所有版本,以确保该程序仍为所有用户免费使用。我们(自由软件基金会)对大多数软件使用GNU通用公共许可证;它也适用于其作者以这种方式发布的任何其他作品。您也可以将其应用于您的程序。

当我们谈到自由软件时,我们指的是自由,而不是价格。我们的通用公共许可证旨在确保您可以自由分发免费软件的副本(并根据需要付费),可以接收源代码,也可以在需要时获得源代码,从而可以更改软件。或在新的免费程序中使用它,而您知道您可以做这些事情。

来源

在这种情况下,公司是否有权在客户不知情的情况下使用GPL代码?仅“给他们源头”就足够了吗?

这是一个稍微不同的问题。如果客户有一些期望,并且期望是合同规定的,则公司可能存在问题。否则,由他们决定如何最好地完成工作。但是,它们应该在源代码中包含有关许可证的声明。我不确定他们是否必须以其他任何方式向客户披露。


2
GPL不需要您主动发布源,但是它确实要求您向用户发布该程序是GPL的事实,并且您将根据要求提供源(可能要支付公平合理的手续费)。实际上,后者的要求通常由可根据要求提供的URL的压缩包或zip处理。作为顾问,您有义务让您的客户知道如果他们将您的作品分发给其他人,他们的负担将是什么,因为他们成为GPL的发布者。
RBerteig

@RBerteig感谢您的澄清。自从我仔细阅读了许可条款以来已经有一段时间了。
乔治·玛丽安

“您当然可以将产品出售给其他人。但是,我相信您不能阻止他们将其赠与。” 取决于您是否根据GPL向他们提供了某些东西,或者您是原始的版权所有者,然后根据不同的许可向他们重新授予了版权。
endlith 2013年

-5

不,你是对的。原因如下:

考虑我们是否有根据GPL提出的申请。现在,专有代码无法使用它。

如果足够开放使用GPL的源代码,我可以将基于它的项目开源为BSD。

然后专有软件可以使用GPL产品。


4
这是没有道理的。GPL并未声明专有代码无法使用它。正如C先生的回答明确指出的那样,GPL完全是关于分销的。简而言之,除非您还根据兼容许可证分发该软件的源代码,否则您不得分发使用GPL代码的软件。
dash-tom-bang 2010年

1
专有代码不能使用GPL代码。其部分原因在于许可证的存在。
替代

这完全取决于您所说的“专有代码”。如果您的意思是“您拥有的代码”,那么这是没有意义的-GPL无法夺走您的版权,因此,除非您将其分配给自己意愿的FSF,否则您仍然拥有自己编写的代码。OTOH,如果您的意思是“您希望根据与GPL不兼容的许可证进行分发的代码”,那么您是正确的-正如您能够获取并使用所构建的源代码一样,您有义务授予用户此项权利到您的来源。再次,这是关于分发的-没有人无法获得您的程序对您的代码拥有权利。
Shog9 2010年

@先生。C用专有代码表示,我的意思是与GPL不兼容的代码。和代码分发到客户端,以便......但是,是的,我不是律师,所以我可能是错的。
替代

2
-1,误导性答案。这仅对于“使用”和“专有”的某些定义才适用。例如,我可以创建一个嵌入式Linux产品,仅发布Linux内核和直接链接到内核代码的代码,而不发布我的UI或恰好在GPLed内核上运行的其他应用程序。存在许多这样的关系。使用“专有”的模棱两可已被涵盖。而且,在大多数辖区中,仅授予雇用开发人员进行编码的一方的“用于出租的工作”与分发不同。IANAL等
HedgeMage 2010年
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.