如何为自己的开源项目选择许可证

news/2024/10/18 22:30:44/

就结论而言,如果你很随意、不在乎,那就选择MIT协议,如果要为自己的权益提供尽可能的保障,那就GPL🛡️

为自己的软件知识产权选择许可证的必要性在于,如果不去选择,则默认为放弃了自己的全部权利,包括署名权。许可,就是提供给使用你劳动成果的人有一定的权限,不过你仍然拥有版权和专利(如果申请了的话)。开源许可证使得我们发布开源软件产品变得简单。

通过OSI(Open Source Initiative)组织批准的许可证目前有78种。当前流行的6种GPL,LGPL,Apache,MIT,BSD和MPL都是OSI批准的许可证。GitHub建了一个很赞的网站choose a license,提供了各主流许可证的协议文本,并对它们作了详细的介绍和比较。

这里仅对最最常见的三种协议GPL,Apache和MIT进行简单介绍和比较。

GPL

GPL(GNU General Public License)许可证是一个开放源码许可证,只要在软件产品中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL许可证的产品,则该软件产品也必须采用GPL许可证发布,并且不论以何种形式发布,都必须同时附上源代码。这就是所谓的“传染性”。其他细节与Apache许可证类似,如:

  • 软件及衍生产品可以用于商业目的。
  • 产品可以被自由地分发、修改。
  • 同时提供额外的专利授权。
  • 产品再发布时包含一份原始许可声明和版权声明。
  • 如果修改了源代码,包含一份代码修改说明。

Apache

Apache许可证中,软件产品可以自由修改、发布和商用,该许可证还为用户提供专利许可,只须满足以下条件:

  • 包含一份原始许可声明和版权声明
  • 如果修改了源代码,包含一份代码修改说明。
  • 不得使用其原始商标

MIT

MIT许可证是一个简短、宽松的许可证,唯一的要求就是保留原始版权和许可声明。你可以:

  • 商业使用。软件及衍生产品可以用于商业目的。
  • 自由地修改、发布。软件可以被自由地拷贝、修改、发布。

如何选择?

MIT最自由,简直就是没有任何限制,任何人都可以售卖我的软件,甚至可以用我的名字促销。Apache协议也很自由,跟 MIT 的区别分别是不允许用作者本人名义促销和保护作者版权。GPL可以说最霸道,对代码的修改部分也必须是GPL的,同时基于GPL代码而开发的代码也必须按照GPL发布。

从限制他人权利的强度而言,GPL > Apache > MIT。

就结论而言,如果你很随意、不在乎,那就选择MIT协议,如果要为自己的权益提供尽可能的保障,那就GPL🛡️

本文由 mdnice 多平台发布


http://www.ppmy.cn/news/63298.html

相关文章

windows误删文件怎么恢复

在日常办公中,由于时间的不断积累,会有很多的文件。在清理文件时,稍有疏忽就会多删了一些的文件。如果是一些不需要的文件删了就删了,但如果这些文件是重要的,该怎么办?在windows误删文件怎么恢复呢?这里有小编整理的…

JVM运行时数据区

Java和C的区别,体现在自动内存分配和垃圾收集技术。 JVM在执行Java程序时,会将它管理的内存分为若干个不同的数据区域。 这些区域有各自的作用范围以及生命周期: 线程私有的区域,随着用户线程的启动和结束而建立和销毁。线程共…

CPU 架构(x86/ARM)简介

CPU 架构通过指令集的方式一般可分为 复杂指令集(CISC) 和 精简指令集(RISC) 两类,CISC 主要是 x86 架构,RISC 主要是 ARM 架构,还有 MIPS、RISC-V、PowerPC 等架构。 本文重点介绍 x86 和 ARM…

谷歌浏览器 | Chrome DevTools系统学习篇-概述

Chrome DevTools是一套直接内置到谷歌Chrome浏览器的web开发工具。DevTools可以帮助您即时编辑页面并快速诊断问题,最终帮助您更快地构建更好的网站。我们今天的概述主要讲述谷歌浏览器的日常使用和几大常见控制面板的介绍。 目录 1.打开谷歌浏览器 2.谷歌浏览器的…

Mysql 中left join时 on、and、where区别

1、准备两张表student与class表 student class 2、left join on左连接 select * from student s left join class c on s.classId c.id 左表数据全部显示,关联到的右表数据显示,没有显示null 3、left join on ... and对左表student进行条件筛选 …

浅谈 如何设置和管理磁盘配额,以限制用户对磁盘空间的使用

在Linux系统中,可以使用磁盘配额来限制用户对磁盘空间的使用,防止磁盘被某个用户或进程占满而导致系统故障。以下是设置和管理磁盘配额的步骤: 安装quota软件包 quota是一个用于磁盘配额管理的软件包,在Linux系统中可以使用以下…

Logstash使用Canal插件实现MySQL数据实时同步到ES

要在Logstash中使用Canal插件,你需要按照以下步骤进行设置: 安装Logstash:首先,你需要在你的系统上安装Logstash。你可以从Elastic官方网站下载适用于你的操作系统的Logstash安装程序,然后按照官方文档提供的说明进行安…

JavaScript call,callee,caller,apply,bind之间的区别

(现实是此岸,梦想是彼岸,中间隔着湍急的河流,行动则是架在河上的桥梁。——克雷洛夫) call call() 方法使用一个指定的 this 值和单独给出的一个或多个参数来调用一个函数。 MDN链接 call方法可以将一个对象属性作为…