本文目录导读:

- 核心原则:你的核心诉求是什么?
- 第一类:严格“传染性”许可证(Copyleft 强)
- 第二类:温和“传染性”许可证(弱 Copyleft)
- 第三类:宽松“允许性”许可证(Permissive)
- 快速决策流程图
- 特别说明:CC 协议(Creative Commons)
- 最后,一个简单的建议
选择开源许可证,本质上是在保护代码作者的权利与促进代码被广泛使用之间做权衡。
不需要把每种许可证都背下来,下面是一份从实际应用场景出发的选择指南,供你参考。
核心原则:你的核心诉求是什么?
请先问自己三个问题:
- 你介不介意别人用你的代码做闭源的商业产品?(别人基于你的代码,修改后不公开源码就卖钱)
- 你担不担心大公司用了你的代码后,不把他们的改进反哺回社区?
- 你希望你的代码被尽可能多的人使用和传播吗?
根据这三个问题的答案,可以把主流许可证分为三大类。
第一类:严格“传染性”许可证(Copyleft 强)
代表:GPL 3.0
- 核心特征:“你用它,你的代码也得用同样许可证公开”,这是“病毒式”传染条款。
- 适合场景:你希望自己的代码永远保持开源,任何基于它的衍生作品也必须开源。
- 主要缺点:商业公司通常非常排斥GPL,如果你的代码被一个商业软件以GPL方式“污染”了,他们要么不碰,要么宁愿重写。
- 特别注意:GPL有版本2和3,3.0增加了反TiVo化等条款,更为严格。Linux内核用的是GPL 2.0。
如果你是坚定的开源理想主义者,或者在做的是操作系统、底层工具类项目,希望杜绝闭源商业分支,选GPL。
第二类:温和“传染性”许可证(弱 Copyleft)
代表:MPL 2.0, LGPL
- 核心特征:传染性是有边界的,修改后的代码文件需要开源,但以库的形式被其他程序调用时,调用方的代码可以不继承开源。
- 适合场景:
- LGPL:主要用于代码库(Library),你用了一个LGPL的图形库,开发了一个商业游戏。你不需要公开游戏源码,但如果你修改了那个图形库,修改部分必须开源。
- MPL 2.0:比LGPL更友好一些,修改了某个文件,仅该文件需保持MPL;新增文件可以使用其他许可证。
- 代表项目:Mozilla Firefox(MPL 2.0)、LibreOffice(MPL 2.0)、一些知名的C/C++库(LGPL)。
你希望别人可以把你的代码用在闭源项目中(比如一个库或组件),但同时要求他们修改了你的代码必须回馈。这是商业公司与开源社区之间常用的妥协方案。
第三类:宽松“允许性”许可证(Permissive)
代表:MIT, Apache 2.0, BSD
- 核心特征:几乎可以做任何事,你可以修改、复制、再发布、闭源商用,唯一的要求通常是保留版权声明。
- 适合场景:你希望代码被最大范围地采用,不关心别人是否开源,甚至欢迎别人拿去闭源卖钱,只要他们保留你的署名。
- 主要区别(如何选):
- MIT:最简单、最宽松,只需保留版权声明和许可声明。95%的个人小项目、脚本、工具库都选它。
- Apache 2.0:比MIT多了一个专利授权条款,如果你在代码里包含了自己申请的专利,Apache 2.0意味着你自动授予了用户使用这些专利的许可。这是大公司(如Google、Apache基金会)的首选,能有效避免专利诉讼风险。
- BSD:有2-Clause、3-Clause版本,3-Clause禁止用你的名字或项目名称进行推广,流行度不如MIT和Apache。
绝大多数情况,选MIT,如果你在大公司或担心专利问题,选Apache 2.0。
快速决策流程图
你正在开发一个:
- 一个小工具、一个脚本、一个简单的库,或者写来玩的?
- 推荐:MIT(最简单,无负担)
- 一个可能被大公司集成的核心库?
- 担心他们不贡献改进?
- 是 -> LGPL 或 MPL 2.0
- 否 -> MIT 或 Apache 2.0
- 代码里有重要专利?选 Apache 2.0
- 担心他们不贡献改进?
- 一个操作系统、编译器、或希望强制所有衍生品开源的重大基础设施?
- 推荐:GPL 3.0(用AGPL 3.0覆盖网络服务场景)
- 一个只能通过Web提供服务(SaaS)的应用?
- 你介意AWS这种云厂商白嫖你的代码,却不公开他们改了什么(比如改个界面就卖钱)?
- 介意 -> AGPL 3.0(GPL的SaaS版,要求通过网络提供服务的修改也必须开源)
- 不介意 -> MIT / Apache 2.0
- 你介意AWS这种云厂商白嫖你的代码,却不公开他们改了什么(比如改个界面就卖钱)?
特别说明:CC 协议(Creative Commons)
- 许可证都是针对软件代码的。
- 如果你的作品是文档、图片、视频、字体,请用 CC 协议,不要用GPL或MIT。
- 常见选择:
- CC-BY:最宽松,署名即可。
- CC-BY-SA:署名且相同方式共享(类似GPL)。维基百科就用这个。
- CC0:放弃所有版权,相当于“公共领域”。
一个简单的建议
- 不清楚怎么选时,默认选MIT。 这是程序员的“国家通用语”,简洁明了,人人爱用。
- 如果你希望别人修改后也必须开源,选GPL。 但要做好别人因此绕道走的心理准备。
- 如果想做商业友好型库,选Apache 2.0。
- 不要自己发明许可证,也不要用什么“仅供学习交流”的非标准文字。 开源社区不认识你的协议,等于自绝于人群。
如果还是拿不准,可以在GitHub上创建一个仓库,在选择许可证时,GitHub会提供每个许可证的简短摘要说明,祝项目顺利。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播