常见开源协议横向对比
文章目录
- 1 简介
- 2 常用协议简介
- BSD
- Apache License 2.0
- MIT
- MPL
- EPL
- LGPL
- GPL2.0
- GPL3.0
- AGPL
- MPL
- EPL
- No License
- 3 横向对比
- 4 总结
1 简介
软件开发协议经常看到的内容,但是很多人不知道协议的具体内容,甚至连最基本的概念也没有。因此,本文对协议的概念、常见协议进行介绍,并横向对比。以便大家更好地理解这些协议。
2 常用协议简介
软件的协议相当于软件发布方提出的使用要求。这些要求是具有法律效应。如果不遵守,轻则受到警告,重则受到经济制裁或受到经济损失。所以,任何软件开发者都应该注意软件的常用协议。
BSD
商业软件可以使用,也可以修改使用BSD协议的代码。
需要遵守以下规则:
- 如果分发的软件包含源代码,则必须在源代码中保留原始的BSD许可证声明。
- 如果分发的软件仅包含⼆进制程序,则必须在⽂档或版权说明中保留原始的BSD许可证声明。
- 未经许可,不得使⽤原始作者或机构的名字为软件做市场推⼴。
Apache License 2.0
Apache Licence是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布/销售。Apache Licence是著名的非盈利开源组织Apache采用的协议,需要遵守以下规则:
- 必须在源代码中保留原始的Apache许可证声明。
- 如果⽤户修改了源代码,需要在被修改的⽂件中说明。
- 在衍⽣产品中,必须保留原来代码中的版权、专利、商标及作者规定的其他需要包含的说明等信息。
- 如果在分发的软件中包含Notice⽂件,则需要在Notice⽂件中包含Apache许可证声明。
MIT
商业软件可以使用,也可以修改MIT协议的代码,甚至可以出售MIT协议的代码。需要遵守以下规则:
- 如果分发的软件包含源代码,则必须在源代码中保留原始的MIT许可证声明。
- 如果分发的软件仅包含⼆进制程序,则必须在⽂档或版权说明中保留原始的MIT许可证声明。
MPL
商业软件可以使用,也可以修改MPL协议的代码,但修改后的代码版权归软件的发起者。
EPL
商业软件可以使用,也可以修改EPL协议的代码,但要承担代码产生的侵权责任。
LGPL
产品对外分发或销售时静态链接的相关代码要开源,因此商用时需要动态链接使用。商业软件可以使用,但不能修改LGPL协议的代码。需要遵守以下规则:
- 如果软件通过动态链接的⽅式使⽤LGPL类库,则该软件不需要开源。
- 如果软件通过静态链接的⽅式使⽤LGPL类库,则软件作者必须提供程序的⼆进制⽬标⽂件(不需要提供源代码),以便⽤户有机会更新LGPL类库并重新链接到该程序。
- 如果修改了LGPL的源码或者衍⽣了新的代码,则所有修改后及衍⽣的代码也必须遵循LGPL许可证
GPL2.0
产品对外分发或销售时链接的相关代码要开源,因此商用时要进程隔离。商业软件不能使用GPL协议的代码。
GPL3.0
GPLv3包含了明确的专利许可以及添加了对数字版权管理和加密签名的限制,不仅要求⽤户公开源码,还要求公布相关硬件及必要的安装信息。
AGPL
产品即使不对外分发或销售,链接的相关代码也要开源,因此商用时要进程隔离。
MPL
MPL License由Mozilla基⾦会开发并维护,介于BSD(衍⽣代码可以闭源)和GPL(衍⽣代码必须以GPL⽅式开源)之间,最新发布的2.0版以更简洁和更好的兼容其他协议为⽬标,⿎励企业和开源社区为开发核⼼软件做更多贡献。
使用MPL源码需要遵守以下规则:
- 如果修改了MPL的源码或者衍⽣了新的代码,并且以源代码⽅式发布的⽂件,则所有修改后及衍⽣的代码也必须遵循MPL许可证。
- 如果⽤户⾃有的源码通过专⽤接⼝访问MPL的源码及类库,则包含专⽤接⼝的代码必须遵循MPL许可证,⽤户⾃有源码不必遵循MPL许
可证。 - ⽤户获得MPL代码中的专利许可,但是不能使⽤其原始商标。
EPL
EPL License由Eclipse基⾦会开发并维护,在CPL基础上删除了专利相关诉讼的限制条款。EPL⽐GPL许可证更为宽松,并且与GPL并不兼容。使⽤EPL源码需要遵守以下规则:
- 如果修改了EPL的源码或者衍⽣了新的代码,并且以源代码⽅式分发,则所有修改后及衍⽣的代码也必须遵循EPL许可证。
- 如果软件以⼆进制⽬标⽂件的形式分发,则需要声明可以根据请求向其他⽤户提供源代码。
- ⽤户获得EPL代码中的专利许可。
No License
随便用 随意改
3 横向对比
Item/Protocal | BSD | Apache License 2.0 | MIT | MPL | EPL | LGPL | GPL2.0 | GPL3.0 | AGPL | MPL | EPL | No License |
---|---|---|---|---|---|---|---|---|---|---|---|---|
商业软件 | 免费 | 免费 | 免费 | 免费 | 免费 | 免费 | 收费 | 收费 | 收费 | 免费 | 免费 | 免费 |
个人软件 | 免费 | 免费 | 免费 | 免费 | 免费 | 免费 | 收费 | 收费 | 免费 | 免费 | 免费 | 免费 |
散布 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
修改 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
授权转售 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
无担保责任 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
4 总结
本文对常见的协议进行了简介和横向对比,希望对软件开发者有所帮助。
常见开源协议横向对比相关推荐
- 一文详解 常见开源协议
自12年到北京做程序员,貌似从未关心过项目中使用的"轮子"涉及到了哪些开源协议.版权保护方面,虽然相关法规尚有待完善,但在研发商用软件过程中,作为软件开发者还是很有必要了解一下,我 ...
- GitHub常见开源协议
前言 了解开源协议,合理使用轮子,避免法律风险.本次总结6种常用的开源协议. 先借助下图理解下 一.BSD(Berkeley Software Distribution license) BSD源自加 ...
- 常见开源协议!【科普】
先上图: 常见的五种简介: BSD开源协议 BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者 ...
- 六种常见开源协议整理
文章目录 开源协议的作用 如何选择开源协议 详细介绍常用开源协议 1. BSD ( original BSD license . FreeBSD license . Original BSD lice ...
- Linux学习总结(78)—— 常见开源协议讲解
不根据协议使用开源软件可能面临的风险 2003 年 Linksys 公司(同年 3 月被思科收购)推出 WRT-54G,这款路由器采用了基于 Linux 的固件,而 Linux 使用的是 GPL 开源 ...
- 常见开源协议大白话说明
GPL:只要你用了任何该协议的库.甚至是一段代码,那么你的整个程序,不管以何种方式链接,都必须全部使用GPL协议.并遵循该协议开源.商业软件公司一般禁用GPL代码,但可以使用GPL的可执行文件和应用程 ...
- 流媒体服务器(3)—— 常见开源流媒体服务器对比分析
目录 前言 正文 SRS 使用步骤 主要功能 EasyDarwin 使用步骤
- 软件开发中的开源协议详解!
作者:pdai cnblogs.com/pengdai/p/9227404.html 开源不等于免费!为了加速我们的开发,我们会使用开源的软件和源码: 为避免商业风险,需要在使用时了解第三方如软件协议 ...
- 开源协议(Open Source License)
什么是开源? 开源(Open Source) 在软件领域,可以理解为 "开放源代码" 的简称. 通常指将软件项目的源代码向大众开放,允许大众获取.使用.修改和发行. 开源项目(Op ...
最新文章
- Android 动态Tab分页效果实现
- go语言调用python_Golang中调用Python3
- Linux-Android启动之zImage生成过程详解
- get方法请求返回一个文件_一键转换多种文件格式,完全免费,总有一个方法适合你...
- java编码问题汇总
- linux修改时区不用重启服务,Linux修改时区不用重启的方法
- 辗转相除法求最小公约数
- Spring之AOP的实现
- FusionChartsFree例子
- 11计算机专业vb试题答案,西华师范大学计算机VB试题及答案11
- CC1101/CC1100、CC2540/CC2541的比较
- 如何使用GoldWave中文版将语音转化为文字
- word如何插入和删除脚注,尾注
- 大多数Nobody游戏下载(带象棋残局攻略) 中文破解版
- 有关于取证的笔记——包含详细例题解析
- 乌镇发布六大榜单,解读大数据产业全景 !(附2018中国大数据产业地图、企业榜单)...
- 手机怎样设置一个高考倒计时便签,可以天天看见那种
- 脏写、脏读、不可重复读、幻读的区别
- IDEA如何进行远程Debug
- Centos7安装trash-cli
热门文章
- 友盟(软件异常实时监听的好帮手:Crash)接入教程(有点基础的小白最易学的教程)
- 图片转文字在线怎么转换?在线转换方法分享
- 每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈。 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?(所有飞机从同一机场
- 完美日记母公司逸仙电商招股书:重营销、轻研发,前三季度亏11亿
- 开启EC2免费服务器
- buuctf bjdctf_2020_babystack wp
- 电感线圈的使用常识—凯利讯半导体
- 解决There are 0 datanode(s) running and no node(s) are excluded in this operation.
- 【嵌入式08】基于IIC和SPI协议的温湿度采集与OLED显示
- PYTHON+DJANGO校园交友网站 PYCHARM mysql