开源软件项目中的版权声明
原文:Copyright Notices in Open Source Software Projects 作者:Andy Updegrove,编译:御坂弟弟
"在一个有许多贡献者的开源软件 OSS (Open Source Software)项目中,一个文件的顶部应该出现什么版权声明?" 这是许多开源开发者共同关心的问题。本文将分享一个在经过了许多社区的讨论后形成的共识。
当源代码、文档和其他内容被贡献给一个 OSS 项目时,这些贡献的版权通常仍由原版权人拥有。
以下是对典型的开源软件项目的讨论,在这个项目中,每个贡献的组织和个人都保留了他们在项目开源软件许可证下提供的版权所有权。在这种情况下,版权作为项目的一部分被授权发布。无论项目是否使用开发者原产地证书 DCO(Developer Certificate of Origin)或贡献者许可协议 CLA(Contributor License Agreement),原版权人都保留其版权。
版权声明 - 社区最佳实践
大多数 LF(Linux Foundation) 项目社区并不要求或建议每个贡献者在贡献的文件中包含他们的版权声明,反而建议使用类似于下面的形式的更通用的声明(其中 XYZ 是项目的名称):
- XYZ 作者版权所有(Copyright The XYZ Authors)
- XYZ 贡献者版权所有(Copyright The XYZ Contributors)
- XYZ 项目的贡献者版权所有(Copyright Contributors to the XYZ project)
这些声明旨在传达以下内容:
- 该作品是有版权的
- 代码的贡献者对其进行了授权,但保留其版权的所有权
- 它被许可作为指定项目的一部分进行分发
通过使用共同的格式,该项目避免了维护作者或版权所有者的名字、年限或范围以及(c)符号的变化。这样做的目的是最大限度地减少开发者和维护者以及代码的再分发者的负担,特别是在遵守许可证要求进一步的分发保留或复制版权声明的情况下。
是否可以加入自己的版权声明
请注意,如果贡献者希望在他们的贡献中保留自己的版权声明,这并没有错,也是可以接受的。以上是为了方便使用而推荐的格式,但并不是 LF 项目社区所规定的。
如果您是代表您的雇主进行投稿,您可能希望与您的法律部门讨论他们是否要求您在投稿中加入版权声明,以确定雇主为版权持有人。LF 许多成员的法律部门已经批准了上述建议的做法。
如何处理从第三方复制到项目仓库的代码
如果一个文件只包含来自第三方的代码,而第三方并没有自己贡献它,那么你就不需要添加上面的声明。(类似的,如果你不拥有它,你也不会添加一个声明,确定你是版权持有人)。只要保留现有的版权和许可声明即可。
然而,如果你在另一个项目的已有文件中添加了可受版权保护的内容,那么此时你可以添加一个类似于上面的版权声明。
不要在未经他人允许的情况下更改他人的版权声明
一般情况下,不应该更改或删除他人的版权声明,除非他们明确(书面)允许您这样做。这包括第三方在已有代码中的声明。
不要列出每个版权持有者
LF 项目社区不要求或不建议列出每个文件的每个版权持有者,理由如下:
- 为了让贡献者保留其版权的所有权,版权声明不是强制性的
- 版权声明很少随着文件的发展而保持更新,这会导致声明不准确
- 试图保持声明的更新,或纠正已经变得不准确的声明,会增加开发者的负担,却没有实际的好处
- 开发者和维护者往往不希望担心,例如,一个小的贡献(如错别字修正)是否意味着应该添加新的版权声明
- 当下游发行商的许可合规过程涉及到复制通知时,添加许多不同的版权通知可能会增加他们的负担
- 贡献者可能不知道拥有版权的具体个人或法律实体;它可能是你、你的雇主或其他实体
对于 LF 的所有项目,每篇贡献的版权仍然由做出贡献的原版权所有者拥有。LF 以外的其他组织和项目可能会使用贡献协议来要求贡献的转让,也就是说,你对贡献的版权所有权会转移到维护项目的实体。你应该查看项目的贡献条款、机制和政策,以确保你了解贡献的效果。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Prometheus时序数据库-数据的查询
Prometheus时序数据库-数据的查询 前言 在之前的博客里,笔者详细阐述了Prometheus数据的插入过程。但我们最常见的打交道的是数据的查询。Prometheus提供了强大的Promql来满足我们千变万化的查询需求。在这篇文章里面,笔者就以一个简单的Promql为例,讲述下Prometheus查询的过程。 Promql 一个Promql表达式可以计算为下面四种类型: 瞬时向量(Instant Vector) - 一组同样时间戳的时间序列(取自不同的时间序列,例如不同机器同一时间的CPU idle) 区间向量(Range vector) - 一组在一段时间范围内的时间序列 标量(Scalar) - 一个浮点型的数据值 字符串(String) - 一个简单的字符串 我们还可以在Promql中使用svm/avg等集合表达式,不过只能用在瞬时向量(Instant Vector)上面。为了阐述Prometheus的聚合计算以及篇幅原因,笔者在本篇文章只详细分析瞬时向量(Instant Vector)的执行过程。 瞬时向量(Instant Vector) 前面说到,瞬时向量是一组拥有同样...
- 下一篇
RT-Thread学习笔记 --(6)RT-Thread线程间通信学习过程总结
前两篇文章总结了RT-Thread多线程以及多线程同步的学习过程,关于前两篇学习总结,可以查看之前的文章。 本篇文章继续总结关于RT-Thread多线程相关的最后一个重要知识点:线程间通信。前面的文章多次提及到,一个大的任务拆分为多个小任务,这些小任务之间必然存在着各种各样的关系,导致这些小任务的线程不能各自为政,必须要考虑其他任务线程的运行情况。 既然已经有了线程间同步,可以让多个线程之间进行相互沟通,那为啥还需要线程间通信呢?线程间通信到底是什么东西,这种方式有什么应用场景? 关于多线程之间的通信,RT-Thread官方提供了比较丰富的文档作为参考,具体可以查看以下链接:https://www.rt-thread.org/doc... 本文尝试从以下几个方面总结一下RT-Thread线程间通信的学习过程 线程间通信的相关概念 什么是线程间通信?通信,顾名思义,就是双方需要进行沟通与对话。通俗地概括,就是A线程在工作运行期间,有某些数据或者信息,要告诉B线程,让B线程接收到这些数据或信息后,能够继续完成指定的任务和工作。 两个线程之间为什么要进行通信呢?还是那句话,多个任务线程并不是...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题