These修斯之船适用于GPL-如果我更换所有派生零件,是否可以重新许可我的程序?


99

GPLv2 C程序翻译Python,但发现很难按设计进行扩展并重写其中的大部分内容。该程序现在在结构上完全不同,但是有几个逐字翻译功能正在使用中。

These修斯悖论(如维基百科所述)“提出了这样一个问题,即已将其所有组成部分都替换掉的对象是否在根本上仍然是同一对象。”

如果我确实设法编写了逐字记录功能的替代品,那么我是否可以重新许可我偏爱的许可证?

相关,我是否可以将经过改进的体系结构提取出来并以其他许可证重新使用?我认为它本身将非常有用,但是不喜欢现在已被GPL许可证“污染”的想法。

后续:我决定与版权所有者联系并获得许可。有时,最好的方法是进行社交而非编程互动!


6
比较一下ReactOS的审计结果:有指控称ReactOS(免费的Windows替代品)被使用泄漏的,经过反向工程的MS Windows代码(他们从未获得许可)污染。他们通过用合法的“无尘室反向工程”代码系统地替换所有来源不明的代码来解决该问题,这些代码基本上是由干净规范编写的新代码。
jdm 2014年

3
@jdm中国墙/无尘室代码也必须由不参与逆向工程并且与他们进行有限(合法审查)沟通的人员编写。WRT不理会许可,而只是“侵犯版权”-这相当于同一件事,因为您仍然无权重新分发侵犯版权的材料。
goldilocks 2014年

9
@jdm GPL不是合同,不需要任何人接受。GPL是一个许可证,如果您使用该许可证,则必须遵守它。它不是一条双向路,也不是合同方式中的协商或设定多重义务。它所做的是陈述允许您使用代码的唯一规则。IANAL,但是我已经由几位许可律师向我解释了这一点。
Elin 2014年

3
@CrazyCasta:您误会了GPL的范围。您声明这是拥有任何权利的唯一原因。这显然是不正确的,并且完全被GPL本身否认。GPL仅涵盖发行权。即使没有接受GPL,您也拥有使用和学习代码的无限权利。
MSalters 2014年

1
@MSalters:GPL授予发行和修改权。没有许可证,您仅有权按原样使用该软件。
RemcoGerlich 2014年

Answers:


95

首先,答案是否定的(翻译),您不能合法地重新许可它,也不能做任何超出原始许可合法性的事情。您可能已经完成了原始作者十倍的工作,但这并不重要,它具有病毒性。不仅是因为它是GPL,还因为它不是干净的设计或重写。

在1992年,我对旧的MUD代码库进行了大规模重写时,我为此作了短暂的挣扎。我们有一款成功的游戏,但想做自己的事,人们愿意为此付费,但DikuMUD许可严格禁止我们赚钱。当时,竞争对手也基于相同的代码库,因此他们选择公然忽略版权,剥夺所有版权,基本上对所有人(包括他们自己)说谎。他们的逻辑是“没有原始代码存在”和“我们进行了大量重写和改进”,并且通常忽略了以20,000行代码开头的事实。他们为游戏中的物品收费,并且赚了太多钱而无法停止。

我很羡慕。但是我研究了版权法,咨询了我的良心,并决定甚至不能使用自己编写的代码,因为老实说我不是从头开始构建游戏服务器。

因此,我决定把钱花在嘴里,用W的副本从零开始写。我一直都在和Richard Richard的UNIX Network Programming一起工作。从头开始写作,比起重写DikuMUD时,我学到的东西要多得多,它还告诉我,我真的不明白站在别人的肩膀上意味着什么。在六个月内,我有了50,000行可称为我的操作代码。我将其命名为MUD ++,并在BSD下发布。我用早期风格的C ++编写得不好,但它仍然是我所知道的第一个免费的开源C ++ MUD。直到今天,没有人能把它从我身边夺走。当时我拥有最好的TCP服务器,没有其他人可以在不删除播放器的情况下进行“热重启”,很快每个人都在窃取该功能(而且我注意到许多GPL MUD都有我的BSD代码的片段-总是很有趣,GPL如何劫持BSD软件,反之则不行)。最终,我继续前进,所以这并不意味着决定是我的财富成败,但尽管其他人赚了很多钱,但最后我看上去在图形游戏的世界里他们已经减少了不再有大量的文本需求。

