常见开源协议介绍

2023-10-26

一、常用开源协议汇总图

首先从一张图开始,介绍几种主流的开源协议,以及决定选用哪种框架的思路。
使用哪种开源协议,决定了你发布的开源项目被别人使用了之后,别人的项目是否受到你的项目的开源协议的约束、受到哪种约束。
同理,采用别人的开源项目时,也要留意开源协议,这直接影响到日后你的项目是否需要开源、是否需要采用同样的许可证、是否需要对修改的源码进行文档说明、是否需要再修改过的文件中放置版权说明、衍生软件的广告等。
常用开源协议汇总图

二、常用开源协议简介

现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的开源协议目前有83种:https://opensource.org/licenses/alphabetical

那么,要如何从这么多的开源协议中选取适合自己项目的协议呢?
在这里我们参考:Open Source Licenses by Category(开源协议分类)
中的:Licenses that are “popular and widely-used or with strong communities”(被广泛应用或被大社区使用的开源协议)中所列出的几个协议作简要说明:(中文简介摘录参考文章[1])

  1. Apache License 2.0 (Apache-2.0)

    Apache Licence是著名的非盈利开源组织Apache采用的协议。该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件)。需要满足的条件也和BSD类似:
    1)需要给代码的用户一份Apache Licence
    2)如果你修改了代码,需要再被修改的文件中说明。
    3)在延伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
    4)如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。你可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。
    Apache Licence也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。

  2. 3-clause BSD license (BSD-3-Clause)

    BSD (3-Clause) License
    BSD允许使用者修改和重新发布代码(以其他协议形式),允许闭源商业发布和销售。
    BSD鼓励代码共享的同时,要求尊重代码作者的著作权。
    使用BSD协议,需要遵守以下规则:
    1 再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议;
    2 如果再发布的只是二进制类库/软件,则需要在类库/软件的文档那个和版权声明中包含原来代码中的BSD协议;
    3 不可以用开源代码的“作者/机构的名字”或“原来产品的名字”做市场推广。

  3. 2-clause BSD license (BSD-2-Clause)

    与 “3-clause BSD license (BSD-3-Clause)” 的内容形似。

  4. GNU General Public License (GPL)

    GPL v2
    我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
    GPL协议的主要内容是只要在一个软件中使用(“使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的”传染性”。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
    由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。
    其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。
    GPL v3
    GPL v3与GPL v2类似。区别在于,不仅要求用户公布修改的源代码,还要求公布相关硬件。

  5. GNU Lesser General Public License (LGPL)

    LGPL v2.1
    LGPL是GPL的一个为主要为类库使用设计的开源协议。和GPL要求任何使用/修改/衍生之GPL类库的的软件必须采用GPL协议不同。LGPL允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。这使得采用LGPL协议的开源代码可以被商业软件作为类库引用并发布和销售。
    但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
    GPL/LGPL都保障原作者的知识产权,避免有人利用开源代码复制并开发类似的产品
    LGPL v3
    相对于LGPL v2,不仅要求用户公布修改的源代码,还要求公布相关硬件。

  6. MIT license (MIT)

    MIT License
    MIT许可证之名源自麻省理工学院(Massachusetts Institute of Technology, MIT),又称「X条款」(X License)或「X11条款」(X11 License)
    MIT内容与三条款BSD许可证(3-clause BSD license)内容颇为近似,但是赋予软体被授权人更大的权利与更少的限制。
    被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软体及软体的副本。
    被授权人可根据程式的需要修改授权条款为适当的内容。
    在软件和软件的所有副本中都必须包含版权声明和许可声明。
    此授权条款并非属copyleft的自由软体授权条款,允许在自由/开放源码软体或非自由软体(proprietary software)所使用。
    此亦为MIT与BSD(The BSD license, 3-clause BSD license)本质上不同处。
    MIT条款可与其他授权条款并存。另外,MIT条款也是自由软体基金会(FSF)所认可的自由软体授权条款,与GPL相容。

  7. Mozilla Public License 2.0 (MPL-2.0)

    Mozilla Public License Version 2.0
    MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对 源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处:
    • MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个 豁口。
    • MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。
    • 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是 专利权人,并书面向公众免费许可这些源代码),也不能在将这些源代码以开放源代码许可证形式许可后再去申请与这些源代码有关的专利。
    • 对源代码的定义
    • 而在MPL(1.1版本)许可证中,对源代码的定义是:“源代码指的是对作品进行修改最优先择 取的形式,它包括:所有模块的所有源程序,加上有关的接口的定义,加上控制可执行作品的安装和编译的‘原本’(原文为‘Script’),或者不是与初始 源代码显著不同的源代码就是被源代码贡献者选择的从公共领域可以得到的程序代码。”
    • MPL许可证第3条有专门的一款是关于对源代码修改进行描述的规定,就是要求所有再发布者都得有一个专门的文件就对源代码程序修改的时间和修改的方式有描述。

  8. Common Development and Distribution License version 1.0 (CDDL-1.0)

  9. Eclipse Public License version 2.0

    Eclipse Public License v1.0
    EPL允许使用者任意使用、复制、分发、传播、展示、修改以及改后闭源的二次商业发布。
    使用EPL协议,需要遵守以下规则:
    1 当一个代码贡献者将源码的整体或部分再次开源发布的时候,必须继续遵循EPL开源协议来发布,而不能改用其他协议发布.除非你得到了原“源码”拥有者的授权;
    2 EPL协议下,你可以将源码不做任何修改来商业发布.但如果你要发布修改后的源码,或者当你再发布的是二进制文件的时候,你必须声明它的源代码是可以获取的,而且要告知获取方法;
    3 当你需要将EPL下的源码作为一部分跟其他私有的源码混和着成为一个Project发布的时候,你可以将整个Project/Product以私人的协议发布,但要声明哪一部分代码是EPL下的,而且声明那部分代码继续遵循EPL;
    4 独立的模块(Separate Module),不需要开源。

