首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适用于GPL的“特修斯之船”--如果我替换了所有的派生部件,我能重新确认我的程序吗?

适用于GPL的“特修斯之船”--如果我替换了所有的派生部件,我能重新确认我的程序吗?
EN

Software Engineering用户
提问于 2014-10-18 23:11:51
回答 7查看 6.9K关注 0票数 104

我将一个GPLv2 C程序翻译成Python,但发现很难按照设计和重写的方式对其进行扩展。这个程序现在在结构上完全不同,但是有几个逐字翻译的函数在使用中。

特修斯悖论号船 (如维基百科中所述)“提出了一个问题,即一个已经替换了其所有组件的对象是否从根本上还是同一个对象。”

如果我确实成功地为逐字函数编写了替换程序,那么我是否能够重新使用我喜欢的许可证呢?

与此相关的是,我是否能够从进化的体系结构中提取出来并使用不同的许可来重用它呢?我认为它本身将是非常有用的,但不喜欢它现在被GPL许可“污染”的想法。

跟进:我决定与版权持有人联系,并获得许可重新确认。有时最好的方式是社交互动,而不是编程!

EN

回答 7

Software Engineering用户

回答已采纳

发布于 2014-10-19 00:47:22

首先,答案是否定的(对于翻译来说),你不能合法地维护它,或者在原始许可法律之外做任何事情。你很可能已经完成了10倍的原始作者的工作,但这并不重要,它是病毒。不仅仅是因为它是GPL,还因为它不是干净的设计或重写。

1992年,当我对一个旧的泥巴代码库进行了大规模的重写时,我对此做了短暂的挣扎。我们有一个成功的游戏,但想做我们自己的事情,人们愿意支付它,但DikuMUD许可证严格禁止我们赚钱。当时的竞争对手也是基于同样的代码库,他们选择公然无视版权,删除版权的所有痕迹,基本上对所有人撒谎,包括他们自己。他们的逻辑是“原始代码都不存在”和“我们已经做了大量的重写和改进”,而忽略了他们从20,000行代码开始的事实。他们对游戏中的物品收取费用,而且赚的钱太多而无法停止。

诚然,我是嫉妒的。但我研究了版权法,并咨询了我的良心,并决定我甚至不能使用我所写的代码,因为我诚实地没有从零开始构建游戏服务器。

于是我决定把钱放在嘴边,白手起家,一直和我一起写W·理查德·史蒂文( W. Richard Steven)的UNIX网络程序,我开始了。从零开始写作,我的方式,比我重写DikuMUD时教给我的更多,它也教会了我,我并不真正理解站在别人肩膀上意味着什么。六个月内,我就有了50,000行操作代码,我可以称之为我的代码。我把它命名为MUD++,并在BSD下发布。在早期风格的C++中写得不好,它仍然是我所知道的第一个免费的、开源的C++泥浆。直到今天,没有人能从我这里夺走它。当时我拥有最好的TCP服务器,没有其他人可以在不放弃播放器的情况下进行“热重启”,很快每个人都在窃取这个特性(我注意到许多GPL MUDs都有我的BSD代码片段--总是很有趣的是GPL如何劫持BSD软件,但反之亦然)。最后,我继续前进,所以这个决定并不是我的命运的成败,但是其他人赚了一段时间的钱,但我最后一次看到他们减少了,在一个图形游戏的世界里,对文字的需求已经不多了。

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

人们低估并低估了从别人的框架开始所带来的好处。

如果你认为你“拥有”它,那就考验你自己。重新开始,你身边有一本Python的书。看看感觉如何。不要欺骗,也不要看旧的代码库。看看输出。强迫自己独立思考每一个方面,做诚实的研究。你会做得更好,而且可能会有更好的产品。

不过,在你这么做之前,试着联系原作者。问他们是否愿意重拾信心。如果您计划出售二进制文件,请提供版税。许多在90年代和2000年代发布了GPL的作者,现在已经30岁、40多岁和50多岁了,他们明白在软件中谋生意味着什么。从GPL到MIT、Apache、Boost或BSD,我已经看过不止一次了。

最后,许可证并不覆盖您可能拥有的先前的代码权限。或者,如果您独立编写了一个干净的外接程序,例如,如果您编写了一个TCP引擎作为单个玩家俄罗斯方块游戏的外接程序,并且它可以干净地独立运行(特别是如果您以前是在另一个许可证下发布的),那么您可以在其他项目中重用您的代码。你也有署名权。

我相信自由就是自由。如果你要附加条件,不要叫它自由。几年后,有人给我发了邮件,说他们在一个商业引擎中使用了我的游戏,主要是TCP,可能还有字节码解释器。他们在赚钱。我一点也不介意。作为一个骄傲的父亲,我现在仍然很快乐。

票数 98
EN

Software Engineering用户

发布于 2014-10-19 07:04:52

这个场景在GPL常见问题中有介绍:

GPL对将一些代码转换成不同的编程语言有什么看法?在著作权法中,翻译作品被认为是一种修改。因此,GPL所说的修改版本也适用于已翻译的版本。

票数 32
EN

Software Engineering用户

发布于 2014-10-19 05:53:51

即使你从头重写了整个图书馆,它是否会通过法律审查也是值得怀疑的。代码将被视为“受污染的”,因为您已经在GPL许可库中看到了该代码。

解决这一问题的标准方法称为“洁净室实施”。您可以编写一个需求文档,并让其他人实现它(他还没有看到GPL代码)。

也请参阅这个问题:重写GPL代码以更改许可证

有人恰如其分地说,“哈利·波特”的中文翻译仍然是一部衍生作品,尽管所有的信息都被替换了。

当然,由于重写GPL许可库而被起诉的可能性(以及依赖这种低概率的道德)是完全不同的讨论。

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

票数 8
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/260347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档