故事还没有结束……几年后,我在IBM工作,迪斯尼雇用我们为Epcot中心编写了实时3D多人游戏,并且我能够使用MUD ++的TCP内核作为基础游戏服务器!如果我不拥有自己的代码,就不会被允许使用它,并且它确实为我节省了数周的编码时间。最后,我为自己所做的选择感到自豪,并且我有一个故事要告诉我的孩子们。

人们轻描淡写并低估了从别人的框架开始建立的好处。

如果您认为自己“拥有”它,请测试一下自己。重新开始,旁边还有一本Python书。看看感觉如何。不要作弊,也不要看旧的代码库。查看输出。强迫自己独立思考各个方面,进行诚实的研究。您会为此而更好,并且可能会有更好的产品。

但是,在执行此操作之前,请尝试与原始作者联系。询问他们是否愿意重新许可。如果您打算出售二进制文件,请提供使用费。许多在90年代和2000年代发布GPL东西的作者现在已经分别在30年代,40年代和50年代,并且了解以软件为生的意义。我已经看到不止一个人将他们的东西从GPL许可给MIT,Apache,Boost或BSD。

最后,许可证不会覆盖您可能拥有的代码的先前权利。或者,如果您独立编写了一个全新的附件,例如,如果您编写了一个TCP引擎作为单人Tetris游戏的附件,并且它可以独立存在(特别是如果您以前是根据其他许可证发行的),那么您可以在其他项目中重用您的代码。您也拥有著作权。

我的信念是免费的。如果您要附加字符串,请不要随意打电话。几年后,有人邮寄给我,说他们在商业引擎中使用了我的游戏,主要是TCP,可能还有字节码解释器。他们在赚钱。我一点也不介意。作为一个骄傲的父亲,我现在仍然很幸福。


4
实际上,我会建议这样做,但我迷失了自己的故事。是的,可以肯定的是,一定要咨询原始作者,向他表示敬意,您可能会惊讶于作者经常为您烦恼而感到高兴。现在,许多在90年代和2000年代对GPL颇为关注的年轻大学毕业生现在已经意识到程序员必须谋生。
Codenheim 2014年

13
我喜欢这个答案,也想投票赞成,但是由于上一段中所有反GPL的讨论,我不能。GPL附加的字符串是将来可能不会附加字符串。
迈克尔·肖

9
好的答案,尤其是。建议与原始作者达成协议。自给自足通常是摆脱贫困的道路,尽管重写整个图书馆/平台/应用程序可能是值得的,但并非总是如此。
Dan1701 2014年

16
@MichaelShaw:实际上,我认为这是此答案中最出色的部分。您在另一端的主张实际上是错误的。如果GPLd代码的作者决定以不同的许可证发布其代码的新版本,则他们的权利就很好。他们不会将字符串附加到自己身上,而只会附加到与他们“共享”代码的人身上。我能描述的最好的方法是对人类的根本性缺乏信仰。
back2dos 2014年

9
我看到的方式是BSD样式的许可证在这里免费提供了此代码,这很简单。GPL风格的许可证旨在建立一个免费软件社区/生态系统/任何与封闭或非免费软件竞争的软件。为此,他们采取了许多战略措施,GPL和GPL类许可证的期限和种类(以及它们随着时间的发展)表明这是一项涉及许多价值判断的复杂业务。如果那些偏爱一个人的人认为另一个人是非自由的,或者那些提倡另一个人反对他们的人,那么两个人都会输掉。
史蒂夫·杰索普

31

GPL常见问题解答涵盖了这种情况:

对于将某些代码转换为其他编程语言,GPL怎么说?

根据版权法,作品的翻译被视为一种修改。因此,GPL关于修改版本的说法也适用于翻译版本。


这个特定的部分很清楚,但是当我扩展到程序的其余部分时(至少在我看来),它变得模糊。原始程序是一个小诅咒游戏,但是我在翻译上的工作包括添加网络,以便玩家可以进行面对面竞争,并重新配置以使其更具模块化/可扩展性。从本质上讲,游戏引擎与原始游戏引擎几乎没有相似之处,但游戏本身衍生出大量东西。回到我的相关问题,是现在的引擎是GPL,还是我可以将其拔出并重新用于MIT或BSD许可项目。
兰登2014年

