我创建了一个基于LGPL项目的程序,并且不允许发布源代码


13

我认为LGPL是许可许可证,就像MIT,BSD或Apache一样。但是今天我读到,仅允许从封闭源代码链接到LGPL(库等)-除此之外,它是copyleft-因此我必须发布基于LGPL程序的代码。

我为雇主创建了一个基于LGPL程序的程序,但对该程序进行了相当大的修改。当然,不允许将修改后的源代码放在那里。同时,我必须分发(对吗?)。

因此,我想知道是否有解决方法,因此我可以保留此封闭源代码(希望我可以发布源代码)-有什么建议吗?

我的想法:我可以将原始LGPL应用程序的大多数功能放到外部库中,从头开始编写核心可执行文件,但可以参考该库中所有未修改的功能吗?

当前,所有内容都在.jar文件中(它是Java / Swing)。如果您认为我的想法在法律上/技术上是可行的-分开我写的内容和原著是多少?我不是最精通Java的人。


在这篇文章中,那个家伙说:“另外,可以通过将LGPL放在新的dll中并使用委托或接口从LGPLed源代码中调用它来规避LGPL。” -有人可以详细说明我如何使用原始Java应用程序吗?

16
这不是法律网站,我不会接受任何人在法律方面的任何建议,除非这些建议可以获取真正的法律建议。

5
LGPL主要关注分发,您尚未向我们提供有关计划分发此代码的方式的任何信息。在您这样做之前,这个问题不太可能获得准确的答案。无论如何,我将重申您不应该从互联网上获得法律建议
Rein Henrichs

我相信我现在在合法性方面对LGPL相当了解。所以我真的是在问你们如何使它在技术上起作用-尽管您当然是对的-如有疑问,我会咨询律师。
伊修斯(Esuus)

您没有说要使用什么软件,但是某些GPL / LGPL(和其他)软件提供商为您所处的环境提供了商业许可。
耶德(Jaydee)2012年

Answers:


13

首先,在这里寻求法律建议(例如:互联网)不是一个好主意。

其次,这只是我的意思,而不是律师,在您选择LGPL计划并为您的雇主对其进行修改之前,您应该想到这一点。

如果您只是因为不喜欢而忽略了许可证,那么现在那里拥有许可证就没有多大意义了?

如果您和/或您的雇主不愿发布您的修改后的源代码,则需要停止使用该LGPL编写的代码并予以删除。

再次,那只是我在说话。

向真正的律师寻求建议。


为了回答您有关通过将代码添加到DLL来规避许可证的问题,我认为这可以通过以下方式进行。

您将要做的就是更改原始程序,以使其能够调用外部库中的函数。您不必这样做,而不必根据您的需要,库,函数名称等来编写特定的代码。

然后根据许可证要求发布这些更改。

然后,使用您自己的专有代码创建自己的外部库,并要求该程序使用对它所做的修改来加载并执行它。

虽然我不知道LGPL许可证的全部范围,但我不能说这是否足以避免必须发布您的库,尽管我怀疑会这样做。

但是,再次

向律师寻求建议


4
请注意,撰写GPL许可证系列的FSF考虑使用动态链接来创建派生作品,因此这可能行不通。(其他人认为FSF是错误的。)尽管我可能是错误的,但我认为没有法律依据。
David Thornley

真?David,我坚信您比我更了解这一点,但是维基百科说,您甚至可以动态链接到GPL许可的库,而不必在GPL下发布:“例如,GPL链接例外允许未经自己许可的程序根据GPL链接到根据GPL许可的图书馆,而不会因此受到GPL要求的约束。” 因此,这使我想知道GPL和LGPL之间的区别是什么:我认为只有LGPL允许这样做。
伊修斯(Esuus)2011年

2
@戴夫:我的雇主的大型法律团队会不同意。他们非常积极地保护自己的知识产权,并且明确禁止将GPL代码与我们自己的代码链接,除非我们根据GPL分发代码。您在哪里找到该异常?我在GPLv2或v3中看不到它。听起来您正在引用的链接异常不是香草GPL的一部分。但是,版权所有者可以自行决定在其GPL代码中添加链接例外。咨询法律团队确实是最好的选择。
无效

5
我对此不信任维基百科。据您所知,该条目是由一个14岁的年轻人撰写的,他在上个周末阅读了有关许可的信息。获得真正的建议。或者,您可以打赌农场,希望您的公司不会遇到麻烦。无论如何。
Lasse V. Karlsen

@Dave链接到GPL是一个问题。据我所知,这是FreeBSD放弃GCC转向Clang / LLVM主要原因之一
Legolas

