小米屡次违反GPL协议,疑成“惯犯”!
继一加疑似违反 GPL 协议,迟迟不公布 OxygenOS 12 源代码惹怒网友后,小米也因一直不公布各类设备的 Android 12 内核源代码引发网友不满,有网友犀利指出:这怕是受到了一加的启发!
2022年6月底,在一加遭开发者质疑其违反GPL协议后不到一个月,又有开发者在GitHub发表了对小米违反GPL协议的质疑。一名开发者率先在 GitHub 上发声:“我们可以看到 venus-s-oss 的源代码吗?第一个 SKBMIXM 已经在2021年 10 月发布,我们仍然在等待源代码,包括其他已经得到 Android 12 更新的设备。”
还有开发者愤怒地表示,他已经在 GPL 上报告了此事,同时忿忿不平地说道:“这简直是耻辱!他们在赚钱,却一次又一次地不公布来源。通过抄袭别人的工作来获利,却不给任何回报,真是聪明的生意。他们已经有几个月没有更新大多数设备了。”
发布新产品不是延期开源的理由
事实上,早在 2015 年,XDA 开发者论坛专门发表了文章谴责小米多次违反 GPLv2 开源条例(https://www.xda-developers.com/gplv2-and-its-infringement-by-xiaomi/)。尽管Android系统采用的是 Apache 2.0 许可证,但是由于 Android 使用了遵守 GPLv2 许可的 Linux 内核,根据 GPLv2 许可证的授权要求,所有 Linux 衍生版本修改后的源代码必须公开。
小米原本承诺在2014年10月承诺将会在数周内释出小米3的内核源代码,但到2015年1月小米仍然没有公开。小米的解释是内核源代码包含了大量用于当时即将推出的两款新设备(即两款小米Note)的代码,所以暂时不能公开。但XDA认为这个理由并不能证明他们延期释出源代码的行为是正当的。
主流开源许可证的区别
看到这里,或许有人该问了,不是说 Android 系统采用的是 Apache 2.0 许可证,那为何违反的是 GPL 许可证呢?上述事件中涉及到的两个许可证究竟有何差别?
近几年来,开源呈现欣欣向荣之势,然而据 CSDN《2021-2022 中国开发者调查报告》数据显示,尽管目前已有 94% 的开发者使用开源软件,但近 30% 开发者并不了解开源协议,60% 对于主流开源协议如 GPL 与 Apache 开源协议的区别并不清楚。
正如上文事件中所说,Android 操作系统使用的是更宽松的 Apache 许可而并非 GPL 许可。Apache 许可相对于 GPL 许可而言较为宽松,本身并不要求将修改后的代码再次开源,因此在传递性上并不像 GPL 一般具有“传染性”,而仅仅要求必须在软件中包含自己的许可证。
因此更自由的 Apache 可以允许许多厂商在原来的代码基础上进行大量的调整、改进及功能增强,同时对这些改进不做开源处理。而这也是小米和其它 OEM 厂商所做的事情。但是要注意的是,Android 也是基于 Linux 内核开发,而 Linux 使用的是更为严格的 GPLv2 许可。因此只要使用到了 Linux 内核,就必须要让软件履行 GPLv2 许可下的要求。
近些年,违反开源许可而导致被起诉的案件可谓是屡见不鲜。去年 9 月,作为我国首个明确 GPL3.0 协议法律效力的“罗盒风灵案”,法院指出 GPL 3.0 协议是一种民事法律行为,具有合同性质,属于我国《合同法》调整的范围。而今年 5 月,软件自由保护协会(SFC)起诉智能电视生产商 Vizio 违反 GPL 协议,美国法院的判决同样明确了 GPL 协议既作为自由软件许可,同时具有合同效用。
由此看来,违反开源协议的负面影响不仅仅是引发负面舆论、影响公司形象这么简单。如若不加注意,可能还会带来法律风险。所有用户和开发者都有权力要求公开该内核的源代码,截至目前,小米暂未对此事做出回应。
参考资料:https://github.com/MiCode/Xiaomi_Kernel_OpenSource/issues/2506