参考地址:
1. 简书:关于开源的一些注意事项
2. 如何选择开源许可证?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见开源协议介绍 的相关文章

  • Free C, C++ Compilers(免费的C/C++编译器)

    以下内容来源于 http www programmerworld net resources c compiler htm 1 Free Microsoft eMbedded Visual C Microsoft eMbedded Visu
  • C# Socket连接请求超时处理

    在Socket的超时时间默认20多秒 而实际连上不需1秒时间 20多秒很多时候用户是不能接受的 而在等待返回结果的这段时间里程序会处于停止响应状态 废话不多说了 先上代码 private delegate string ConnectSoc
  • 【软件测试】用例篇

    一 什么是测试用例 测试用例 向被测试系统发起的一组集合 这组集合包含测试数据 测试步骤 测试平台 预期结果 二 为什么在测试前要设计测试用例 三 基于需求设计测试用例 3 1测试是我们测试人员进行测试的依据 3 2测试人员首先要分析需求
  • GNURadio报错Unable to create context(windows10环境)

    GNURadio报错Unable to create context windows10环境 这里本人使用的是GNU Radio3 7 11 iiosupport win64 版本 外设是ADI的ADALM PLUTO 这里本人使用的是GN
  • BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源

    本文由 52CV 粉丝投稿 作者 信息门下奶狗 知乎地址 https zhuanlan zhihu com p 535695807 我们提出Illumination Adaptive Transformer IAT 网络 用来探索实时的暗光
  • PTP/IP协议

    PTP IP PTP over IP 是一个通过IP连接 建立在 Picture Transfer Protocol PTP 上的传输层 我之所以在了解这个东西是因为有一台 Nikon 相机支持 WLAN 和手机传输相片 但是APP设计得极
  • Python - 字典3

    修改字典项 您可以通过引用其键名来更改特定项的值 示例 将 year 更改为 2018 thisdict brand Ford model Mustang year 1964 thisdict year 2018 更新字典 update 方
  • B2B公司如何寻找意向客户的联系方式?

    在B2B公司的营销过程中 少不了寻找意向客户的阶段 这也是销售过程中非常重要的一步 很多新人都是拿到客户联系方式 就直接打电话拜访 俗话说不打没有准备的仗 因此在拜访客户之前就应该做好功课 充分了解客户 这也是B2B业务场景下必做的一环 通
  • 如何FL Studio显示中文?切换语言教程

    你是不是也在为fl studio的英文界面而苦恼 你是不是也想让你的fl studio 说中文 方便你制作音乐 你是不是也在网上找了很多教程 却发现都是复杂的 或者已经过时的 如果你的答案是肯定的 那么你来对地方了 今天 我要教你一个一步到
  • MacBook电脑内存容量小根本不够用?如何一键解决?

    得益于M1系列芯片的强势表现 很多朋友都换用了MacBook 首次接触到了macOS系统 但出乎意料的是 很多人就开始受罪了 明明这么出色的硬件 为何到处都不顺手呢 尤其是容量 MacBook相比同价位的Windows笔记本 硬盘本来就偏小
  • 六个优质开源项目,让你更了解Django框架开发

    Django 是一个开源的 Web 应用框架 由 Python 写成 采用了 MTV 的框架模式 即模型 M 视图 V 和模版 T 它最初是被用来开发 CMS 软件的 所以 Django 很适合用来搭建内容类网站 它的设计目的是使常见的 W
  • 开源AI云测试平台,Hydra Lab

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 8k次 点赞82次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 蚂蚁集团5大开源项目获开放原子 “2023快速成长开源项目”

    12月16日 在开放原子开源基金会主办的 2023开放原子开发者大会 上 蚂蚁集团主导开源的图数据库TuGraph 时序数据库CeresDB 隐私计算框架隐语SecretFlow 前端框架OpenSumi 数据域大模型开源框架DB GPT入
  • easyrecovery软件2025免费版电脑数据恢复软件

    easyrecovery14是easyrecovery系列软件的新版本 也是目前行业领先的数据恢复软件 具备更快捷 更高效 更便捷三大特色 能够帮助用户轻松恢复电脑丢失的数据 目前软件支持恢复不同存储介质数据 包括硬盘 光盘 U盘 移动硬盘
  • 安卓自动化 APP:轻松关闭任意开屏广告 | 开源日报 No.116

    gkd kit gkd Stars 8 7k License GPL 3 0 基于无障碍 高级选择器 订阅规则的自定义屏幕点击 APP 主要功能包括实现跳过任意开屏广告 关闭应用内部弹窗广告以及一些快捷操作 如微信电脑登录自动同意和领取红包
  • 评分卡在数字化时代的应用与比较,谁是最强规则引擎?

    在数字化时代 规则引擎在各种业务场景中发挥着越来越重要的作用 评分卡作为规则引擎的一个重要应用 被广泛应用于员工KPI考核 业务评估 授信额度计算等等场景 本文引用了奔跑的小武哥的内容 对市面上的几个规则引擎进行对比展示 就小武哥整理的内容
  • 开源音频处理代码 speex

    Speex 是一套主要针对语音的开源免费 无专利保护的音频 压缩格式 speex是近年来开发出的一套功能强大的语音引擎 能够实现高质量和低 比特率 的编码 它不仅提供了基于码激励线性预测 CELP 算法的编 解码模块 而且在其最新发布的版本
  • 公抓抓:批量获取企业工商信息的办法

    网站产生数据的作用 企业公示系统的数据 目前网络上每天都有海量数据诞生 这些数据蕴含着巨大的价值 很多时候企业和政府都需要大量的企业数据用于自身的运营 分析等 这些时候往往需要全面的数据才能得出更加客观的结论 比如金融机构在进行业务合作时
  • 华为OD机试真题-开源项目热榜--Java-OD统一考试(C卷)

    题目描述 某个开源社区希望将最近热度比较高的开源项目出一个榜单 推荐给社区里面的开发者 对于每个开源项目 开发者可以进行关注 watch 收藏 star fork 提issue 提交合并请求 MR 等 数据库里面统计了每个开源项目关注 收藏
  • 液晶偏振光栅

    1 偏振 光是横波 在垂直于光的传播方向的平面内光波振动 即E矢量振动 各方向振幅都相等的光为自然光 只在某一方向有光振动的光称为线偏振光 各方向光振动都有 但振幅不同的光叫部分偏振光 螺旋着振动的光称圆偏振光 分旋和右旋 2 庞加莱球表示

