有一天,我在查看 OpenStack Ceilometer 文档的源文件时,注意到顶部有一个版权声明。现在,我绝不想挑尼古拉斯的毛病。在 OpenStack 文档和代码中,有数百个这样的版权声明,这只是我碰巧看到的例子。
(请注意,我的雇主在 OpenStack 代码中也有不少版权声明。几乎每个参与 OpenStack 的公司都这样做。我认为我们需要停止这样做。)
我给 OpenStack-docs 列表发送了一份通知,它引发了一系列评论。据我理解,人们被鼓励在贡献的源代码和文档中添加版权声明,并在他们修改的文件中添加版权行。
我认为这样做非常不好,原因如下:
- 如果我编辑一个文件,并且文件顶部写着版权归 BigCo 所有,我会因为这意味着我侵犯了别人的权利而不敢编辑该文件。文件不应有任何迹象表明它们“归”任何个人或公司所有。(请参阅卡尔·弗格尔的这篇文章,了解更多关于“拥有”代码的信息。)这会积极地阻止人们参与进来并修复问题。
- 如果有 N 个人为文件做出贡献,我们是否应该在文件中添加 N 个版权声明?这随着时间的推移是不可扩展的。想象一下这些文件 10 年后会变成什么样子,现在就解决这个问题。
- 在文件中包含作者姓名会鼓励人们出于错误的原因做出贡献。
- Git 会跟踪谁贡献了哪些更改。没有必要有明确的版权声明。
对我来说,这些原因中最有说服力的是第一个。任何阻止贡献,特别是来自初学者的贡献,都应尽可能避免。
我曾遇到有人在源代码中看到版权声明后问我,他们是否需要在提交补丁之前征得该人的许可。如果我们能避免哪怕有一个人提出这个问题,我们就为项目做了一件好事。
我也担心那些坚持在其贡献中加入版权声明的公司既不了解版权法,也不了解开源。一方面,Git 中的审计跟踪保护了您的贡献记录,从而保护了您的版权。另一方面,如果您的版权对您如此重要,那么您或许不应该将其贡献给开源项目。对一个项目说他们可以拥有您的贡献,但前提是您可以声明这是您的个人财产,这是反社区的。开源是关于社区和协作的。如果建筑物归社区所有,那么坚持认为某块砖是您的,您又能获得什么呢?
在 Apache 软件基金会,我们十年前就对此进行了辩论,并决定源代码中的作者标签是反社区的,因此不鼓励使用。引用当时评论区的一段话,特别是引用 Sander Striker 的话:
在 Apache 软件基金会,我们不鼓励在源代码中使用作者标签。除了法律影响外,还有各种原因。协作开发是关于作为一个团队处理项目,并作为一个团队关心项目。给予荣誉是好的,应该这样做,但方式不应允许虚假归属,即使是暗示性的。何时添加或删除作者标签没有明确的界限。当您更改注释时,您是否添加您的名字?当您进行单行修复时?当您重构代码并使其看起来 95% 不同时,您是否删除其他作者标签?对于那些到处接触每个文件,只做足够多的修改以达到虚拟作者标签配额,以便他们的名字无处不在的人,您该怎么办?
有更好的方法来给予荣誉,我们的偏好是使用这些方法。从技术角度来看,作者标签是不必要的;如果您想找出是谁编写了某段代码,可以查阅版本控制系统来找出答案。作者标签也容易过时。您真的希望因为您五年前编写的一段代码而被私下联系,而您很高兴已经忘记了它吗?
这是一个略有不同的问题(作者标签而不是版权声明),但表达的观点完全相同。当我更正文档中的语法或拼写错误时,我是否添加版权声明?当我添加一个段落或重新排列句子以使其更清晰时呢?在什么程度上,我会因为我已经更改了该文件的太多内容而删除您的版权声明?
然后,当然,您应该考虑更大的问题——您为什么要关心?您想防止什么?如果您想防止您的贡献被社区拿走并用于其他目的,那么贡献给 Apache 许可的代码库可能不是最明智的做法。
最初发布在 页边笔记 上。经许可转载。
12 条评论