Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Open source 在重用代码时,如何明确每个文件的版权所有者?_Open Source_Licensing - Fatal编程技术网

Open source 在重用代码时,如何明确每个文件的版权所有者?

Open source 在重用代码时,如何明确每个文件的版权所有者?,open-source,licensing,Open Source,Licensing,我想重用一些根据BSD许可证授权的代码,但我不知道如何明确我写了什么、重用了什么以及修改了什么 假设我要从中重用代码的项目具有以下目录结构: project/ |-- LICENSE.txt |-- module1/ | |-- file1.c | |-- file2.c | `-- file3.c |-- module2/ `-- module3/ my_project/ |-- the_other_project | |-- LICENSE.txt | |-- mo

我想重用一些根据BSD许可证授权的代码,但我不知道如何明确我写了什么、重用了什么以及修改了什么

假设我要从中重用代码的项目具有以下目录结构:

project/
|-- LICENSE.txt
|-- module1/
|   |-- file1.c
|   |-- file2.c
|   `-- file3.c
|-- module2/
`-- module3/
my_project/
|-- the_other_project
|    |-- LICENSE.txt
|    |-- module1/
|    |   |-- file1.c
|    |   |-- file2.c
|    |   `-- file3.c
|-- my_file1.c
|-- my_file2.c
|-- my_source_code1/
`-- my_source_code2/
LICENSE.txt的内容是BSD许可证,即其内容为:

Copyright (c) <year>, <copyright holder>
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
[...]
我应该如何声明我不是模块1下文件的版权持有人? 复制原始LICENSE.txt,在其标题中包含原始版权所有者,是否足够, 到module1子目录?或者我应该为每个单独的文件添加版权头吗

如果我修改module1下的任何文件会怎么样?我是否应该以某种方式将自己添加为我修改的文件的额外版权所有者


注意:对于我编写的代码,我完全可以使用相同(或兼容)的许可证。

我喜欢在源代码的注释中引用该许可证-这样做更容易,因为人们更可能打开源文件并四处玩,而不是先检查目录结构。一条简单的注释,说明代码版权归X所有,并由Y授权,这有助于引导某人找到相应的许可文件。

module1
dir中复制
license.txt
,并在文档(自述文件、许可证等)中提及您使用项目的这一部分。BSD风格的许可非常自由:只要您给予应有的信任并尊重其要求(这通常涉及提供未修改的许可和版权声明),您就可以对代码执行任何您想要的操作

如果修改任何文件,一个好的做法是在文件头、更改周围以及全局文档中提及它。如果修改后的文件没有版权声明,只需添加一个描述您的更改。这样,用户就可以知道修改了哪些文件、是谁修改的、为什么修改以及如何修改


就这么简单:用一种非常描述性的方式来做。与GPL风格的许可证相反,没有要遵循的正式程序。这更多的是文档而不是法律工作。

你不想在这里冒任何误解版权的风险。因此,我会尽量采用以下结构:

project/
|-- LICENSE.txt
|-- module1/
|   |-- file1.c
|   |-- file2.c
|   `-- file3.c
|-- module2/
`-- module3/
my_project/
|-- the_other_project
|    |-- LICENSE.txt
|    |-- module1/
|    |   |-- file1.c
|    |   |-- file2.c
|    |   `-- file3.c
|-- my_file1.c
|-- my_file2.c
|-- my_source_code1/
`-- my_source_code2/
除此之外:

  • 每个文件都应该有一个标题,注明版权、所有者和许可证
  • 在您自己的许可证中提到您正在使用另一个项目的部分代码
  • 如果修改其他项目中的代码,请在项目的源文件中添加版权和名称
如果您没有对其他源代码进行太多修改,则会出现这种情况。如果您正在重写所有代码,只需在许可证中提及其他代码的来源。

我刚刚发现,由软件自由法律中心发布。虽然它特别谈到将BSD风格的许可(他们称之为许可)合并到GPL许可代码中,但我认为第2.1节中的建议,包括未修改的许可文件,将是一个很好的一般性建议。我引述:

如果外部项目使用 单一版权文件方法 开发人员应复制所有 该文件的版权所有者 并将它们与任何 版权、许可和保证 声明要求的免责声明 许可证,位于 合并的源文件

如果您修改了包含的文件,并且您的项目GPL,则上述文档中有两个相关部分:


如果您修改了包含的文件,并且您的项目不是GPL,那么文档显然没有解决这种情况。但从我从其他答案中收集到的信息来看,我想说,只要你在项目中使用的许可证不是病毒性的,正确的做法是将你自己作为版权所有者添加到你修改的文件的版权头中,并在你的文档中某处提到包含代码的来源。

,即使我重复使用的原始文件没有说明版权的注释,你会添加一个吗?如果我修改了一个文件,你会添加一条注释,说明该文件已经被我修改了?如果我修改了模块1中的任何文件?你会在什么地方明确提到吗?如果我重用的代码是GPL许可的,那么会有一个正式的过程吗?你能为这个过程提供一些指导或者自己解释一下吗?注释字段太短,无法描述GPL对用户的法律义务,我建议你阅读维基百科页面:。例如,您不能以唯一的二进制形式分发,必须将所有更改作为GPL源发布。