如何为自己的软件使用 GNU 许可证
本文简要解释了如何将程序置于 GNU 通用公共许可证、GNU 宽通用公共许可证 或 GNU Affero 通用公共许可证 之下。关于 GNU 自由文档许可证,我们有单独的 页面。
有关更多信息,请参阅我们的 关于我们的许可证的常见问题解答列表。
如果您正在考虑使用 GNU 宽通用公共许可证,请先阅读文章“为什么不应该为下一个库使用 LGPL”。这篇文章解释了为什么最好使用普通的 GPL,以及我们如何做出决定。
以下是根据我们的许可证发布程序所需执行操作的简要概述
- 从您的雇主或学校获得版权免责声明。
- 为每个文件提供适当的版权声明。确保 清楚地识别用户可以使用哪些版本的许可证。
- 添加一个包含 GNU GPL 或 GNU AGPL 副本的 COPYING 文件。
- 如果使用 LGPL,还要添加一个包含 GNU LGPL 副本的 COPYING.LESSER 文件。
- 在每个文件中放入许可证声明。
- (可选)使程序显示启动通知。
- (如果使用 AGPL)使程序提供其源代码的副本。
这涉及向程序的每个源文件添加两个元素:版权声明(例如“版权所有 1999 Terry Jones”),以及复制许可声明,说明该程序是根据 GNU 通用公共许可证(或宽 GPL 或 Affero GPL)的条款分发的。
版权免责声明
如果您是个人,并且有雇主或在学校学习,明智的做法是要求您的雇主或学校签署您的程序的版权免责声明,这样它以后就不能声称版权属于它,并且您无权发布该程序。这实际上与 GNU GPL 无关,无论您使用哪个自由软件许可证发布该程序,它都适用。
这是一个示例版权免责声明;只需根据需要更改名称、标题和程序描述
Yoyodyne, Inc. 在此放弃对 James Hacker 编写的程序“Woodpecker”(解构树)的所有版权权益。
Moe Ghoul 的签名 1989 年 4 月 1 日
Moe Ghoul,副总裁
如果您是大学生,我们建议您在编写程序的早期阶段就要求免责声明,以减少阻力。如果您不是研究助理或助教,那么大学可能对您的作品没有版权主张,但请咨询律师以确保这一点。
如果您工作,协商发布自由软件的许可的最佳时间是在协商您的雇佣协议时。
版权声明
版权声明应包括您完成准备发布的年份(因此,如果您在 1998 年完成,但在 1999 年才发布,请使用 1998 年)。您应该为每个过去的版本添加适当的年份;例如,如果某些版本在 1998 年完成,而某些版本在 1999 年完成,则为“版权所有 1998, 1999 Terry Jones”。如果有多人帮助编写代码,请使用所有人的姓名。
对于多年内发布多个版本的软件,如果并且只有范围内的每一年(包括在内)确实是应该单独列出的“可版权”年份,那么可以使用范围(“2008-2010”)而不是列出单个年份(“2008, 2009, 2010”);并且您在文档中对这种用法做出明确的声明。
始终使用英文单词“Copyright”;按照国际惯例,这在全球范围内使用,即使对于其他语言的材料也是如此。如果您愿意(并且您的字符集支持),可以包含版权符号“©”,但这并非必要。使用三字符序列“(C)”没有任何法律意义,但它也没有害处。
如果您从其他受相同许可证保护的程序中复制了代码,也请复制它们的版权声明。将一个文件的所有版权声明放在一起,紧靠文件的顶部。
许可证文件
您还应该在程序的发行版中的某处包含许可证本身的副本。所有程序,无论是根据 GPL 还是 LGPL 发布,都应包含 GPL 的文本版本。在 GNU 程序中,我们通常将许可证放在一个名为 COPYING 的文件中。
如果您正在根据 GNU AGPL 发布程序,请使用 GNU AGPL 的文本版本而不是 GNU GPL。
如果您正在根据宽 GPL 发布程序,您还应该包含 LGPL 的文本版本,通常在一个名为 COPYING.LESSER 的文件中。请注意,由于 LGPL 是在 GPL 之上的一组附加权限,因此必须同时包含这两个许可证,以便用户拥有理解其权利所需的所有材料。
许可证声明
每个文件的复制许可声明(也称为许可证声明)应紧跟其版权声明之后。对于一个单文件程序,声明(对于 GPL)应如下所示,以使用 GPL 版本 3 或更高版本
此程序是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,可以选择使用许可证的第 3 版,或者(由您选择)任何更高版本。
此程序的发布是为了希望它能有用,但不作任何担保;甚至不作关于适销性或适合特定用途的默示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。
您应该已收到与此程序一起提供的 GNU 通用公共许可证副本。如果不是,请参阅 <https://gnu.ac.cn/licenses/>。
对于包含多个文件的程序,最好将“此程序”替换为程序的名称,并在声明开头加上一行“此文件是 NAME 的一部分”。例如,
此文件是 Foobar 的一部分。
Foobar 是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,可以选择使用许可证的第 3 版,或者(由您选择)任何更高版本。
Foobar 的发布是为了希望它能有用,但不作任何担保;甚至不作关于适销性或适合特定用途的默示保证。有关更多详细信息,请参阅 GNU 通用公共许可证。
您应该已收到与 Foobar 一起提供的 GNU 通用公共许可证副本。如果不是,请参阅 <https://gnu.ac.cn/licenses/>。
要使用不同的 GPL 版本集,您需要修改第一个长段的结尾。例如,要在版本 2 或更高版本下获得许可,您需要将“3”替换为“2”。
此声明应位于每个源文件的开头附近,靠近版权声明。使用宽 GPL 时,在所有三个位置中的“通用”之前插入单词“宽”。使用 GNU AGPL 时,在所有三个位置中的“通用”之前插入单词“Affero”。
为什么需要许可证声明?
自由软件许可证的目的是赋予程序的所有用户某些权利。如果您不清楚自己赋予了他们哪些权利,那就会适得其反。我们的做法旨在避免任何不确定性。
如果一个程序在源文件旁边有许可证 FOO 的副本,但没有明确的声明“此程序是在许可证 FOO 下发布的”,这会让人对许可证 FOO 是否适用于该程序的代码产生不确定性。
如果一个发行版在诸如 README 文件之类的中心位置有一个声明“此程序是在许可证 FOO 下发布的”,那么这会对于该发行版而言情况清晰。但是,程序员经常将一个自由程序的源文件复制到另一个自由程序中。如果源文件没有关于其许可证是什么的声明,那么将其移动到另一个上下文中会消除该点的所有痕迹。这会导致混淆和错误。
启动通知
对于交互式程序,通常最好在程序启动时显示一条关于版权和复制许可的简短通知。有关此内容的更多信息,请参阅 GNU GPL 的结尾。
Affero 通知
如果您正在根据 GNU AGPL 发布程序,并且它可以与网络上的用户交互,那么该程序应该以某种方式向这些用户提供其源代码。例如,如果您的程序是 Web 应用程序,其界面可以显示一个“源”链接,将用户引导到代码的存档。GNU AGPL 非常灵活,您可以选择适合您特定程序的方法 - 有关详细信息,请参阅第 13 节。
其他
由于实际原因,包含如何联系您的联系信息非常重要,也许在 README 文件中,但这与应用许可证的法律问题无关。
无需在任何地方注册您的版权,这没有法律要求;只需编写程序即可获得版权。但是,对于美国,最好在美国版权局注册版权,因为这使您在对抗任何在美国违反许可证的人时处于更有利的位置。大多数其他国家/地区没有版权注册系统。
我们希望在自由软件目录中列出所有自由软件程序,包括所有根据 GPL(任何版本)许可的程序。因此,当您的程序达到有用的程度时,请提交您的程序的条目。有关信息和在线提交表单,请参阅 目录维基。
您也可以将您的程序加入 GNU 项目,成为一个 GNU 软件包。如果您有兴趣以这种方式加入 GNU 项目,请查看我们的GNU 软件评估页面,了解更多信息和一份简短的调查问卷。我们会回复并与您讨论此事。
即使您的程序不是 GNU 软件包,也欢迎您使用我们的任何许可证;事实上,我们希望您这样做。它们对所有人开放。如果您想宣传您对特定许可证的使用,请随意使用我们的标志之一。