彻底搞懂QMK许可证:GPL合规指南与常见陷阱
你还在为QMK固件的开源合规问题头疼吗?作为键盘爱好者或厂商,使用QMK Firmware时如何确保遵守GPL许可证?本文将带你深入了解QMK采用的GPLv2许可证核心要求、常见违规案例及合规最佳实践,让你避免法律风险,成为负责任的开源贡献者。读完本文,你将清晰掌握GPLv2的关键条款、QMK团队的违规处理流程,以及如何正确提交合规的代码贡献。
GPLv2许可证核心要求
QMK Firmware采用GPLv2许可证,这是一款 copyleft 开源许可证,核心要求包括:
源代码公开义务
当你分发基于QMK的固件时,必须同时提供完整的源代码。根据GPLv2第3条,无论是否收费,只要发布可执行文件,就必须以机器可读形式提供对应的源代码,或提供至少三年的源代码获取途径。这意味着厂商不能只提供二进制固件而隐藏修改后的代码。
衍生作品共享义务
对QMK进行修改后形成的衍生作品,必须同样采用GPLv2许可证发布。如LICENSE第2条规定,修改后的作品整体必须以GPLv2许可,确保开源精神的延续。例如,为键盘添加无线功能后,相关代码也必须开源。
保留许可证信息
分发时必须保留所有关于GPL许可证的声明和免责信息,不得移除或修改原有的版权声明。如贡献指南所述,提交代码时需更新文件头的版权信息,替换%YOUR_NAME%占位符。
常见违规行为与案例
QMK社区曾多次出现许可证违规事件,主要集中在以下几类:
不提供源代码
部分厂商销售基于QMK的键盘却不公开源代码,导致用户无法自定义固件。如违规厂商列表中提到的Ajazz、Attack Shark等品牌,销售三模键盘却未提供对应源码。
提供"残缺"源代码
更隐蔽的违规是提供不完整代码,例如为无线键盘只提供有线功能的固件源码。典型案例包括Alpaca/Apos品牌,其公开代码中移除了无线模块,违反GPLv2的完整性要求。
虚假PR提交
部分厂商通过提交残缺代码到QMK仓库以获取VIA兼容性,却隐瞒实际产品的完整功能。如Royal Kludge曾提交不含无线功能的PR,与宣传的三模功能严重不符。
QMK团队的违规处理机制
QMK维护团队对许可证违规采取严格措施,处理流程如下:
处理措施详解
- PR拦截:对未解决违规的厂商,其所有PR将被暂停合并,直至提供所有违规产品的完整源码。
- 代码移除:多次违规或故意欺骗的厂商,其现有代码将从QMK仓库中移除。
- 永久封禁:严重违规者将被禁止未来提交任何PR,如license_violations.md第82条所述。
合规最佳实践
厂商合规 checklist
- 完整源码发布:确保所有销售产品的固件源码可获取,包括无线、RGB等所有功能模块。
- 明确许可声明:在产品文档和源码中清晰标注GPLv2许可证信息。
- 及时响应请求:收到用户源码请求后,应在合理时间内提供下载链接或寄送存储介质。
开发者贡献规范
提交代码到QMK时,需遵守贡献指南的要求:
- 确保所有修改符合GPLv2许可证
- 提交完整功能代码,不隐瞒关键模块
- 更新文件头版权信息,替换
%YOUR_NAME%占位符
社区资源与支持
QMK社区提供多种资源帮助你理解和遵守许可证要求:
- 官方文档:GPLv2完整条款详细解释了各项权利与义务
- 贡献指南:docs/contributing.md提供了合规提交代码的步骤
- 违规案例:docs/license_violations.md列出了常见违规模式,帮助你避免类似错误
- 社区支持:通过Discord频道(#qmk-license)可获取许可证相关问题的实时解答
总结与行动建议
遵守GPLv2许可证不仅是法律要求,更是维护QMK生态健康的关键。作为厂商,公开源码能提升用户信任;作为开发者,合规贡献能推动项目持续发展。立即检查你的产品或代码是否符合GPLv2要求,访问QMK文档中心获取更多资源。
如果你觉得本文有帮助,请点赞收藏,关注我们获取更多QMK技术与合规指南。下期我们将探讨"QMK固件商业化的合规策略",敬请期待!
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



