Prusa创始人Josef Průša在社交媒体上公开指控BambuLab的BambuStudio软件长期违反AGPL v3开源协议,引发了3D打印社区的广泛讨论。这场争议的核心在于:BambuStudio基于PrusaSlicer的AGPL代码开发,但其关键网络组件却是闭源的。
争议的起源
BambuStudio是一款广受欢迎的3D打印切片软件,由BambuLab开发。它基于PrusaSlicer(AGPL v3协议),而PrusaSlicer本身又基于更早的Slic3r(同样是AGPL v3)。
问题出在BambuStudio的一个关键组件——bambu_networking。这个组件负责处理登录、打印机监控、局域网/云端打印、MakerWorld集成、摄像头、MQTT通信、预设管理、固件更新等核心功能。BambuLab在README中承认,这个插件基于非自由库,也就是说它的源代码是闭源的。
为什么这违反了AGPL?
AGPL v3(GNU Affero General Public License)是比GPL更严格的开源协议。它要求:如果你基于AGPL代码开发并分发软件,你的整个软件(包括所有与主程序紧密集成的组件)都必须以相同的AGPL协议开源。
从公开的BambuStudio代码来看,bambu_networking并不是一个独立的第三方插件,而是深度集成到主程序中的运行时组件:
- BambuStudio知道确切的库名和版本号
- 从Bambu服务器下载并安装到程序数据目录
- 动态加载DLL/SO/DYLIB文件
- 解析C++函数符号,传递C++结构体和回调
- 允许插件在主UI线程上执行操作
- 通过OTA机制自动更新
这不是简单的”兼容性”,而是设计好的运行时组件。根据AGPL的定义,这种紧密集成的动态链接库属于”Corresponding Source”(对应源代码),必须随主程序一起开源。
社区怎么看?
在Hacker News上,这条消息获得了290多个点赞。社区反应两极分化:
支持开源的一方认为,BambuLab既然选择了基于AGPL代码开发,就应该遵守协议规则。把核心功能藏在闭源组件里,是对开源社区的不尊重。
实用主义者则指出,很多商业公司都在打GPL的擦边球,BambuLab不是第一个也不会是最后一个。而且BambuStudio本身确实好用,用户不太关心许可证细节。
对站长和开发者的启示
这件事给我们几个提醒:
选开源协议要慎重。如果你的项目用了AGPL代码,你的所有相关组件都需要开源。这是AGPL和MIT/Apache最大的区别。
“插件”不等于”独立”。把闭源代码包装成”插件”并不能规避AGPL义务,关键看技术架构上是否深度集成。
商业公司对开源协议的态度正在收紧。随着开源社区法律意识的增强,类似的版权争议只会越来越多。使用开源代码前,务必搞清楚许可证要求。
本文参考来源:GitHub – Why bambu_networking violates the AGPL in Bambu Studio | Hacker News讨论
















暂无评论内容