7
@Landon您的工作仍然是GPL工作的衍生产品,因此它受GPL条款的约束。
菲利普2014年

1
@Landon:决定GPL是否适用的真正因素与GPL无关,而是您的最终结果是否是“衍生作品”。添加更多的内容不会将衍生作品变成非衍生作品,因为在法律上,与衍生作品的比例无关,而是原始数量。例行转换为另一种语言也是派生的,这就是FAQ告知/提醒您的内容。您必须问律师的问题是:“按照我的程序,法院会认为这是衍生作品吗?”。
史蒂夫·杰索普

...但是,这个答案集中在“普通翻译功能”上,这些功能大概是派生的,但是您说您打算删除。因此,我认为它并不能真正涵盖您的预期方案。它涵盖了您当前的情况,并且涵盖了如果您犯了一个错误并且没有设法将需要的一切都排除在外的情况。
史蒂夫·杰索普

8

即使您从头重写了整个库,也仍会通过法律审查,这令人怀疑。该代码将被视为“已污染”,因为您已经在GPL许可库中看到了该代码。

解决此问题的标准方法称为“洁净室实施”。您编写了一份需求文档,然后由其他人实施(尚未看到GPL代码)。

另请参阅以下问题:重写GPL代码以更改许可证

正如有人恰当地指出的那样,尽管所有信息已被替换,但《哈利·波特》的中文译本仍是衍生作品。

当然,您因重写GPL许可库而被起诉的可能性(以及依靠这种低可能性的道德观念)是完全不同的讨论。

至于向原始代码中添加功能,这是派生作品的定义(部分):添加到原始作品中。无论添加多少,或最初的工作有多小,它都仍然是派生的。


3
我不确定我是否喜欢类比的选择:最初的问题听起来更像是他们认为自己最初是与哈利·波特捆绑在一起的东西,但现在想将其与自己的幻想史诗小说以及发生的魔术和反派捆绑在一起主要在城堡的学校里

1
@Hurkyl那么50种灰色阴影?
Yamikuronue 2014年

8
看过代码并不意味着您复制了它。如果您希望原始代码的所有者不喜欢您的工作并起诉您,那么无尘室实现将很有用,因此您可以在法庭上说“我们没有复制代码;即使我们愿意,我们不能“,这是很强的防御力。看过代码后,您仍然可以说“我们没有复制代码”,只要这是事实。
gnasher729 2014年

2
同意@ gnasher729。GPL特别声明允许您学习代码。前提是作者发布了它以教您(除其他事项外)。因此,我从未将净室参数应用于GPL代码。不能出版食谱,然后起诉创建自己食谱的人,除非该代码已获得专利,否则专利保护涵盖的是技术和发明,而不是实施(AFAIK)。版权和专利是不同的问题。
codenheim 2014年

1
我要说的是,如果您违反GPL,则最终在法庭上的可能性很小,因为每次发生问题时,只有一个或两个例外,一个违反GPL的人的律师理解GPL,他们告诉他们停止或达成协议。每当我不得不写一封关于违规的信件时,这当然就是我的经历。并且有无偿律师会为原始开发者辩护GPL。确实,最好的建议是与原始编码员交谈。我已经要求人们使用双重/许可代码,他们几乎总是说还可以。
Elin 2014年

7

观察:GPL仅在您发布工作时才有意义。你发布了吗?

观察:这不是一个法律顾问网站,因此请丢弃所有合法的FUD,并运用常识。

意见:GPL或任何许可证都不具有版权思想,它声明源代码,无论其大小如何。因此,当且仅当您的“衍生”作品不能被识别为源自原始作品时,因为您更改了代码的结构并重新实现了所有功能,因此从所有实际目的出发,它不再是衍生作品,因为它将与洁净室的实施方法没有区别。

尽管当您修改现有的代码库时而不是从头开始,这很难实现(不可能?)。


8
“观察:这不是一个法律顾问网站,所以请排除所有合法的FUD,并运用常识。” 嗯,由于这显然是一个法律问题,解决方案不是假装法律问题不存在,而是要请律师。我的理解是,衍生作品不能仅仅因为您做更多的衍生而停止成为衍生作品。
David Richerby

1
@DavidRicherby:如果这是一个法律问题,则答案是特定于司法管辖区的,并且q应该因过于本地化而关闭。:-)
Martin Ba

