代码贡献指南
- 所有贡献必须兼容MIT和GPL-3.0许可证
- 新代码必须包含SPDX许可证标识
- 贡献者需签署贡献者许可协议(CLA)
- 第三方依赖必须与双许可模式兼容
许可标识示例
# SPDX-License-Identifier: MIT OR GPL-3.0-or-later
def new_feature():
# 实现新功能
pass
### 许可证冲突检测工具
为了帮助开发者避免许可证冲突,项目提供了自动化检测工具:
```bash
# 许可证冲突检测脚本
python tools/license_checker.py
# 示例输出
Checking license compatibility...
OK: All dependencies are compatible with MIT OR GPL-3.0-or-later
Warning: Some files missing SPDX identifier
商业应用与开源贡献平衡
双许可模式下,商业应用和开源贡献可以实现平衡:
商业用户可以利用MIT许可证开发专有功能,同时通过贡献通用功能回馈社区,实现双赢。
常见问题与解决方案
许可证选择困境
问题:无法决定选择哪种许可证?
解决方案:使用决策树辅助决策:
代码复用与许可证兼容性
问题:如何确保复用代码与双许可兼容?
解决方案:使用许可证兼容性矩阵:
| 来源许可证 | 目标许可证 | 兼容性 |
|---|---|---|
| MIT | MIT | 是 |
| MIT | GPL-3.0 | 是 |
| GPL-3.0 | MIT | 否 |
| GPL-3.0 | GPL-3.0 | 是 |
| Apache-2.0 | MIT | 是 |
| Apache-2.0 | GPL-3.0 | 部分 |
商业分发与GPL合规
问题:商业产品如何在GPL-3.0下合规分发?
解决方案:采用模块化设计,分离GPL和专有组件:
商业VRM编辑器/
├── 核心模块(GPL-3.0)
│ └── 基于VRM-Addon-for-Blender的功能
└── 专有模块(商业许可)
└── 与核心模块通过API交互
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



