2020 年 5 月,微软在 Build 2020 大会上发布了新的软件包管理工具 WinGet,并将其开源。而该工具实际上抄袭自一名居住在加拿大温哥华的软件工程师 Keivan Beigi 维护的 AppGet 项目。
一、微软抄袭风波
1.1 “白嫖”惯犯
2020 年 5 月,微软在 Build 2020 大会上发布了新的软件包管理工具 WinGet,并将其开源。而该工具实际上抄袭自一名居住在加拿大温哥华的软件工程师 Keivan Beigi 维护的 AppGet 项目。
当时,来自微软 App 事业部的产品经理曾和 Keivan 表达了对 AppGet 项目的兴趣,并以邀请其加入微软团队为前提,就 AppGet 项目的设计思路进行了多次深入交流,时间跨度长达 5 个月。但最后微软方面就与 Keivan 突然失联,并于半年后发布了设计思路、代码结构均与 AppGet 高度雷同的 WinGet 项目。
AppGet 作者 Keivan 在社交媒体揭露这件事后,微软方面同样仅仅是派产品经理出面承认了 WinGet 项目的思路确实“借鉴”于 AppGet,表达了对 Keivan 等 AppGet 项目贡献者的谢意,但并没有就抄袭事件本身对 Keivan 本人和 AppGet 项目团队进行任何实质性的补偿和支持。
在更早的 2018 年 6 月,微软也曝出过类似的抄袭事件。当时,开源的多包存储库管理工具 Lerna 作者 jamiebuilds 指责微软抄袭其代码。
jamiebuilds 表示, Lerna.js 是自己写的一个多包存储库管理工具。为让项目更好用,他对项目进行了 5 次重写,试图让架构更完善。之后某天,jamiebuilds 发现了微软推出了由许多小包组成的新设计体系,本以为是微软在项目中使用了 Lerna ,结果发现他们使用的是一个名为 “Rush” 的项目。
通过查看 Rush 项目的 Git 日志,jamiebuilds 发现该项目就是在 Lerna.js 创建几天之后创建的,jamiebuilds 对两个项目进行了对比,结果发现 Rush 的文件和目录命名、核心功能的代码都与 Lerna.js 完全相同,甚至连提交记录都是一致的,也就是说 Rush 在不断复制 Lerna 的更改,然后声称其是微软自研的产品。
jamiebuilds 称自己主动与认识的微软员工联系说明此事后,对方感到震惊并道歉,但之后并没有任何来自官方的合理解释。Rush 项目也没有去更改许可证,或者添加补充说明,而是将提交记录进行了混淆,将代码位置进行移动,并重新编写或重命名了一些函数。
jamiebuilds 提到,如果是其他人做了这件事,他或许会有点不高兴但仍然把他忽略掉。但微软这样一个万亿市值的软件业巨头做这样的事情,这令他非常生气。 这件事最后同样不了了之。
1.2 抄袭开源项目是否违规
上述三起事件从过程到结果都非常相似。
目前,很多开发者普遍对于开源协议仍然不够了解。有人甚至认为:开源软件就是免费的软件,那我拿你开源的项目来用,这不很正常吗?这其实是一种误解。
在很多时候,开源社区并不排斥 fork 或 copy 项目代码,fork 后将自己修改的 BUG 或新增的功能反馈回上游社区,反而是开源社区里非常鼓励的一种行为。但微软这种抹杀原作者功劳,将社区劳动成果归功于己的行为,显然违反了开源社区应有的道德规范,同时也违反了开源协议。
开源软件与专有软件一样,都是受法律保护的。近年来发生的多起开源软件版权纠纷案例就足够引起人们对开源软件版权的重视。
实际上,开源软件的著作权既没有放弃也没有过期,作者仍然享有著作权。除了著作权外,开源软件还可能被合同法、专利法、商标法等法律所规制。在著作权法的语境下,软件代码类似于文字作品一样受到法律保护。在获得了一段源代码之后,默认情况下不能对该源代码进行改编或者再发行。而开源软件的特点在于,对于部分宽松开源协议(如 MIT、Apache 2.0)来说,在使用者承诺满足一定条件(通常包括给作者署名、附带许可证)的情况下,作者会放弃、让渡部分权利,例如允许使用者将代码改编或者再发行。
律师介绍,使用者所承诺的条件以及作者所放弃的部分权利形成了一种合同关系,更具体来讲是许可合同,在开源软件的情况下该合同也就是我们常说的开源许可证(License)。许可证是一种无需磋商的、标准化的公共合同,降低了合同的成本。
理论上来说,使用 MIT、Apache 2.0 等宽松开源许可证的项目,源代码可以被任何人拿去修改、分发、甚至闭源商业化,但必须保留项目原作者的著作权,也就是在源代码引用的部分保留项目作者的版权声明。以 MIT 可协议为例,该协议规定,被授权人要履行 “在软件和软件的所有副本中都必须包含版权声明和许可声明” 的义务。也就是说,微软采用别人开源的项目源代码本身并没有任何问题,但其拒绝履行开源协议规定的“保护软件原作者著作权”的义务,事实上是违反了开源协议的。
尽管开源项目源代码也受到法律的保护,但个人开发者维护的开源项目在面对微软这种级别的大型企业时,往往难以维护自己的合法权益。比较大型的开源项目通常会由企业或专门成立的基金会来处理相关的法务问题,这些大型开源项目的版权属于企业或中立的开源基金会等主体,主体享有处理项目授权、更改开源协议的权利,能够随时应对项目授权问题带来的法律纠纷。
但个人开发的项目版权属于开发者自己,面对类似的侵权行为时,显然缺乏足够的人力和财力去处理这些法律纠纷,在大多数情况下只能闷声吃亏。这也是微软的三起抄袭事件受害者均为个人开发者的原因。
因此,在个人在开源自己的软件作品时,一定要充分理解各类开源许可证的各项条款,在被侵权时积极维护自己的合法权益,必要时可以公开被侵权的证据寻求舆论帮助;同样的,当我们在使用开源项目的代码时,也要尊重原作者的劳动成果,自觉履行开源协议所要求的义务。
延伸阅读
微软抄袭 AppGet 始末,开源普法任重道远
首例!违反 GPL 协议致侵权,被判赔偿 50 万元
本文标题: 微软再陷抄袭风波
发布时间: 2022年11月21日 00:00
最后更新: 2026年09月16日 05:40
原始链接: https://haoxiang.eu.org/5697adcf/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