随机推荐

  • mysql: [Warning] Using a password on the command line interface can be insecure.(using password:YES)

    前段时间不知道什么原因在Linux终端中出现无法启动Mysql的情况 在Linux终端中输入 mysql uroot p密码 的时候出现了下面这个错误 mysql Warning Using a password on the comman
  • 看完这篇 教你玩转渗透测试靶机vulnhub——FunBox10(Under Construction)

    Vulnhub靶机FunBox10 Under Construction 渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 漏洞利用 pspy64提权 获取flag
  • vim常用的功能

    vim是vi 的升级版本 它兼容vi的所有指令 而且还有一些新的特性 比如说预付高亮 可视化操作不仅可以在终端进行 还可以在 x Window mac os windows vim 有多种模式 我们常用的有三种 命令模式 插入模式 末行模式
  • MySQL常用命令总结

    命令行 作用 show engines 查看存储引擎 select database 查看当前数据库 show databases 查看数据库列表 show create database test 查看数据库test的建表语句 show
  • 第三方库github地址汇总

    1 butterknife https github com JakeWharton butterknife android Butterknife requires Java 8 compileOptions sourceCompatib
  • gitlab的日常使用

    gitlab的日常使用 一 登录gitlab 二 修改当前用户的密码 三 项目管理 1 新建项目 2 查看该项目 四 导入ssh key 1 选择ssh方式 2 选择设置列表 3 选择ssh key选项 4 在linux端生成ssh key
  • SpringCloud面试题及答案 300道,springcloud面试题总结 (持续更新)

    SpringCloud面试题及答案 SpringCloud面试题大全带答案 2021年面试题及答案 最新版 高级SpringCloud面试题大全 发现网上很多SpringCloud面试题及答案整理都没有答案 所以花了很长时间搜集 本套Spr
  • 浙大版《Python 程序设计》题目集 第2章-4 特殊a串数列求和

    第2章 4 特殊a串数列求和 给定两个均不超过9的正整数a和n 要求编写程序求a aa aaa aa a n个a 之和 输入格式 输入在一行中给出不超过9的正整数a和n 输出格式 在一行中按照 s 对应的和 的格式输出 输入样例 2 3 输
  • eclipse文件上传错误:the request doesn‘t contain a multipart/form-data or multipart/mixed stream...

    错误信息 org apache commons fileupload FileUploadBase InvalidContentTypeException the request doesn t contain a multipart fo
  • 大数据预处理架构及方法详解

    大数据预处理架构及方法详解 大数据的快速发展和广泛应用 使得大数据预处理成为数据分析和挖掘的关键环节 在本文中 将详细介绍大数据预处理的架构和方法 并提供相应的源代码示例 一 大数据预处理架构 大数据预处理的目标是将原始的 杂乱无章的数据转
  • echarts中tooltip自定义使用值params参数详解

    tooltip formatter params 首先是tooltip格式 其次就是分析params参数 最后formatter怎么return显示 在做项目的过程中 需要增加点悬浮内容来解释当前点的数据 但是查了echarts和一些资料
  • flex水平排列左对齐

    这里分享一个flex水平排列左对齐的方法 很简单 问题描述是复制过来 解决班发是我自己常用的 怕忘记所以记录下 让CSS flex布局最后一行列表左对齐的N种方法 coldriversnow的博客 CSDN博客 flex 最后一行左对齐 问
  • centos7 安装包出现相互依赖

    安装包时添加 nodeps force
  • imac 网络安装系统 服务器时间,Mac 重装系统教程(二):网络在线重装

    哈喽 大家好 我是麦壳菌 昨天给大家分享了 Mac 重装系统教程 系列的第一篇 Mac 在哪些情况下需要重装系统 今天分享第二篇 网络在线重装 重装系统的方法分为 网络在线重装 和 U盘引导重装 网络在线重装 开机时 通过快捷键进入Mac
  • Python入门教程:超详细1小时学会Python

    1 Hello world 安装完Python之后 打开IDLE Python GUI 该程序是Python语言解释器 你写的语句能够立即运行 我们写下一句著名的程序语句 并按回车 你就能看到这句被K R引入到程序世界的名言 在解释器中选择
  • 【Unity基础】3.脚本控制物体运动&天空盒

    Unity基础 3 脚本控制物体运动 天空盒 大家好 我是Lampard 欢迎来到Unity基础系列博客 所学知识来自B站阿发老师 感谢 一 搭建开发环境 1 下载visual studio 在我们下载unity编译器的时候 会让我们选择当
  • 返回链表的中间结点

    返回链表的中间结点 给定一个带有头结点 head 的非空单链表 返回链表的中间结点 如果有两个中间结点 则返回第二个中间结点 用快慢指针来写 Node Fast Node Slow 先初始化 让Fast和Slow都指向第一个链表节点 然后让
  • 【延期召开】2022年网络与信息安全国际会议(NISecurity 2022)

    2022年网络与信息安全国际会议 NISecurity 2022 重要信息 会议网址 www nisecurity org 会议时间 2022年7月22 24日 召开地点 中国 杭州 截稿时间 2022年6月20日 录用通知 投稿后2周内
  • STM32 CAN总线故障检测功能的使用

    STM32 中的CAN总线模块是具有故障监测功能的 就是CANx SCE IRQHandler 这个用的很少 它叫CAN总线状态改变中断 通过打开这个中断 配合代码可以精确的监测CAN总线的故障情况 就是监测对应CAN的ESR寄存器 可以使
  • 常见开源协议介绍

    一 常用开源协议汇总图 首先从一张图开始 介绍几种主流的开源协议 以及决定选用哪种框架的思路 使用哪种开源协议 决定了你发布的开源项目被别人使用了之后 别人的项目是否受到你的项目的开源协议的约束 受到哪种约束 同理 采用别人的开源项目时 也