Github仓库如何选择开源许可证

当我们点了Github个人主页右上角的那个那个加号之后,如上所示可以看到创建新仓库的选项, 点击 `New repository` , 就会进入到创建新仓库的页面,进入到这个页面之后可以看到右下角的下拉框可以为自己的项目选择开源许可证:

截至到2020/06/13日,Github在创建仓库允许选择的开源许可证如下所示:

如上图所示可以Github支持的开源许可证还是很多的 Apache, MIT, BSD, CC0, EPL, AGPL, GPL, LGPL, MPL都支持,

这样一来大大方便了我们的选择,但是有时候选择多了未必是好事情,面对开源许可证,每个人可能心中都存在过这样的疑问:

  1. 为什么要使用开源许可证? 我完全不用开源许可证好像也没啥问题啊
  2. 就算我打算用开源许可证,Github上面这么多,完全不知道选择那个呀? 根本不知道他们之间有啥区别?
  3. Github上面的开源许可证都不是我想要的,我有了解到一个非常棒的证书,但是Github创建仓库的时候还没得选怎么办?

为什么需要开源许可证?

要弄懂为什么要使用开源许可证,我觉得应该首先弄懂不使用开源许可证会怎样?

不使用开源许可证对于开发者有何影响?

首先在没有开源许可证的情况下你对你的项目是独占版权的,这样就会造成一个问题就是别人使用你的项目比较困难, 然后就会导致没人愿意去使用你的项目,还有个问题就是 如果多人参与你的项目的开发,因为每个人都成为了这个项目的版权持有者, 你自己在没有得到团队中所有成员授权的情况下,

对项目的随意使用其实也是违法的,如果你想要很好的维护项目的其他贡献者的版权许可,那你不得不去和你的项目贡献者之间签订一个贡献者协议,

想想都是一个很头疼的事情.

其次还有个问题,就是当你把你的代码发布到Github的公共仓库的时候, 也就意味着你接受了Github公共仓库的一些服务条款,由于这些条款的存在

很多人可以去查看和复制你的项目仓库, 在一些特殊的情况下,部分人对于你的项目的使用可能不需要你的许可和授权.

不使用开源许可证对于项目的使用者有何影响?

如果你发现了一个软件,而这个软件没有开源许可证,那么也就意味着你没有得到作者的授权,尽管在Github上面你能够查看和复制代码,但是严格意义上你不能出于任何目的去使用,修改,和分享这个软件, 你说蛋疼不蛋疼.

此时作为一个项目的使用者你所能做的就是:

  1. 和项目的开发者沟通去加上开源许可证
  2. 不去使用这个没有开源许可证的项目,即使你觉得这个项目不错
  3. 和开发者进行私人协商,获取开发者的授权

总结: 为什么要使用开源许可证, 因为不用的话,会给开发者和使用者带来很多的麻烦事情,

用开源许可证是为了避免日后在项目的使用过程中一些不必要的麻烦

Github的开源许可证如何选择,他们之间有何区别?

这个世界上有太多的开源许可证,甚至Github的开源许可证就有很多,我相信大多数人都没有时间和精力去认证的去了解每一个开源许可证,那怎么办呢?

所以我这里把最主要的几个开源许可证的地址和允许的权力列了出来,大家首先做个粗判断, 简单判断一下自己可能会用到那个开源许可证,然后再去认真的研究,

如果真的对开源许可证非常感兴趣, 也可以先全研究几个被广为使用的开源许可证(比如 GPLv3和MIT许可证), 跟着潮流走总不会有啥大问题.

常见的软件开源许可证(开放程度由高到低)

GNU AGPLv3

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
Disclose source
License and copyright notice
Network use is distribution
Same license
State changes
Liability
Warranty

GNU GPLv3

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
Disclose source
License and copyright notice
Same license
State changes
Liability
Warranty

GNU LGPLv3

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
Disclose source
License and copyright notice
Same license
State changes
Liability
Warranty

Mozilla Public License 2.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
Disclose source
License and copyright notice
Same license (file)
Liability
Trademark use
Warranty

