我正在开发一个我希望在许可许可下发布的开源项目,因为它是一个库,而不是一个应用程序,而且就个人而言,我不喜欢copyleft的库代码。如果我要浏览用不同编程语言编写的GPL代码,只是为了大致了解如何做某事,然后用我正在使用的语言编写一个类似或相同算法的不同实现,那么可能是什么后果?如果我的代码与他们的代码有些相似并且明显受其影响,那么copyleft所有者会有任何合理的投诉吗?这些灰色区域通常如何工作?
答案 0 :(得分:8)
“什么构成衍生作品?”这不是程序员可以回答的问题。例如,请参阅What is the difference between an “aggregate” and other kinds of “modified versions”?和GNU Licenses FAQ。
关于您的具体案例,算法通常不受版权法的约束,但(可遗憾地)受专利法的约束。
这些灰色区域通常的工作方式是,您对此持开放态度,与原作者交谈,或许可以达成协议。这样的案件最终不会在法庭上结束,因为任何一方都不可能从中获得很多。如果 最终在法庭上结束,律师和法官将由决定而不是程序员。
答案 1 :(得分:7)
在发布任何类型的库时,我通常使用X11许可证(也称为3条款BSD),即使我知道在发布程序时依赖于GPL2 / 3。我之所以这样做是因为我想确保我的库可以不受任何FLOSS项目的限制而使用,这对我来说比在库中声明copyleft的理想更重要。
在这方面限制库是有点愚蠢的,例如,BSD将GNU的libreadline重写为editline并保持100%兼容的界面。这也是为什么你可能会做你想做的事情。
如果您正在查看一些用Scheme编写的示例,或者说LISP,甚至可能是PERL ..并在C中编写一些实现,那么您应该完全没问题。在制作自己的实现时,研究现有的实现绝对没有错。
我强烈建议您只询问GNU项目,发送电子邮件至licensing@gnu.org,并向他们提供您希望实现的目标的详细信息。你肯定会得到一个非常友好的回复,可以毫无顾虑地继续。
即使是RMS本人也会承认,解释GPL / AGPL / LGPL可能会很乏味,他们期望并欢迎这些问题。
答案 2 :(得分:2)
2个可能符合您要求的优秀许可证:
答案 3 :(得分:1)
免责声明:我不是律师,您应该去看一位对软件许可了解得足够多的知识产权律师。如果你去看一个愚蠢的人,他或她会告诉你“不要只是为了安全起见”,任何人都可以这么说。
见Clean room design。如果软件的行为几乎完全相同,则不应阅读源代码。
答案 4 :(得分:0)
根据您计划使用的许可许可,问题可能没有实际意义。换句话说,如果您的代码具有LGPL提供的基本自由,那么即使代码的直接副本也可以,版权所有者也不太可能追随您。
另一点是,如果原始代码是GPL,那么作者不太可能会反对你从他的算法和想法中得到某些东西(因为copylefters倾向于反对软件专利)。< / p>
通常的IANAL免责声明 - 除非您使用大量代码并尝试限制作者打算用其Copyleft保证的自由,否则我认为它不太可能成为现实生活中的问题。
答案 5 :(得分:0)
通常情况下,如果您的SW 必须“链接”GPL代码以使其成为派生作品......