如何为你的作品选择一份许可证 | 观点
sinye56 2024-11-11 13:36 12 浏览 0 评论
人们经常问我们,为他们的项目向他们推荐什么许可证。
- https://www.gnu.org/licenses/license-recommendations.html
- 作者:Fsf
前言
人们经常问我们,为他们的项目向他们推荐什么许可证。我们过去已经公开地写了关于这个的文章,但信息在不同的文章、FAQ 条目和许可证注释之间分散开了。这篇文章收集所有的信息至一个单一的来源中,让人们更简单地跟着做并可以参考。
这些推荐是用于那些被设计来做实用工作的作品的。这包括了软件、文档和一些其他的东西。艺术作品、以及表达观点的作品,则不一样;GNU项目对它们该怎么发布没有通用的立场,除了它们应该在没有非自由软件的情况下可以使用(特别是 没有DRM )。然而,对于和某个程序在一起的艺术作品,你可能需要听从这些推荐。
这些推荐可以用于许可一个你创建的作品——不论是已有作品的修改版还是原创作品。它们不能解决结合已有不同许可证的材料的问题。如果你在寻求那方面的帮助,请查看 GPL FAQ 。
在你看了我们的推荐之后,如果你想要建议,你可以写邮件到 <licensing@gnu.org> 。注意许可证小组的回信可能需要几个星期;如果你在一个月内没有得到回复,请再写一次。
贡献到一个已有的项目
当你贡献到一个已有的项目时,你通常应该在和原作品相同的许可证之下发布你修改过的版本。和项目的维护者合作是件好事,而为你的修改使用不同的许可证经常会让合作变得困难。你只应在有强大理由支持的时候才那样做。
一种可以合理使用不同许可证的情形是,你在非 copyleft 许可证下的作品上做出了主要修改。如果你创建的这个版本比原来的版本有用得多,那么就值得让你的作品 copyleft 化,就和我们通常 推荐 copyleft 的原因 一样。如果你是在这种情况下,请遵循以下用于许可一个新项目的建议。
无论是什么理由,如果你选择以不同许可证发布你的贡献,你必须确保原有的许可证允许素材可以在你选择的许可证之下使用。至少从良心上讲,请明确地表示哪部分的作品是在哪种许可证之下。
软件
对不同的项目我们推荐不同的许可证,这主要依据软件的目的。通常来说,我们推荐使用最 copyleft 而不影响目的的许可证。我们的文章 “什么是 copyleft?” 更详细地解释了 copyleft 的概念,以及为什么它通常是最好的许可方案
对大多数程序,我们推荐你为你的项目使用最新版的 GPL 。它强大的 copyleft 适合所有类型的软件,并对用户的自由有很多保护。也请允许使用 GPL 的未来版本—换句话说,在许可声明中写上你的程序被 GPL v3 或其更新版本覆盖。
此处有关于 如何在 GNU GPL 之下发布程序 的更多建议。
现在看看例外情形,这些情形下使用别的许可证比使用 GPL 更好。
小程序
对大多数小程序,使用 copyleft 是不值得的。我们用300行作为基准:当一个软件包的源码比这个短,copyleft 带来的好处通常太小,不足以对抗确保许可证的复本总是伴随软件的不便。
对这些程序,我们推荐 Apache 2.0 许可证 。这是一个 pushover(非 copyleft)软件许可证,它有用于避免贡献者和分发者起诉专利侵权的条目。这并不会让软件避免来自专利的威胁(一个软件许可证是做不到的),但它避免了专利持有者打着自由的幌子发布软件,这种情况下专利持有者会相当于做了一次“诱导转向”,然后要求接受者同意专利证书中的非自由条目。
在不严格的 pushover 许可证中,Apache 2.0 是最好的;所以如果你要用一个不严格的 pushover 许可证,不论什么原因,我们推荐用这一个。
库
对于库,我们分三种情形。
一些实现了自由数据格式的库与那些限制性数据竞争,例如 Ogg Vorbis(与 MP3 音频竞争)和 WebM(与 MPEG-4 视频竞争)。自由标准的成功需要众多专有软件能够链接到自由标准的库来处理数据。例如,我们希望非自由的媒体播放器,尤其是应用程序,既可以处理 Ogg Vorbis 也可以处理 MP3。
在这些特殊的情况下,如果你的目的是说服专有应用开发者使用自由标准的库,那么你就应该对这些库使用宽松的许可证,比如 Apache 2.0 许可证 ,这样专有应用就容易包含这些库。
然而,我们必须看到这种策略对 Ogg Vorbis 并未奏效。即使我们修改版权许可证允许专有应用轻易地包含该库的代码,专有应用的开发者一般来说还是没有包含该库。我们在许可证上的牺牲最终并没有让我们获益。
对所有其他的库,我们推荐某种 copyleft 许可证。如果开发者已经使用现有的以非自由或不严格的 pushover 许可证发布的库,那么我们建议使用 GNU 宽通用公共许可证(LGPL) 。
在第一种情形中,库实现了一个伦理上更优秀的标准,但在这里不像第一种情形,库的广泛使用并不会达成实际好处,所以完全没有理由避免 copyleft。然而,如果你要求用库的开发者在 copyleft 下发布整个程序,他们会简单地用另一个可用的库,那样也不会推进我们的事业。较为宽松的 GPL(LGPL)是设计于填补这些情形中间地带的,允许私有软件开发者使用其保护起来的库,但考虑到库代码本身,LGPL 提供了给用户自由的弱 copyleft。
对于提供了特别设计,并且不会与现有非 copyleft 或非自由库竞争的,我们推荐使用原始的 GNU GPL。要知道原因,请阅读 《为什么你不应该在下一个函数库中使用 LGPL》 。
服务器软件
如果其他人很有可能会给你在服务器上跑的软件制作改进版并且不向其他人分发他们的版本,而且你担心这将把你的版本置于一个不利的地位,我们推荐 GNU Affero 通用公共许可证(AGPL) 。AGPL 的条目和 GPL 几乎相同;唯一实质的区别是它有一个额外的条件确保通过网络用这个软件的人们可以获得它的源代码。
对于用户们而言,AGPL 的要求没有解决当他们委托其计算或者数据给别人的服务器时,会产生的问题。例如,它不会制止 作为软件替代品的服务(SaaSS) 拒绝给予用户的自由—但大多数服务器不做 SaaSS。要想知道更多关于这些的问题,请阅读 《为什么要使用 GNU Affero GPL》 。
文档
对教程、参考手册和其他大型文档工作,我们推荐 GNU 自由文档许可证 。对教育型工作,这是个很强的 copyleft 许可证,最早为软件文档而编写,并包含特别说明,即当这些作品被分发或修改时的常见问题。
对于短的、次要的文档工作,例如参考卡片,最好使用 GNU全面容许性许可证 ,因为一份 GFDL 的复本难以放进一张参考卡片里面。不要用CC-BY,因为它和 GFDL 不兼容。
对于 man 手册页面,如果页面很长,我们推荐 GFDL,而如果它很短,则推荐 GNU全面容许性许可证 。
一些文档包括了软件源代码。例如,一个编程语言的的手册可能包括让用户遵循的例子。你应当既在 FDL 之下在手册中包含它们,又在另一个适合软件的许可证下发布它们。这样做使得在其他项目中用这些代码变得简单。我们推荐你用 CC0 贡献小段的代码到公有领域,并在有关软件项目使用的相同的许可证之下分发大段的代码。
其他用于程序的数据
这段讨论你会包括在软件中的所有其他实用作品。例如图表和其他功能性或有用的图像、字体和地理数据等。你也可以在艺术中遵循这些,尽管你不这样做我们也不会批评你。
如果你正特意为一个软件项目创作这些作品,我们通常推荐你在和软件使用相同的许可证下发布你的作品。用我们推荐的许可证这样做不会有问题:GPLv3、LGPLv3、AGPLv3 和 GPLv2 都可以用于任何类型—不只是软件—只需受版权保护并对修改版有清晰首选的形式。使用与软件相同的许可证会让分发者更容易遵守规定,并可以避免任何对潜在的兼容性问题的顾虑。如果提供了一些特别的实用的好处,比如和其他自由项目更好地合作,那么使用一个不同的许可证可能是合适的。
如果你的作品不是为某个特定的软件项目而创作的,或者使用和项目相同的许可证不合适,那么我们只推荐你选择一个适合你作品的 copyleft 许可证。有一些 在我们的许可证列表中列出 。如果没有许可证看起来合适的, 创作共用署名-相同方式共享许可证(CC-BY-SA) 是一个可以用于很多不同种类作品的 copyleft 许可证。
点击“了解更多”可访问文内链接
相关推荐
- 程序员:JDK的安装与配置(完整版)_jdk的安装方法
-
对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...
- Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置
-
一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...
- 麒麟系统安装JAVA JDK教程_麒麟系统配置jdk
-
检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...
- 学习笔记-Linux JDK - 安装&配置
-
前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...
- Linux新手入门系列:Linux下jdk安装配置
-
本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...
- 测试员必备:Linux下安装JDK 1.8你必须知道的那些事
-
1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...
- Linux 下安装JDK17_linux 安装jdk1.8 yum
-
一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...
- 在Ubuntu系统中安装JDK 17并配置环境变量教程
-
在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...
- 如何在 Linux 上安装 Java_linux安装java的步骤
-
在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...
- Windows和Linux环境下的JDK安装教程
-
JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...
- linux安装jdk_linux安装jdk软连接
-
JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...
- linux安装jdk,全局配置,不同用户不同jdk
-
jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...
- 运维大神教你在linux下安装jdk8_linux安装jdk1.7
-
1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...
- window和linux安装JDK1.8_linux 安装jdk1.8.tar
-
Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...
- 最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?
-
默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)