Apache License 2.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
License and copyright notice
State changes
Liability
Trademark use
Warranty

MIT License

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
License and copyright notice Liability
Warranty

Boost Software License 1.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
License and copyright notice Liability
Warranty

The Unlicense

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Patent use
Private use
Liability
Warranty

常见的非软件开源许可证

CC0-1.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Private use
Liability
Patent use
Trademark use
Warranty

CC-BY-4.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Private use
License and copyright notice
State changes
Liability
Patent use
Trademark use
Warranty

CC-BY-SA-4.0

Permissions Conditions Limitations
Commercial use
Distribution
Modification
Private use
License and copyright notice
State changes
Same license
Liability
Patent use
Trademark use
Warranty

如何看懂上面的图表

Permissions :就是开源许可证允许做的事情

Condition: 就是要在特定的情况下才允许做的事情

Limitations: 就是开源许可证不允许去做的事情

软件开源许可证如何选择?

我们需要一张乌克兰老铁(Paul Bagwell)画的图来帮助我们进行理解和选择 :

由上图可以看到目前主流的开源证书主要分为两派:

GPL系列 和 MPL 站一派 (我简称他们A派)

BSD系列, MIT 和 Apache 站一派 (我简称他们B派)

两派之间的主要区别就是你在原有的开源软件上做了更改之后是否允许其所使用开源证书发生变化:

A派的观点就是你更改开源项目之后所使用的开源证书必须和原有开源项目保持一致或者相兼容, 其实就是一个始于开源 忠于开源的思想,让大家一直开源

B派的观点就是原有的开源项目,如果你更改了部分代码的话那你也可以更改开源证书,这样以来对于开源项目而言,就更加的容易被商业化,

而GPLv3和MIT 这两个开源证书简直就是A派和B派的两个极端, 也是目前最受欢迎的两个证书,具体怎么选择大家可以看图行事,

当然更加详细的协议内容还是建议大家根据我发的协议链接找到协议原文,去仔细阅读协议原文进行了解

非软件开源许可证如何选择?

数据集 视频 所使用的开源许可证

CC0-1.0, CC-BY-4.0, 和 CC-BY-SA-4.0 这三种开源许可证就经常被用在数据集和视频 等非软件的项目上面,

有一点需要注意的就是 CC-BY-4.0 和 CC-BY-SA-4.0 这两种许可证是不建议给软件项目用的

CC-BY-4.0 和 CC-BY-SA-4.0非常的相似,后者比前者有一项要求就是,如果你对开源项目进行了更改,

那么更改后的版本所使用的开源协议必须和原有协议相同或者想兼容,

这里和软件开源证书的两派的思想是相同的

文档所使用的开源许可证

一般情况下开源软件中所附带的开源的文档和 开源软件本身持有相同的开源许可证,

当然你也可以针对开源软件和其对应的开源文档使用两套不同的开源许可证,

但是你一定要指出文档中的 源代码示例 所使用的许可证是什么类型的

字体使用的开源许可证

针对开源字体常用的许可证就是 SIL Open Font License 1.1 ,

这个许可证可以允许别人自由的去使用它,同时保留自己的版权

混合工程使用的许可证

如果你的 项目是个非常大的混合工程,包含 软件, 文档, 数据集,视频,字体等内容, 那你就需要为自己的项目准备多个许可证,

但是你需要做一个说明,用来说明你的工程的各个部分分别使用怎样的许可证 .

如果Github上面的所有许可证都不能满足我的要求怎么办?

开源许可证本质上就是一个名字为LICENSE或者LICENSE.txt的文本文件

如果你将要使用的开源许可证不可以在Github上建立仓库的时候进行选择,那么你可以这么做:

  1. 在选择开源许可证的时候随便选择一个,然后把自动生成的LICENSE中的文件更改为你所需要的内容
  2. 直接不选择开源许可证,在自己的项目文件夹中自己去创建 LICENSE/LICENSE.txt文件 然后把自己所使用的开源许可证的协议内容粘贴进去

