MonkeyCode AGPL-3.0 协议解读:开源与商业的平衡艺术
📜 为什么选择 AGPL-3.0?
2025 年 7 月,当长亭科技宣布 MonkeyCode 采用 AGPL-3.0 协议开源 时,很多人感到意外:
"为什么不选更宽松的 MIT 或 Apache?"
"AGPL 不是最'激进'的开源协议吗?"
"这会不会影响商业化?"
今天我们就来深度解读这个选择背后的考量,以及 AGPL-3.0 对用户、贡献者和企业意味着什么。
📊 主流开源协议对比
| 协议 | 商业使用 | 修改后闭源 | 修改后必须开源 | 网络使用触发开源 | 专利授权 | 典型项目 |
|---|---|---|---|---|---|---|
| MIT | ✅ | ✅ | ❌ | ❌ | ✅ | jQuery, React |
| Apache 2.0 | ✅ | ✅ | ❌ | ❌ | ✅ | Kubernetes, TensorFlow |
| GPL-3.0 | ✅ | ❌ | ✅(分发时) | ❌ | ✅ | Linux, GCC |
| LGPL-2.1 | ✅ | ✅(动态链接) | ⚠️ 部分要求 | ❌ | ✅ | glibc, FFmpeg |
| AGPL-3.0 | ✅ | ❌ | ✅(分发/网络使用) | ✅ | ✅ | MonkeyCode, MongoDB, GitLab CE |
| BSL/SSPL | ⚠️ 有限制 | ❌ | ✅ | ✅ | ⚠️ 限制竞争 | Elastic(旧), Redis(新) |
关键差异:AGPL vs GPL
GPL-3.0 的"传染"条件:
→ 当你分发修改后的软件时
→ 必须以相同协议开源你的修改
AGPL-3.0 扩展了"分发"的定义:
→ 不仅包括物理分发(拷贝/下载)
→ 还包括"通过网络提供服务"(SaaS / 云服务)
这意味着:
如果你基于 AGPL 软件做了修改并作为云服务提供
即使没有分发二进制文件
也必须公开源代码
🤔 为什么长亭科技选择 AGPL-3.0?
理由一:防止"白嫖"云厂商
现实困境:
某云厂商 A:
1. 拿到 MonkeyCode 开源代码(MIT 协议下)
2. 做少量定制化修改
3. 作为付费 SaaS 服务提供给客户
4. 赚取利润但回馈社区 = 0
结果:
社区免费贡献 → 云厂商免费获利 → 社区得不到反馈
这就是著名的"云厂商白嫖"问题
AGPL-3.0 如何解决?
→ 如果云厂商 A 要提供 MonkeyCode 云服务
→ 必须公开他们的定制化修改
→ 社区可以从中受益
→ 形成正向循环
理由二:确保社区改进回馈
长亭科技的愿景:
我们希望 MonkeyCode 成为一个
→ 由社区共同建设的
→ 所有人都能受益的
→ 持续进化的平台
AGPL-3.0 保证:
✓ 企业 A 改进了 SDD 引擎 → 必须分享改进
✓ 安全研究员 B 发现了漏洞修复 → 必须分享补丁
✓ 大学 C 做了学术优化 → 必须公开发布
最终结果:
整个生态越来越好
没有人能"搭便车"不付出
理由三:与公司商业模式兼容
长亭科技的盈利模式:
❌ 不是靠卖软件许可证
(因为核心代码已经开源)
✅ 而是靠企业级服务:
├── 私有化部署咨询与实施
├── 专属技术支持(7×24)
├── 定制化开发服务
├── 培训与认证体系
└── 云端算力转售(微利引流)
这种模式下:
→ 开源越多 → 用户越多 → 服务需求越大
→ AGPL-3.0 不影响商业模式的健康运转
→ 反而通过强制开源促进生态繁荣
👥 对不同角色的影响
个人开发者
✅ 你可以:
→ 免费使用 MonkeyCode 全部功能
→ 自由学习、研究源代码
→ 提交 Issue 和 PR 贡献社区
→ 基于 MonkeyCode 开发个人项目
→ 在个人项目中引用/集成 MonkeyCode
⚠️ 注意:
→ 如果你修改了 MonkeyCode 核心代码
并将修改后的版本作为服务提供给他人
→ 需要公开你的修改部分
💡 实际上:
绝大多数个人开发者只是"使用者"
不涉及修改核心代码并提供服务
所以 AGPL-3.0 对你几乎没有约束
企业用户(内部使用)
✅ 完全自由的场景:
场景 A:直接使用开源版
→ Docker 部署到内网
→ 团队内部使用
→ 不对外提供服务
→ ✅ 无需公开任何代码
场景 B:在内部做了定制
→ 适配了公司的 LDAP 认证
→ 加入了自定义的安全规则
→ 仅在公司内部使用
→ ✅ 无需公开(只要不对外提供服务)
⚠️ 需要注意的场景:
场景 C:IT 部门将定制版 MonkeyCode
作为平台服务提供给全集团子公司使用
→ 这可能构成"网络使用"
→ 建议咨询法务或使用商业许可
SaaS 提供商 / 云服务商
⚠️ AGPL-3.0 主要约束的对象:
如果你是 SaaS 公司,想要:
→ 基于 MonkeyCode 二次开发
→ 作为付费云服务提供给客户
→ 且包含了你对 MonkeyCode 核心代码的修改
那么你必须:
✅ 公开你修改过的源代码
✅ 保持 AGPL-3.0 协议
✅ 让你的客户也能获取源码
💡 合规方案:
方案一:完全合规路线
→ 开放所有修改
→ 吸引社区贡献
→ 打造品牌影响力
方案二:商业许可路线
→ 联系长亭科技获取商业许可
→ 可以闭源定制开发
→ 适合有特殊需求的大企业
方案三:插件扩展路线
→ 不修改核心代码
→ 通过 MonkeyCode 插件机制扩展功能
→ 插件代码可以是任意协议(包括闭源)
→ 这是推荐的合规方式
开源贡献者
✅ 你的权利:
1. 使用自由
→ 可以任何目的使用 MonkeyCode
2. 研究自由
→ 可以研究源代码如何工作
→ 可以学习其架构和设计模式
3. 修改自由
→ 可以根据需要修改代码
→ 可以修复 Bug、添加功能、优化性能
4. 分发自由
→ 可以分享原始版本或修改版本
→ 但必须保持 AGPL-3.0 协议
5. 专利保护
→ AGPL-3.0 包含明确的专利授权条款
→不用担心被专利诉讼
📝 你的义务:
1. 注明来源
→ 保留原始版权声明和许可证文本
2. 说明修改
→ 如果有修改,需要说明改了什么
3. 保持协议
→ 分发时必须继续使用 AGPL-3.0
4. 触发开源
→ 如果通过网络提供服务且包含修改
→ 需要公开修改部分的源代码
🏢 企业 FAQ:法务最关心的问题
Q1: 使用 MonkeyCode 开源版是否安全?会侵犯知识产权吗?
A: 完全安全。AGPL-3.0 是国际公认的开源协议,已被全球数万个项目采用。使用 AGPL-3.0 软件不会导致你的代码被"传染"。只有你对 MonkeyCode 本身的修改才受 AGPL 约束,你自己写的业务代码完全属于你。
Q2: 我们用 MonkeyCode 开发的应用,需要开源吗?
A: 不需要。你用 MonkeyCode 生成的代码、你写的业务逻辑代码、你的配置文件——这些都是你的资产,不受 AGPL-3.0 影响。AGPL 只约束对 MonkeyCode 本身的修改。
Q3: 私有化部署后做了定制,需要公开吗?
A: 如果仅在内部使用(不对外提供服务),不需要公开。AGPL-3.0 的"网络使用"条款主要针对 SaaS 场景。企业内部使用被视为类似"内部部署",不触发开源义务。
Q4: 能否购买商业许可避免 AGPL 约束?
A: 可以。长亭科技提供商业许可选项,允许企业在特定条件下进行闭源定制开发。联系 contact@monkeycode.co 可获取详情。
Q5: AGPL-3.0 与等保/合规冲突吗?
A: 不冲突。事实上,使用开源软件并通过安全审计,反而有助于满足等保 2.0 中关于"自主可控"的要求。多家金融机构已经成功将 MonkeyCode(AGPL-3.0)纳入其等保合规的技术栈。
🔄 AGPL-3.0 与其他协议的实际案例对比
案例:MongoDB 的协议变迁
MongoDB 的经历:
2013-2018: AGPL-3.0
→ 社区繁荣
→ 但云厂商 AWS 推出 DocumentDB(基于 MongoDB 的竞品)
→ MongoDB 公司收入受损
2018-2021: SSPL(自制协议)
→ 明确禁止云厂商将其作为服务提供
→ 被 OSI(开放源代码促进会)认定为非开源协议
→ 社区分裂,口碑受损
2021 至今: SSPL + 商业版双轨制
→ 服务端用 SSPL
→ 驱动程序用 Apache 2.0
→ 商业版提供额外功能
教训:
太宽松(AGPL)→ 被云厂商白嫖
太严格(SSPL)→ 失去开源认证
→ 平衡点很难找
MonkeyCode 的策略:AGPL-3.0 + 商业许可双轨
MonkeyCode 的平衡之道:
┌─────────────────────────────────────┐
│ 双轨并行策略 │
├─────────────────────────────────────┤
│ │
│ 【开源轨道】AGPL-3.0 │
│ ├─ 个人开发者 → 免费使用 │
│ ├─ 内部企业部署 → 免费使用 │
│ ├─ 社区贡献者 → 共建生态 │
│ └─ 学习研究者 → 自由探索 │
│ │
│ 【商业轨道】企业许可 │
│ ├─ 闭源定制开发 │
│ ├─ 专属技术支持 │
│ ├─ SLA 保障 │
│ └─ 合规认证支持 │
│ │
└─────────────────────────────────────┘
优势:
→ 社区获得强大的开源产品
→ 企业获得灵活的商业选择
→ 长亭科技获得可持续的收入
→ 三方共赢
📈 AGPL-3.0 项目生态现状
采用 AGPL-3.0 的知名项目
| 项目 | 类型 | Star 数 | 说明 |
|---|---|---|---|
| MonkeyCode | AI 开发平台 | 10,000+ | 本文主角 |
| GitLab Community Edition | DevOps 平台 | 30,000+ | CI/CD 领域标杆 |
| MongoDB(旧版) | 数据库 | 25,000+ | 后改为 SSPL |
| CockroachDB | 分布式数据库 | 15,000+ | 后改为 BSL |
| Nextcloud | 云存储/协作 | 20,000+ | 私有云盘首选 |
| Odoo | ERP 系统 | 35,000+ | 最受欢迎的开源 ERP |
AGPL-3.0 的趋势
2015-2018: 高峰期
→ 大量新项目选择 AGPL
→ 被视为"真正开源"的象征
2019-2021: 动摇期
→ 云厂商白嫖问题凸显
→ 部分项目转向 BSL/SSPL
→ 社区对 AGPL 产生疑虑
2022-至今: 理性回归期
→ 人们意识到 BSL ≠ 真正开源
→ AGPL 仍是保护社区利益的最佳选择之一
→ 新一代项目重新拥抱 AGPL
→ 法律实践更加成熟
💡 总结:AGPL-3.0 的利与弊
✅ 优点
1. 最大化社区利益
→ 防止被大公司白嫖
→ 强制改进回馈社区
2. 保护用户自由
→ 任何人都可以查看、修改、分发
→ 不会有"黑盒"风险
3. 专利安全保障
→ 明确的专利授权条款
→ 避免专利诉讼风险
4. 促进创新
→ 所有改进必须公开
→ 避免重复造轮子
→ 技术快速迭代
5. 适合基础设施软件
→ 数据库、操作系统、开发平台
→ 这类软件应该属于全社会
⚠️ 缺点/挑战
1. 对 SaaS 商家不够友好
→ 可能阻止一些云服务商参与
→ 影响商业生态扩展
2. 理解成本高
→ 比 MIT/Apache 复杂得多
→ 需要法务介入评估
3. 可能吓退部分企业用户
→ 对协议存在误解
→ 担心"代码被传染"
4. 执行难度
→ "网络使用"边界模糊
→ 不同法律辖区解释不同
🎯 最终评价
AGPL-3.0 不是完美的协议,但对于 MonkeyCode 这样的基础设施级开发平台来说,它是当前最优解。
它在"完全开放(MIT)"和"完全封闭(专有)"之间找到了一个合理的平衡点——既保护了社区的共同利益,又给企业留出了足够的使用空间。
对于 99% 的用户来说,AGPL-3.0 的影响几乎为零。你可以像使用 MIT 协议软件一样自由地使用它。
🔗 相关资源
- AGPL-3.0 全文: https://www.gnu.org/licenses/agpl-3.0.html
- AGPL-3.0 FAQ: https://www.gnu.org/licenses/gpl-faq.html
- OSI 开源定义: https://opensource.org/osd
- MonkeyCode GitHub: https://github.com/chaitin/monkeycode
- 商业许可咨询: contact@monkeycode.co
- 问题反馈: GitHub Issues
开源不是一种妥协,而是一种信念。选择 AGPL-3.0,是因为我们相信:好的技术应该属于所有人,而不是被少数人垄断。
#MonkeyCode #AGPL #开源协议 #AGPL-3.0 #开源 #商业平衡 #法律 #合规 #企业级 #社区 #许可证 #自由软件
浙公网安备 33010602011771号