Github仓库如何选择开源许可证
Github仓库如何选择开源许可证
当我们点了Github个人主页右上角的那个那个加号之后,如上所示可以看到创建新仓库的选项, 点击 `New repository` , 就会进入到创建新仓库的页面,进入到这个页面之后可以看到右下角的下拉框可以为自己的项目选择开源许可证:
截至到2020/06/13日,Github在创建仓库允许选择的开源许可证如下所示:
如上图所示可以Github支持的开源许可证还是很多的 Apache, MIT, BSD, CC0, EPL, AGPL, GPL, LGPL, MPL都支持,
这样一来大大方便了我们的选择,但是有时候选择多了未必是好事情,面对开源许可证,每个人可能心中都存在过这样的疑问:
- 为什么要使用开源许可证? 我完全不用开源许可证好像也没啥问题啊
- 就算我打算用开源许可证,Github上面这么多,完全不知道选择那个呀? 根本不知道他们之间有啥区别?
- Github上面的开源许可证都不是我想要的,我有了解到一个非常棒的证书,但是Github创建仓库的时候还没得选怎么办?
为什么需要开源许可证?
要弄懂为什么要使用开源许可证,我觉得应该首先弄懂不使用开源许可证会怎样?
不使用开源许可证对于开发者有何影响?
首先在没有开源许可证的情况下你对你的项目是独占版权的,这样就会造成一个问题就是别人使用你的项目比较困难, 然后就会导致没人愿意去使用你的项目,还有个问题就是 如果多人参与你的项目的开发,因为每个人都成为了这个项目的版权持有者, 你自己在没有得到团队中所有成员授权的情况下,
对项目的随意使用其实也是违法的,如果你想要很好的维护项目的其他贡献者的版权许可,那你不得不去和你的项目贡献者之间签订一个贡献者协议,
想想都是一个很头疼的事情.
其次还有个问题,就是当你把你的代码发布到Github的公共仓库的时候, 也就意味着你接受了Github公共仓库的一些服务条款,由于这些条款的存在
很多人可以去查看和复制你的项目仓库, 在一些特殊的情况下,部分人对于你的项目的使用可能不需要你的许可和授权.
不使用开源许可证对于项目的使用者有何影响?
如果你发现了一个软件,而这个软件没有开源许可证,那么也就意味着你没有得到作者的授权,尽管在Github上面你能够查看和复制代码,但是严格意义上你不能出于任何目的去使用,修改,和分享这个软件, 你说蛋疼不蛋疼.
此时作为一个项目的使用者你所能做的就是:
- 和项目的开发者沟通去加上开源许可证
- 不去使用这个没有开源许可证的项目,即使你觉得这个项目不错
- 和开发者进行私人协商,获取开发者的授权
总结: 为什么要使用开源许可证, 因为不用的话,会给开发者和使用者带来很多的麻烦事情,
用开源许可证是为了避免日后在项目的使用过程中一些不必要的麻烦
Github的开源许可证如何选择,他们之间有何区别?
这个世界上有太多的开源许可证,甚至Github的开源许可证就有很多,我相信大多数人都没有时间和精力去认证的去了解每一个开源许可证,那怎么办呢?
所以我这里把最主要的几个开源许可证的地址和允许的权力列了出来,大家首先做个粗判断, 简单判断一下自己可能会用到那个开源许可证,然后再去认真的研究,
如果真的对开源许可证非常感兴趣, 也可以先全研究几个被广为使用的开源许可证(比如 GPLv3和MIT许可证), 跟着潮流走总不会有啥大问题.
常见的软件开源许可证(开放程度由高到低)
GNU AGPLv3
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useDisclose source
License and copyright notice
Network use is distribution
Same license
State changesLiability
Warranty
GNU GPLv3
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useDisclose source
License and copyright notice
Same license
State changesLiability
Warranty
GNU LGPLv3
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useDisclose source
License and copyright notice
Same license
State changesLiability
Warranty
Mozilla Public License 2.0
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useDisclose 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 useLicense and copyright notice
State changesLiability
Trademark use
Warranty
MIT License
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useLicense and copyright notice Liability
Warranty
Boost Software License 1.0
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useLicense and copyright notice Liability
Warranty
The Unlicense
Permissions Conditions Limitations Commercial use
Distribution
Modification
Patent use
Private useLiability
Warranty
常见的非软件开源许可证
Permissions Conditions Limitations Commercial use
Distribution
Modification
Private useLiability
Patent use
Trademark use
Warranty
Permissions Conditions Limitations Commercial use
Distribution
Modification
Private useLicense and copyright notice
State changesLiability
Patent use
Trademark use
Warranty
Permissions Conditions Limitations Commercial use
Distribution
Modification
Private useLicense and copyright notice
State changes
Same licenseLiability
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上建立仓库的时候进行选择,那么你可以这么做:
- 在选择开源许可证的时候随便选择一个,然后把自动生成的LICENSE中的文件更改为你所需要的内容
- 直接不选择开源许可证,在自己的项目文件夹中自己去创建 LICENSE/LICENSE.txt文件 然后把自己所使用的开源许可证的协议内容粘贴进去
都读到这里了微信的朋友点个在看,其他平台的朋友可以关注微信公众号 早睡蟒
更多优质原创无广告内容等你来看.
Github仓库如何选择开源许可证的更多相关文章
- 如何选择开源许可证&如何修改项目使其符合某种开源许可证
作者:zyl910 很多文章介绍了详细的解说了各种开源许可证及它们的区别.但是,具体该选择哪一种许可证?如何修改项目使其符合某种开源许可证?就很少见到指导了.于是本文探讨这两个问题. 一.如何选择开源 ...
- GPL、BSD和Apache开源许可证
参考资料 五种开源协议的比较(BSD,Apache,GPL,LGPL,MIT) 如何选择开源许可证? - 阮一峰的网络日志 开源许可证教程 - 阮一峰的网络日志 简介 自由软件许可证由FSF(Free ...
- GitHub 优秀的 Android 开源项目(转)
今天查找资源时看到的一篇文章,总结了很多实用资源,十分感谢原作者分享. 转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介 ...
- Github上的andoird开源组件整理
http://blog.csdn.net/findsafety/article/details/50623627 第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListVie ...
- GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- 【转】GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
- GitHub优秀的Android 开源项目
GitHub上优秀Android开源项目 转载自 : http://my.eoe.cn/sisuer/archive/3348.html http://my.eoe.cn/sisuer/archive ...
- 【52ABP实战教程】0.1-- Devops如何用VSTS持续集成到Github仓库!
工欲善其事,必先利其器.在开始正式的教程之前我们先来聊聊准备工作. 管理工具会VSTS. 代码管理会用GITHUB. 服务器会用Azure. 所有的东西都是利用现有服务.不会说自己从虚拟机开始玩.我们 ...
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
随机推荐
- 搭建Prometheus平台,你必须考虑的6个因素
作者简介 Loris Degioanni,Sysdig的创始人和CTO,同时还是容器安全工具Falco的创建者. 原文链接 https://thenewstack.io/6-things-to-con ...
- Rocket - tilelink - Delayer
https://mp.weixin.qq.com/s/pc8f_DOJ7w8k8BeM9gPzVw 简单介绍Delayer的实现. 1. 基本介绍 以一定的概率延迟消息的传递. 类参数 ...
- jchdl - RTL实例 - MOS6502 SoC
https://mp.weixin.qq.com/s/H2UBmZa9fpM6_FM2_MucTQ 实现一个SoC作为顶层模块,包含Cpu.Mem两个子模块,并驱动运行. 参考链接 https ...
- Cypress系列(9)- Cypress 编写和组织测试用例篇 之 钩子函数Hook
如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Hook 就是常说的钩子函数,在 pyt ...
- Cpusets学习
1. cpusets 1.1 什么是cpusets cpusets基本功能是限制某一组进程只运行在某些cpu和内存节点上,举个简单例子:系统中有4个进程,4个内存节点,4个cpu.利用cpuset可以 ...
- Java实现 蓝桥杯VIP 算法提高 计算时间
算法提高 计算时间 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个t,将t秒转化为HH:MM:SS的形式,表示HH小时MM分钟SS秒.HH,MM,SS均是两位数,如果小于10用0补到 ...
- Android如何使用SharedPreferences轻量级储存
SharedPreferences只能用来存一些基本数据类型,并且存下的量比较小 直接附代码 和XMl布局 package com.example.okhttpdemo; import android ...
- lambda表达式操作DataTable番外篇
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text; ...
- 关于EF的五种状态
最近半个多月没更新原因是在赶项目...在做项目的时候就会发现自己很多问题,也有很多东西要记录,今天就记录一下对ef新的认识. 也就是关于ef的五种状态管理. Unchanged(持久态) Midifi ...
- STL中的string
string常用函数 1.构造函数 string(const char *s); //用c字符串s初始化 string(int n,char c); //用n个字符c初始化 string类还支持默认构 ...