GitHub开源协议详解及常用协议介绍
前言:
GitHub有许多开源的协议,刚开始使用时不知道选择哪些协议,今天我们就一起科普一下GitHub中的协议吧!
一、协议介绍
1. None / No License
如果你在使用GitHub中,没有选择协议默认是 No License, 这并不是代码什么协议也没有, 它表示: 不允许他人进行复制、分发、使用和修改。但是如果你把它上传到了github,那么默认允许他人查看(view)源码、分叉(fork)到自己的仓库,只是不能使用、修改而已。
2. Apache License 2.0
Apache License 2.0 协议来自于著名的Apache基金会,其最重要的开源软件就是Apache(HTTPD)网站服务器。它允许许任何人进行个人使用、商业使用、复制、分发、修改,作者免责,需要保留作者版权信息,声明更改的地方, 特点在于对于贡献者(Contributors)可以提供快速的专利授予。常用于大型开源项目
3. MIT License
MIT License MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.总结一下只有三段话,允许任何人进行个人使用、商业使用、复制、分发、修改,唯一的限制就是,必须得加上源码作者的版权信息(CopyRight)是一个相对宽松的常用的协议
4. GNU GPLv3
General Public License v3.0 开源正是由于GPL而变得越来越强大,GPLv3在2007年发布,它允许个人使用、商业使用、专利授权,允许复制、分发、修改,并且作者不承担用户使用的一切后果。但是它有很多限制:
必须开源
一旦使用了这个协议,如果他人想要进行分发、修改,那么他们修改后的源代码也必须开源。这是开源的核心保障,如果没有这条规定,就没有人愿意持续公开自己的源码了。保留协议和版权
保留对协议和版权的叙述。不允许更换协议
如果有人修改了一些源码,觉得自己改得还挺多的,想要换一个MIT或者什么协议,这是不允许的。一旦最原始的源码使用了GPL,其衍生的所有代码都必须使用GPL。这也是开源保障之一声明变更
对于代码的变更需要有文档进行说明改了哪些地方。
5. BSD 2-Clause “Simplified” License
BSD 2-Clause 允许许任何人进行个人使用、商业使用、复制、分发、修改,除了加上作者的版权信息,还必须保留免责声明,免去作者的一些责任(比如使用后果) 例如: 你在GitHub发布了一个AI换脸的项目, 别人clone后玩脱了跟你没关系.
6. BSD 3-Clause “New” or “Revised” License
BSD 3-Clause 在BSD 2-Clause上增加了一个条款
未经特别事先书面许可,著作权人的姓名和其贡献者的姓名不得用于认可或推销源自该软件的产品。
在 BSD 2-Clause 的基础上, 不能使用作者的信息去做商业宣传, 应该是有人把开源软件拿去商用, 宣传说是xxx写的, 然后造成了不良影响…
7.Eclipse Public License 2.0
Eclipse Public License 2.0 是一种商业友好型协议,允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,需要保留版权信息、必须开源、不允许更换协议, 特点在于可以对软件进行商业使用,对专利授权免去版税
8.GNU Affero General Public License v3.0
GNU Affero General Public License v3.0 允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,贡献者可以快速专利授予,需要保留版权信息、必须开源、不允许更换协议、声明变更。和GPL类似,不同点在于,如果你修改了源码并在放到网上提供服务,那么你必须公开这个修改版本的完整的源代码。
9.GNU General Public License v2.0
GNU General Public License v2.0 相比于 GNU GPLv3,不能进行专利授予.
10.Mozilla Public License 2.0
Mozilla Public License 2.0 是BSD系协议和GPL系协议的折中,允许个人使用、商业使用、专利授权、复制、分发和修改,作者免责,需要保留版权信息、必须开源,不允许更换协议(但允许更换成某些GNU协议),不允许使用商标。
11.The Unlicense
The Unlicense 是一个完全免费无约束的协议,也就是你放弃你的所有权利,将劳动成功无私奉献出来。允许任何人为了任何目的使用任何手段进行任何操作,不用保留任何信息,当然,作者免责
二、特性总结
三、使用推荐
1、普通开发者
如果你是信仰开源大法的普通开发者,使用 MIT License 协议即可,它会保留你的版权信息,又允许他人进行修改。
2、用到了GNU的开发者
如果你用到了GNU的库,由于“传染性”,不允许更换协议,必须选择GNU相关的协议。
3、开源库开发者
推荐使用GNU LGPL相关协议。
4、无私奉献的雷锋
感谢你为世界作出的贡献,必选The Unlicense。
5、不知道该选什么
选择默认的None即可,保留你的全部权利,后续再去决定要不要更换协议。
GitHub开源协议详解及常用协议介绍相关推荐
- 【计算机网络面试高频】-HTTP协议详解,HTTP协议常见问题
4.HTTP协议详解有关问题 4.1 HTTP请求 一个HTTP请求报文由请求行.请求头部.空行和请求数据四个部分组成. 1.请求行 请求行中有请求方法字段.URL字段和HTTP协议版本3个字段组成. ...
- 【MQTT协议详解】MQTT协议
文章前注:本文的大量素材来自于百度百科和MQTT协议3.1.1中文板 MQTT协议3.1.1中文版网址:http://blog.mcxiaoke.com/mqtt/protocol/MQTT-3.1. ...
- UDP协议详解(UDP协议特点,UDP协议格式、UDP的应用)
目录 前言 1.UDP协议的特点 2. UDP协议格式的特点 3. UDP的应用 前言 TCP和UDP协议都是传输层的协议,其中传输层是负责端对端之间的连接,端是指端点. 端口的划分和知名端口 0~1 ...
- 计算机网络端口在哪层,小白入门级计算机网络协议详解,TCPIP协议、各层功能理解...
一.OSI七层模型 OSI七层协议模型主要是:应用层(Application).表示层(Presentation).会话层(Session).传输层(Transport).网络层(Network).数 ...
- 网络层协议详解(IP协议、ICMP协议和ARP协议)
这里写目录标题 一.网络层的功能 二.IP数据包格式 三.ICMP协议 四.ARP协议 一.网络层的功能 定义了基于IP协议的逻辑地址: 连接不同的媒介类型: 选择数据通过网络的最佳路径. 二.IP数 ...
- IP协议详解(IP协议格式、IP地址管理、路由转发)
目录 1. IP协议格式 2. IP地址管理 2.1 早期地址管理方式 2.2 CIDR方式 3. 网络层的路由转发 1. IP协议格式 如图: 4位版本:标识当前是ipv4协议. 4位首部长度:和T ...
- 详解物联网常用协议:IIC和RS485通信协议
在单片机开发中我们经常会听到协议二字,协议是单片机相互通信中必须遵守的规则,只有遵守协议才能实现二者之间的通信.协议的种类非常的多,可以满足不同设备和不同操作系统的通信要求,下面小编给大家介绍沐渥科技 ...
- 网络层:IP协议详解(IP协议真的得看这篇)
1.IP协议概念 IP(Internet Protocol , 互联网协议)主要用于互联网通信.IP协议用于将多个包交换网络连接起来,他在原地址和目的地址之间传输数据报,还提供对数据大小的重新组装功能 ...
- mavlink协议详解_MAVLink通讯协议在STM32上移植,并自定义协议
mavlink全称是(Micro Air Vehicle Message Marshalling Library),从名字可以看出,mavlink是主要面向飞控的一种开源通信协议.因此它默认定义了很多 ...
最新文章
- Java项目:潜艇大战项目(java+swing)
- 单页面应用微信分享跳坑指南
- 同大取大同小取小口诀图解_微信课堂:峦头九星砂体图解
- 德国Renusol进军南非市场 瞄准屋顶光伏
- 苏州市计算机音乐学会地点,苏州市音乐家协会小提琴学会成立
- 小女也爱葵花宝典---读懂编译原理(1)
- JavaScript笔记-对wheelDeltaY和deltaY的体会
- java定时任务管理_基于SpringBoot+layui秒级定时任务管理:JTimer for JAVA项目
- 帆软报表的excel导出,插件开发可用
- 1037. 在霍格沃茨找零钱(20)-PAT乙级真题
- 契税申报期限_纳税申报的5个小常识,会计不知道,真不适合干会计
- 提高测试工作效率的硬技能和软技能
- 适应iPhone5的尺寸
- 饥荒:mod教程索引
- 后缀数组水水水水水水题
- 如何理解3D动画中的欧拉角以及死锁?
- MIT-BIH心律失常数据库目录(译)
- 高炉炼铁车间人工巡视被淘汰是工业发展的必然
- 项目经理是怎样炼成的?
- 中国女足,中国女垒,中国女排,舒米,让我欢喜让我忧