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

These修斯悖论之船(如Wikipedia所述)“提出了一个问题,即对象是否具有全部基本上,替换的组件仍然是同一个对象。“

如果我确实设法编写了逐字功能的替换,我是否能够获得我更喜欢的许可证?

相关,我是否可以拉出经过发展的架构并以其他许可证重新使用?我认为单独使用它会很有用,但不喜欢现在已被GPL许可证“污染”的想法。

跟进:我决定与版权所有者联系并获得许可许可证。有时,最好的方法是进行社交互动,而不是通过程序进行互动!

评论

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

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

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

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

@Elin:是的,如果您想利用许可证,则必须遵守GPL。我的意思是,原则上您可以说“我从未接受过您的许可证”,然后回到没有权利但没有GPL义务的未许可状态。因此,您将违反版权(而不是更好),而不是违反GPL。是否可行取决于您的管辖范围。我知道在欧洲许多地方,许可证不是自动的。您不能让某人接受许可证(这就是EULA在这里可能无法执行的原因)。

#1 楼

首先,答案是否定的(对于翻译),您不能合法地重新许可它,也不能做任何超出原始许可合法性的事情。您可能已经完成了原始作者十倍的工作,但这并不重要,它具有病毒性。不仅因为它是GPL,还因为它不是干净的设计或重写。我们有一款成功的游戏,但想做自己的事,人们愿意为此付费,但DikuMUD许可严格禁止我们赚钱。当时,竞争对手也基于相同的代码库,因此他们选择公然无视版权,剥夺所有版权,基本上对所有人(包括他们自己)说谎。他们的逻辑是“没有原始代码存在”和“我们进行了大量重写和改进”,并且通常忽略了以20,000行代码开头的事实。他们为游戏中的物品收费,并且赚了太多钱而无法停止。

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

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

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

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

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

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

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

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

评论


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

– Codenheim
14-10-19在1:17

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

–迈克尔·肖(Michael Shaw)
14-10-19在2:52

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

– Dan1701
14-10-19在3:48

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

–back2dos
14-10-19在10:06

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

–史蒂夫·杰索普(Steve Jessop)
14-10-19在13:02



#2 楼

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


GPL关于将某些代码翻译成另一种编程语言的说法是什么?

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


评论


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

–兰登
14-10-19在7:12

@Landon您的作品仍然是GPL作品的衍生作品,因此它受GPL条款的约束。

– Philipp
14-10-19在7:16



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

–史蒂夫·杰索普(Steve Jessop)
14-10-20在12:09



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

–史蒂夫·杰索普(Steve Jessop)
14-10-20在12:19



#3 楼

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

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

还看到了这个问题:重写GPL代码以更改许可证

有人恰如其分地将其翻译成中文,但即使所有信息都已被替换,《哈利·波特》的中文翻译仍然是衍生作品。

当然,您有可能因改写GPL许可库而受到起诉(以及依靠低概率的道德性)是完全不同的讨论。

就向原始代码中添加功能而言,这是派生作品的(部分)定义:原作。不管添加多少,或最初的工作有多小,它仍然是派生的。

评论


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

–user122173
14-10-19在10:09



@Hurkyl那么50种灰色阴影?

– Yamikuronue
2014年10月19日在16:57

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

– gnasher729
14-10-20在10:03

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

– Codenheim
14-10-20在17:04



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

–艾琳
14-10-20在23:25

#4 楼

观察:GPL仅在您发布工作时才相关。

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

意见:GPL或任何许可都没有版权保护,它声称源代码,无论其大小如何。因此,当且仅当您的“派生”作品不能被识别为源自原始作品时,因为您更改了代码的结构并重新实现了所有功能,它实际上并不再是派生的,因为它将

这很难(不可能吗?)很难达到,尽管当您拥有现有代码库时要进行修改,而不是从头开始。

评论


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

–David Richerby
14-10-20在12:08



@DavidRicherby:如果是法律问题,则答案是针对特定司法管辖区的,q应该因为过于本地化而关闭。 :-)

–马丁·巴
14-10-20在12:24

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

– cloudfeet
2014-10-20 16:00



#5 楼

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

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


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

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

评论


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

–DougM
2014年10月20日下午13:46

取决于管辖权-至少在我身在何处,即使口头合同也具有约束力,只是难以证明。贴上适当笔迹的便利贴在理论上可以说很不错。 :p

– cloudfeet
2014-10-20 14:24



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

– cloudfeet
2014-10-20 14:25

#6 楼

是。

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

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

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

评论


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

–DougM
2014年10月20日在13:44



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

– MSalters
2014-10-20 15:25



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

– Codenheim
2014年10月20日在17:08

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

–user2338816
2014年10月20日20:15在

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

–CrazyCasta
2014年10月21日,0:48

#7 楼

简短的答案是您不知道。

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