在阅读类似项目的代码后许可开源项目
Licensing an open source project after reading code of a similar one
我最近为开源 library/tool 贡献了一些代码,然后才意识到我想自己重新编写这个项目(不同的编程语言和设计选择)。但是,该项目的某些方面就像我自己完成的一样,或者只是值得 "copying"。即使我非常努力地尝试忘记原始代码——大多数 class 名称、常量和其他东西自然而然地被命名为相同的。原项目的许可证是AGPL。
- 我可以使用不同的许可证(例如 MIT)吗?哪些?
- 我必须在某处提及原始项目吗?
- 如果有,在哪里?我是否会被允许删除通知(也许在这两个项目经过几年的发展后真正分道扬镳之后)?
我不是律师,这里可能不是征求法律意见的正确场所。
然而,作为一个 FOSS 贡献者,这是我的看法。
一般来说,当您为开源项目做出贡献时,您会保留您编写的代码的版权,并根据允许每个人使用修改和分发它的许可发布它。
因此,您保留根据 MIT 或其他许可重新许可您贡献的代码的权利。这不算 "stealing" 代码和擦除 GPL 许可证——您是原始来源,您保留在不同的许可证下再次发布最初属于您的内容的权利。
有些项目,领导可能会要求大家转让版权,不过我觉得这种情况很少见。您应该检查许可声明以确保。除非某处有书面说明您明确同意将版权转让给他们,否则很可能您保留了它。
尽管如此,您无权再许可他人的作品。如果您修改了其他人的代码,对他们的 class 或其他内容做出了一些更改,您可能会成为共同所有者,至少我不愿意复制他们制作的部分并在未经许可的情况下重新授权它。
不过,这只是代码的文本。如果您想从头开始重写另一个程序,使用类似的高级计划但执行方式不同,我认为版权不会妨碍您。如果软件专利涵盖代码中的某些技术或方法,知识 属性 法律仍然会妨碍您。但这里好像不是这样。
为了避免法律问题,有时公司/人群会使用"clean room design" (https://en.wikipedia.org/wiki/Clean_room_design)。但是 iiuc 这样做只是作为一种预防措施,明确地避免任何可能的诉讼——法律不要求你使用这种技术只是因为你曾经看过 GPL 代码,iiuc。
关于这方面的一个例子,你可以看看 MinGW 交叉编译器项目的历史,以及它的 mingw-w64 衍生产品,它最初是因为一家私人公司想要一个 mingw 版本而开始的支持 64 位处理器和其他东西,因此使用洁净室设计对项目进行逆向工程。结果最终完全开源,但没有被接受回原来的 mingw 项目,所以现在有两个项目。 (希望这是一个公平公正的历史总结。)
我最近为开源 library/tool 贡献了一些代码,然后才意识到我想自己重新编写这个项目(不同的编程语言和设计选择)。但是,该项目的某些方面就像我自己完成的一样,或者只是值得 "copying"。即使我非常努力地尝试忘记原始代码——大多数 class 名称、常量和其他东西自然而然地被命名为相同的。原项目的许可证是AGPL。
- 我可以使用不同的许可证(例如 MIT)吗?哪些?
- 我必须在某处提及原始项目吗?
- 如果有,在哪里?我是否会被允许删除通知(也许在这两个项目经过几年的发展后真正分道扬镳之后)?
我不是律师,这里可能不是征求法律意见的正确场所。
然而,作为一个 FOSS 贡献者,这是我的看法。
一般来说,当您为开源项目做出贡献时,您会保留您编写的代码的版权,并根据允许每个人使用修改和分发它的许可发布它。
因此,您保留根据 MIT 或其他许可重新许可您贡献的代码的权利。这不算 "stealing" 代码和擦除 GPL 许可证——您是原始来源,您保留在不同的许可证下再次发布最初属于您的内容的权利。
有些项目,领导可能会要求大家转让版权,不过我觉得这种情况很少见。您应该检查许可声明以确保。除非某处有书面说明您明确同意将版权转让给他们,否则很可能您保留了它。
尽管如此,您无权再许可他人的作品。如果您修改了其他人的代码,对他们的 class 或其他内容做出了一些更改,您可能会成为共同所有者,至少我不愿意复制他们制作的部分并在未经许可的情况下重新授权它。
不过,这只是代码的文本。如果您想从头开始重写另一个程序,使用类似的高级计划但执行方式不同,我认为版权不会妨碍您。如果软件专利涵盖代码中的某些技术或方法,知识 属性 法律仍然会妨碍您。但这里好像不是这样。
为了避免法律问题,有时公司/人群会使用"clean room design" (https://en.wikipedia.org/wiki/Clean_room_design)。但是 iiuc 这样做只是作为一种预防措施,明确地避免任何可能的诉讼——法律不要求你使用这种技术只是因为你曾经看过 GPL 代码,iiuc。
关于这方面的一个例子,你可以看看 MinGW 交叉编译器项目的历史,以及它的 mingw-w64 衍生产品,它最初是因为一家私人公司想要一个 mingw 版本而开始的支持 64 位处理器和其他东西,因此使用洁净室设计对项目进行逆向工程。结果最终完全开源,但没有被接受回原来的 mingw 项目,所以现在有两个项目。 (希望这是一个公平公正的历史总结。)