Yearning开源协议解析:如何合法使用与二次开发
1. AGPLv3协议核心条款解析
1.1 协议定义与适用范围
GNU Affero General Public License v3.0(AGPLv3)是一种自由软件(Free Software)许可协议,由自由软件基金会(Free Software Foundation, FSF)制定。Yearning项目采用此协议,意味着任何使用、修改或分发该软件的行为都必须遵守AGPLv3的条款。该协议的核心目标是保护软件用户的四大自由:运行、研究、修改和分发软件的自由。
1.2 与其他开源协议的关键区别
| 协议类型 | 核心要求 | 适用场景 | 与Yearning协议的兼容性 |
|---|---|---|---|
| AGPLv3 | 网络服务端修改需开源 | 服务器软件、SaaS服务 | 本协议 |
| GPLv3 | 修改后分发需开源 | 桌面软件、独立应用 | 可组合使用(见13章) |
| MIT | 几乎无限制 | 商业组件、工具库 | 可作为依赖,但修改Yearning需遵循AGPLv3 |
| Apache | 专利授权+商标保护 | 企业级项目 | 需注意专利条款兼容性 |
AGPLv3与GPLv3的关键差异在于第13章"远程网络交互"条款:当修改后的程序通过网络提供服务时,必须向用户提供修改后的源码。这对Yearning这类SQL检测工具尤为重要,因其通常部署在服务器环境中。
2. Yearning合法使用指南
2.1 基本使用权限
根据AGPLv3第2章"基本权限",用户可:
- 自由运行Yearning的未修改版本
- 制作私有修改(不对外分发/提供服务)
- 为内部使用目的进行修改和部署
2.2 源码获取与安装
# 合法获取Yearning源码
git clone https://gitcode.com/gh_mirrors/ye/Yearning
cd Yearning
# 编译可执行文件(示例)
go build -o yearning main.go
法律提示:获取源码后,必须保留LICENSE文件及所有版权声明,不得移除或修改原作者的许可信息。
2.3 商业使用限制
AGPLv3允许商业使用,但需满足:
- 不得限制用户的基本自由(如收费才能获取源码)
- 提供服务时必须公开修改后的源码
- 不得添加与AGPLv3冲突的额外条款
3. 二次开发合规要点
3.1 修改与衍生作品要求
第5章"修改源码版本的传播"规定,修改Yearning后进行传播需满足:
- 显著声明修改:在代码中添加修改记录,如:
// Yearning修改记录:
// 2025-09-14 添加PostgreSQL 16支持
// 修改人:XXX <contact@example.com>
- 整体开源:修改部分与原Yearning代码整体受AGPLv3约束
- 保留许可信息:不得删除原LICENSE文件及法律声明
3.2 网络服务端部署规范
若将修改后的Yearning部署为网络服务(如企业内部检测平台),需:
- 在服务首页提供"获取源码"链接
- 源码包需包含所有修改记录
- 保留3年以上的源码获取渠道(如专用下载页面)
3.3 分发与再许可规则
分发Yearning需遵循第4章"传播 verbatim 副本"要求:
- 必须附带完整LICENSE文件
- 保持所有版权和许可声明完整
- 可收费分发,但需允许免费获取源码
禁止行为:不得将Yearning或其衍生作品改为闭源软件,或使用MIT/Apache等宽松协议重新许可。
4. 企业级应用合规方案
4.1 内部使用场景
企业在内部网络部署修改后的Yearning时:
- 若仅内部员工使用,无需公开源码
- 需建立修改记录文档(以备审计)
- 禁止限制员工获取修改后源码的权利
4.2 商业服务场景
提供基于Yearning的商业服务(如安全检测SaaS)时:
4.3 合规风险防范
| 风险类型 | 防范措施 | 法律依据 |
|---|---|---|
| 未公开修改源码 | 建立源码自动发布机制 | 第13章 |
| 移除版权声明 | 使用自动化检查工具 | 第4章 |
| 限制用户自由 | 制定内部开源合规流程 | 第10章 |
5. 常见合规问题解答
5.1 必须公开哪些类型的修改?
- 需公开:核心检测引擎优化、规则库更新、Web界面修改
- 无需公开:配置文件(conf.toml)、部署脚本、使用说明文档
5.2 如何合并其他开源组件?
根据第5章"聚合"条款,Yearning可与以下组件安全组合:
- MIT/GPL许可的依赖库(如Go标准库)
- 独立的非衍生作品(如监控脚本、日志分析工具)
合并时需注意:
// 正确示例:独立模块引用
import (
"github.com/mit-licensed/loglib" // 允许
"yearning/internal/core" // 必须遵循AGPLv3
)
5.3 协议冲突如何处理?
若需使用与AGPLv3不兼容的组件(如某些专利许可软件),唯一合法途径是:
- 不修改Yearning核心代码
- 将不兼容组件作为独立进程运行
- 通过标准API(如HTTP)与Yearning通信
6. 最佳实践与资源
6.1 二次开发工作流
6.2 合规工具推荐
- Reuse Toolkit:许可管理工具
- FOSSA:依赖合规检测
- GitHub License Scanner:自动化许可检查
6.3 学习资源
- AGPLv3官方全文(LICENSE文件)
- FSF官方指南(非链接,可自行搜索)
- Yearning项目LICENSE文件
7. 总结与行动指南
AGPLv3为Yearning提供了强大的开源保障,同时要求开发者尊重用户自由。合法使用和二次开发需遵循:
- 保留所有许可信息:不删除LICENSE及版权声明
- 公开网络服务修改:服务器端修改必须提供源码
- 正确处理衍生作品:修改后分发需整体遵循AGPLv3
作为开发者,我们的责任是在享受开源自由的同时,维护开源生态的健康发展。通过遵守这些规则,Yearning才能持续为SQL安全社区提供价值。
行动建议:立即检查您的Yearning部署是否符合上述要求,重点关注修改记录和源码可获取性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