都读到这里了微信的朋友点个在看,其他平台的朋友可以关注微信公众号 早睡蟒 更多优质原创无广告内容等你来看.

Github仓库如何选择开源许可证的更多相关文章

  1. 如何选择开源许可证&如何修改项目使其符合某种开源许可证

    作者:zyl910 很多文章介绍了详细的解说了各种开源许可证及它们的区别.但是,具体该选择哪一种许可证?如何修改项目使其符合某种开源许可证?就很少见到指导了.于是本文探讨这两个问题. 一.如何选择开源 ...

  2. GPL、BSD和Apache开源许可证

    参考资料 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) 如何选择开源许可证? - 阮一峰的网络日志 开源许可证教程 - 阮一峰的网络日志 简介 自由软件许可证由FSF(Free ...

  3. GitHub 优秀的 Android 开源项目(转)

    今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...

  4. Github上的andoird开源组件整理

    http://blog.csdn.net/findsafety/article/details/50623627 第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListVie ...

  5. GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  6. 【转】GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

  7. GitHub优秀的Android 开源项目

    GitHub上优秀Android开源项目 转载自 : http://my.eoe.cn/sisuer/archive/3348.html http://my.eoe.cn/sisuer/archive ...

  8. 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!

    工欲善其事,必先利其器.在开始正式的教程之前我们先来聊聊准备工作. 管理工具会VSTS. 代码管理会用GITHUB. 服务器会用Azure. 所有的东西都是利用现有服务.不会说自己从虚拟机开始玩.我们 ...

  9. 【Android 应用开发】GitHub 优秀的 Android 开源项目

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

随机推荐

  1. Beta冲刺——凡事预则立

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 1.讨论组长是否重选的议题和结论 经过讨论 ...

  2. Rocket - debug - TLDebugModuleInner - COMMAND

    https://mp.weixin.qq.com/s/Lz_D43YdhbRhiGiyoCBxDg 简单介绍TLDebugModuleInner中COMMAND寄存器的实现. 1. COMMANDRe ...

  3. Java-接口的本质

    https://mp.weixin.qq.com/s/tEVw0j18rX2hxt-guXQJ-w 大道至简,本质往往是很朴素的. 本质: 类是主体,接口是主体之间交流沟通的规约. 位置:1. 主体站 ...

  4. 分布式事务专题笔记(二)分布式事务解决方案之 2PC(两阶段提交)

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 前面已经了解了分布式事务的基础理论,以理论为基础,针对不同的分布式场景业界常见的解决方案有2PC.TCC ...

  5. (Java实现) 洛谷 P1091合唱队形

    题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2,-,K,他们的身 ...

  6. Java实现 LeetCode 238 除自身以外数组的乘积

    238. 除自身以外数组的乘积 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元 ...

  7. java实现第三届蓝桥杯地址格式转换

    地址格式转换 [编程题](满分21分) Excel是最常用的办公软件.每个单元格都有唯一的地址表示.比如:第12行第4列表示为:"D12",第5行第255列表示为"IU5 ...

  8. java实现第五届蓝桥杯海盗分金币

    海盗分金币 有5个海盗,相约进行一次帆船比赛. 比赛中天气发生突变,他们被冲散了. 恰巧,他们都先后经过途中的一个无名的荒岛,并且每个人都信心满满,觉得自己是第一个经过该岛的人. 第一个人在沙滩上发现 ...

  9. java实现第四届蓝桥杯三部排序

    三部排序 题目描述 一般的排序有许多经典算法,如快速排序.希尔排序等. 但实际应用时,经常会或多或少有一些特殊的要求.我们没必要套用那些经典算法,可以根据实际情况建立更好的解法. 比如,对一个整型数组 ...

  10. LB服务,软LB的服务能力(下)

    [摘要] 现在常用的LB软件,主要是LVS和nginx.普通情况下,LVS主要负责四层负载均衡,nginx负责七层.当然,业界也有友商基于LVS做出了七层负载均衡.本篇主要讲一下LVS的工作模式及各种 ...