4

大多数采用LGPL或类似许可证发行的开源库,至少至少一个足以在您的项目中使用的库,都是使用开放/封闭原则构建的:http : //en.wikipedia.org/wiki/Open/closed_principle

您应该能够重构代码,以便将应用程序链接到LGPL库,并且所有扩展都包含在封闭的应用程序代码中。


好了,我用的LGPL代码的应用程序,而不是库..所以,问题是我是否可以把它变成一个图书馆或-像拉塞建议-把我的代码到库中,并保持休息LGPL /开
Esuus

1
@戴夫:LGPL过去被称为图书馆GPL。我真的还没有看到任何使用此许可证的应用程序。如果不是秘密,您在使用什么?
奥拉夫

FSF现在将其称为次要GPL。我现在能想到的应用程序的唯一用途是能够链接到专有库等。
David Thornley,

有趣的是,Mozilla和OpenOffice.org均通过LGPL许可。
伊修斯(Esuus)

@Dave:那我和@David Thornley在一起。Mozilla提供了创建可关闭代码的自定义插件的方法。我对OpenOffice不太熟悉,但我敢打赌他们会这么做。您使用的LGPL应用程序是否提供某种扩展功能,例如添加插件或使用脚本语言?您可以在代码中使用该机制吗?
奥拉夫

2

同样的免责声明:IANAL。

到目前为止,没有人提到,即使您确实分离了代码,您仍然必须将源代码分发到LGPL部件,或者至少提供有关可在何处下载的信息。

解决这个问题的唯一方法是不首先分发它们。


2

我认为您不需要律师来了解试图绕过许可证不是一件好事。常识就足够了。

相反,您可以联系LGPL程序的原始作者,并索要/购买不同的专有许可证。

唯一的其他选择是释放源代码或完全重写源代码。


1

IANAL,TINLA等

我认为LGPL是许可许可证,就像MIT,BSD或Apache一样。但是今天我读到,仅允许从封闭源代码链接到LGPL(库等)-除此之外,它是copyleft-因此我必须发布基于LGPL程序的代码。

是的,LGPL要求您将源代码提供给收到该作品副本的任何人,或者您必须以一种形式分发您的作品,该软件的接收者可以用新版本替换您的LGPL版本的作品版。无论哪种情况,作品的LGPL部分的所有修改都必须可供作品的所有接收者使用。

我为雇主创建了一个基于LGPL程序的程序,但对该程序进行了相当大的修改。当然,不允许将修改后的源代码放在那里。同时,我必须分发(对吗?)。

正确。该许可证要求所有软件接收者都可以访问源代码。

我的想法:我可以将原始LGPL应用程序的大多数功能放到外部库中,从头开始编写核心可执行文件,但可以参考该库中所有未修改的功能吗?

这可能是一个派生的工作,并且仍然需要您分发所有将程序分解为库的构建脚本。

当前,所有内容都在.jar文件中(它是Java / Swing)。如果您认为我的想法在法律上/技术上是可行的-分开我写的内容和原著是多少?我不是最精通Java的人。

Java还为LGPL增加了许多新问题,因为尚不清楚什么构成“静态”和“动态”链接。由于LGPL对GPL的例外都依赖于该概念,因此LGPL在大多数情况下实际上等同于GPL。您将需要咨询公司的法律团队,以回答可能提出的任何问题。

我的建议是,如果公司外部的任何人都可以访问该程序,则将其废弃并重新开始。如果您不能满足许可证的要求,则根本不允许您分发许可证。

如果该程序仅公司内部可用,则只需要使源可用于公司员工即可。我建议将其添加到您现有的公司源代码管理中。只要公司外部没有人可以使用,这将满足LGPL的要求


1

您可以使用适配器模式,而不用触摸原始代码。LGPL还允许您在自己的项目中继承类并覆盖其类的功能。


0

这是我的理解,IANAL。

检查包含您正在使用的代码的LGPL版本的文本。我认为要求是所有LGPL的代码都必须是可换出的,通常是使用共享库/ jar文件。如果您可以将LGPL使用的代码分离到一个库中,则可以根据LGPL发行该代码,同时可以根据自己喜欢的许可来发行应用程序。


0

您不能回避许可证。即使您发现了漏洞,它仍然是不道德的(尽管对于某些人来说这是一个不同的问题)。您可以做的是与该软件的作者联系,解释情况,并寻求单独的许可证。如果他愿意为您提供特殊的价格许可,您可以将其与重写软件的成本进行比较,而无需使用相关组件。并简单地选择便宜的一个。

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.