2
@MartinBa-国际法版权方面几乎是一致的。存在局部差异,但我认为问题/答案不一定过于本地化而无用。
cloudfeet 2014年

5

您拥有所编写任何代码的版权。GPL的要求是:与GPL代码一起提供或发布的任何代码,还必须在类似的许可下发布。但是,版权仍然是您的。

因此,如果您在重写过程中部分发布了软件(因此代码和旧代码混合在一起),那么您就必须将该部分代码作为GPL进行发布,并且这不能撤消。但是,版权所有者是决定许可条款的人,因此您仍然有权对代码的该部分进行“双重许可”,包括将其与您自己编写的其他代码以及销售/再许可等相结合。

注意事项:

  • 尽管您编写的代码的版权默认情况下是您的,但可以通过其他合同/协议来更改它,例如,指定版权转让的CLA或与拥有您在“其时间”内所做的所有工作的雇主的合同。
  • 重写是否足以构成“派生作品”,最终与原始作者共享版权,这在很大程度上取决于程度。如果将代码逐行翻译为另一种语言(如您的问题所述),那么这些部分很可能算作派生。如果您在不查看细节的情况下实现了与API兼容的替换,那么可能不会。

(来源:几周前我公司组织的“版权和开源”会议)


您可能希望将“文档”替换为“合同”或“协议”。仅在纸上写“ DougM拥有cloudfeet的代码”是不够的。我们必须进行合法的交流,才能通过法院审查。
DougM 2014年

取决于管辖权-至少在我身在何处,甚至口头合同也具有约束力,只是难以证明。理论上贴上适当笔迹的便利贴会很好。:p
cloudfeet 2014年

但是,您的观点很好,合同/协议是一个更好的描述-谢谢:)
cloudfeet 2014年

3

是。

其他答案使用太多文字来解释您是否应该发表意见,但是这些意见与问题无关。

事实是,一旦您替换了最后的零件,您将拥有一份新作品,这无疑是通过查看GPL设计的作品而构建的。这不是版权法中的主要问题(专利将是另一个问题)。您分发的所有内容都是您的创作。

有很多材料支持这一理论,即软件程序中的版权是部分版权的总和。例如,MPL明确认可此模型。Google / Oracle诉讼归结为行级版权。


3
“通过观看”另一作品构成的作品是衍生作品,并且与您“观看”的作品具有相同的版权。
DougM

1
@DougM:对不起,但这是一个非常保守的假设,我从未在法庭上成功使用过。别忘了,如果该理论有任何法律意义,它也将适用于书籍-计算机代码没有确定什么是衍生作品的特殊法律。没有人会仅仅因为您在学校读过他的一部戏剧而争辩说您的书是莎士比亚的衍生作品。因此,该先例确定“衍生作品”的门槛比“阅读过类似作品”的门槛高得多。
MSalters 2014年

1
GPL特别声明允许您学习代码。这不是专有IP,它是免费的开放源代码。在GPL的整个生命周期中,我都没有任何法律支持,因为声称查看已发布的食谱以制作自己的食谱就意味着要衍生产品。
Codenheim 2014年

1
有人可能想知道,如果用原始代码替换Unix代码还不够,Linux会走多远。
user2338816 2014年

3
@ user2338816 Linux并非以Unix代码开头,而是以MINIX开头。从技术上讲,MINIX可能会针对Linux提起诉讼。这将取决于Linux如何重写其代码以及与大学共享MINIX代码所依据的许可证。但是,这还取决于政治和金钱,MINIX是否真的想追赶Linux,Linux是否有钱(通过像Red Hat这样的公司)与他们抗衡。
CrazyCasta 2014年

1

简短的答案是您不知道。

与Richard交谈时,您会发现他在许多实现中都“像狐狸一样疯狂”。GPL是专门为模棱两可和措辞不清楚而编写的。这些表示通常是不利于许可作者的利益,但也会给您的IP律师带来麻烦。聪明地,随着公司规模的扩大,它使您的知识产权律师越来越担心。小型商业企业对GPL进行“合理解释”可能是可以接受的风险,但是大型软件公司可能会更谨慎地聘请能够成功获得GPL污染的整个团队。

没有答案。不会有答案。那就是答案。

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.