GPL代码:什么是衍生工作?

我正在开发一个开放源代码的项目,我想在一个许可的许可下发布,因为它是一个库,而不是一个应用程序,并且我个人不喜欢copyleft的库代码。 如果我要浏览用不同的编程语言编写的GPL代码,只是想了解如何做一些事情,然后用我使用的语言编写一个类似或相同algorithm的不同实现,那么可能会后果? 如果我的代码与他们的代码有些类似,并且受到他们的明显影响,那么这个左版权所有者是否会有任何合法的投诉? 这些灰色地带通常如何工作?

在发布任何types的库时,我通常使用X11许可证(又名3子句BSD),即使我知道在发布程序时依赖于GPL2 / 3。 我这样做是因为我想确保我的图书馆可以不受任何FLOSS项目的限制而使用,这对我来说比在图书馆中声明copyleft的理念更重要。

在这方面做一个图书馆限制是很愚蠢的,例如,BSD重新编写了GNU的libreadline来编辑行,并保持100%兼容的界面。 这也是你为什么可以做你打算做的事的一个例子。

如果你正在看一些用Scheme编写的例子,或者说LISP,甚至可能是PERL,并用C编写一些实现,那么你应该是完美的。 研究现有的实现在创build自己的时候绝对没有错。

我强烈build议仅仅询问GNU项目,发送电子邮件licensing@gnu.org并向他们提供你希望完成的细节。 你一定会收到一个非常友好的答复,而且可以毫无顾虑地继续下去。

即使RMS自己也会承认,解释GPL / AGPL / LGPL可能是单调乏味的,他们期望并欢迎这类问题。

“什么构成衍生工作?” 这不是程序员可以回答的问题。 例如,请参阅“聚合”和其他“修改版本”之间的区别是什么? 和一般的GNU许可证常见问题 。

关于您的具体情况,algorithm通常不受版权法的约束,但(可悲的是)不受专利法的约束。

这些灰色地带通常工作的方式是,你是开放的,与原作者交谈,也许会达成协议。 这种情况不太可能会在法庭上结束,因为任何一方都不能从中获益。 如果最终在法庭结束,律师和法官将是决定的,而不是程序员。

2个很好的许可证,可能适合您的要求:

  1. 2.0版的Apache许可证非常宽松(如MIT / BSD),但双方都有专利诉讼保护
  2. LGPL第3版允许使用该库,但进一步开发(并分发)需要保留LGPL并释放源。

免责声明:我不是律师,你应该去看一个知道软件许可证的知识产权律师。 如果你去看一个愚蠢的人,他或她会告诉你“不要只为了安全起见”,任何人都可以这样说。

请参阅洁净室devise 。 如果软件的行为几乎完全相同,则不应该读取源代码。

根据你打算使用的许可许可,这个问题可能是没有意义的。 换句话说,如果你的代码具有LGPL提供的基本自由,那么即使是直接拷贝的代码也是可以的,版权所有者不可能追随你。

还有一点是,如果原始代码是GPL,那么作者不太可能成为反对你的types,因为他从algorithm和想法中获得了一些东西(因为copylefters倾向于反对软件专利)。

通常IANAL免责声明 – 我只是不认为这可能是一个真正的生活问题,除非你使用大量的代码,并试图限制作者打算保证与他们的copyleft自由。

通常情况下,如果你的软件必须 “链接”到GPL代码来运作它是派生工作…