license 限制
flowchart TD
A[如何选择开源许可证] --> B{是否要求修改版本<br>必须开源?}
B -->|是| C{是否要求网络服务<br>也必须开源?}
B -->|否| D[选择宽松许可证]
C -->|是| E[AGPL许可证]
C -->|否| F{GPL还是LGPL?}
F -->|整个项目开源| G[GPL许可证]
F -->|仅库文件开源| H[LGPL许可证]
D --> I{是否需要专利保护?}
I -->|是| J[Apache 2.0许可证]
I -->|否| K{是否需要最大自由度?}
K -->|是| L[MIT/BSD许可证]
K -->|否| M{是否需要特殊条款?}
M -->|允许商业使用| N[Apache 2.0/MIT/BSD]
M -->|禁止商业使用| O[CC-BY-NC]
M -->|要求署名| P[CC-BY]
M -->|允许商业但要求相同许可| Q[CC-BY-SA]
M -->|公共领域| R[CC0]
J --> S[适合商业项目使用]
L --> T[适合希望广泛采用的项目]
G --> U[适合希望促进开源的软件]
H --> V[适合希望被商业软件使用的库]
E --> W[适合网络服务/SaaS项目]
%% 许可证特性说明
X[宽松许可证特点<br>允许商业使用、修改、闭源分发] --> D
Y[著佐权许可证特点<br>要求开源、相同许可、专利授权] --> B
mindmap
title 开源许可证限制与范围
root
MIT/BSD
:::permissive
允许
商业使用
修改
闭源分发
专利使用
要求
保留版权声明
免责声明
Apache 2.0
:::permissive
允许
专利授权
商业闭源
商标使用
要求
修改声明
版权通知
专利状态变更通知
GPL v2/v3
:::copyleft
要求
源码公开(分发时)
相同许可证
专利授权
注明更改
禁止
闭源分发
增加额外限制
特殊
“Tivoization”限制(v3)
兼容性限制
LGPL
:::weak-copyleft
要求
库源码公开(修改时)
允许非LGPL主程序
动态链接不传染
禁止
静态链接不公开修改
AGPL
:::strong-copyleft
要求
网络访问即视为分发
用户获取源码权利
修改版本必须开源
适用场景
SAAS服务
网络应用
Creative Commons
CC0
:::公共领域
放弃所有权利
CC-BY
要求署名
CC-BY-SA
:::传染性
要求署名+相同授权
CC-BY-NC
禁止商业使用
BSL
:::转换许可证
特点
源码可用
时限后转MIT
禁止非授权SaaS
应用场景
商业开源软件