从开放源代码项目派生/重用代码的正确方法是什么?


22

假设我正在开发一个开放源代码项目,并且想重用另一个开放源代码项目中的琐碎实用程序功能(例如,文件搜索/替换功能)。复制功能并仅在文件顶部写一个小的版权声明是否合法?我应该在许可证中包括他们作为整个项目的版权所有者的名字吗?

同样,假设我叉了一个开源项目。我在哪里以及如何指定版权所有人和我本人之间共享版权?

我猜答案必须根据开放源代码许可证而有所不同,但我希望尽可能多地获得一个通用答案。

PS:我主要关注法律方面,但可以自由考虑您的道德观点。


1
有问题的项目和您要发布的项目的许可证是什么?是的,您可以使用代码,但是请更具体一些,以便我们可以根据使用的许可证更好地通知您您的要求。
蒂姆·波斯特

1
@Tim Post:这主要是一个理论问题,但是否可以帮助我们假设这两个项目都具有GPL许可证,因为这很常见。
Olivier Lalonde 2010年

Answers:


25

我试图使这个答案尽可能适用于“元”。

使用其他项目中的代码片段/位

清楚地用原始作者的版权标记代码。确保您选择的许可证与您使用的代码的许可证完全兼容。您需要获得作者的许可才能将代码移至其他许可证(除非他们明确允许您这样做,即“ GPL 2或任何更高版本”)

您的程序应该有一个AUTHORS文件(或类似文件),在其中列出了所有贡献者以及您在其他项目中使用过的东西。

分叉项目

对于您实质性更改的每个模块,请在原始作者的版权下添加版权。许可也是如此,您受分叉时生效的许可条款的约束。如果项目说“仅限GPL2”,则必须尊重这一点,未经他们的许可不得进入GPL3。

这在很大程度上取决于现有的许可证。QPL说,例如,您只能分发补丁程序格式的更改,因此请确保您了解允许您分发软件的修改版本的术语。

除此之外,请始终保留版权。如果在现有内容上添加您自己的版权,请确保您清楚地标明您所主张的内容。


有时,您可以添加许可证。假设您想在GPLed项目中使用BSD功能:您无法删除BSD许可证,但它与GPL兼容,因此您可以在GPL下颁发整个项目,并注意该功能也在BSD下执照。礼貌地发布您在BSD下对BSD许可代码所做的任何更改。
David Thornley 2010年

@David-OP希望得到一个通用的答案(因此,我敦促研究许可证)。你说得很对。但是,双重许可您对BSD代码所做的任何更改都是“不错的”做法,因此原始作者可以根据需要实际使用它。
Tim Post

1
在什么时候主许可证文件的版权声明应高于原始作者的版权声明?当您的SLOC超过原始项目SLOC的200%时?300%?如果您分叉的项目最终成为项目中的许多库或模块之一?
滚刀

@hobs imo,版权声明的顺序并不表示贡献的大小,而是按时间顺序详细说明其来源。

@TechnikEmpire按时间顺序排列是有意义的,但是对于贡献者列表而不是版权声明?我认为版权声明可能会根据它们所适用的代码部分以及软件包中这些部分的价值/数量来安排得更好。如果您想更改许可证的某些信息,按优先级列出需要联系的人员列表很有用。因此,如果您从前几个(而不是最后一个)获得许可,那么如果确定要进行更改,则可以重新创建少量代码。我想知道莱纳斯做什么?
滚刀2015年
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.