Open source 开源项目中的重实现算法

Open source 开源项目中的重实现算法,open-source,gpl,Open Source,Gpl,我目前正在从事一个项目,我们使用一个开放源码库(GPL)进行一些特定的算法和计算。这将在稍后由我们自己的实现取代 我现在想知道的是,在实现自己的库时,开放源代码实现能给自己多少“帮助”或“启发”,而这些库应该在以后由封闭源代码应用程序使用。将某些代码段或过程直接从开源复制到实现中是不合法的。但是,在不违反GPL条件的情况下,您能在多大程度上遵循开源实现呢?如果您学习并理解源代码,则基于此进行自己的实现是合法的?版权仅保护算法的特定实现和描述(如学术论文),而不是算法本身。复制粘贴显然是一种违规行

我目前正在从事一个项目,我们使用一个开放源码库(GPL)进行一些特定的算法和计算。这将在稍后由我们自己的实现取代


我现在想知道的是,在实现自己的库时,开放源代码实现能给自己多少“帮助”或“启发”,而这些库应该在以后由封闭源代码应用程序使用。将某些代码段或过程直接从开源复制到实现中是不合法的。但是,在不违反GPL条件的情况下,您能在多大程度上遵循开源实现呢?如果您学习并理解源代码,则基于此进行自己的实现是合法的?

版权仅保护算法的特定实现和描述(如学术论文),而不是算法本身。复制粘贴显然是一种违规行为,就像复制粘贴然后模糊或扩展一样。理解算法,然后创建自己的、本质上不同的实现应该很好


然而,该算法也可能拥有专利,这是另一回事。

这与重新实现商业产品时应用的情况大致相同

这通常是以洁净室的方式完成的-一个团队将彻底分析产品,为其功能制定规范,然后另一个团队(其成员不来自原始团队)仅使用规范文档实施替换

正如tdammers所说,理解算法并进行新的实现通常是很好的(不包括专利问题)


一旦你开始编写自己的实现,你真的应该避免引用实际的GPL代码——如果你引用它,你很可能最终无法想到自己的函数名,并且使用与GPL代码相同/相似的函数名。虽然从技术上讲,这可能不是一个问题,但如果有人发现它,你将面临各种各样的指控,因此最好完全避免这个问题。

我投票将这个问题作为离题问题来结束,因为它涉及许可或法律问题,而不是编程或软件开发。有关详细信息,请参阅。