Categories
程式開發

微软发布新品被指剽窃!程序员开源两年的成功项目被迫终结


“我的开源项目被市值高达1.4万亿美元的微软偷走了。”

一名开发者用两年的业余时间开发并维护了一个开源项目AppGet,项目取得了比较大的成功,并引起了微软的注意。

不幸的是,微软在上周的Build 2020 大会上推出了同样的项目。最终,这名开发者只得停止维护并终结掉了自己的开源项目,但他给出了一系列的证据表示微软在剽窃。

填补空白的官方Windows软件包管理器WinGet

Linux 和 macOS 的开发者经常用包管理器来安装和管理应用,特别是一些需要不同依赖的命令行程序,比起手动一个个去官网下载代码编译要方便高效得多。Linux系统有一些常见的包管理命令,如 apt-get、yum 或 dnf,而 Windows 在“包管理工具”方面则一直乏善可陈。

为了留住开发者和 Linux 爱好者,让 Windows 与 Linux、macOS 使用上差别越来越小,5月20日,微软在 Build 2020 大会上宣布开源一个新工具:Windows Package Manager(WinGet),Windows 软件包管理器。

WinGet由一个命令行工具和一组用于在 Windows 10 上安装应用的服务组成,可以帮助使用者快速轻松地发现地安装不同的工具,只需要输入一个命令即可:winget install

微软发布新品被指剽窃!程序员开源两年的成功项目被迫终结 1

这次官方发布的 WinGet 命令行工具可以说是意义非凡。有了它之后,不仅是安装软件方便了不少,开发者在其他操作系统中的习惯可以延伸到 Windows 上,也能让 Windows 的工作流更加灵活,特别是通过脚本调用或者部署软件都能更加高效。

已经开源两年的AppGet

在Build 2020大会之前,微软官方虽然一直没有软件包管理器,但是位于加拿大的凯文·贝吉(Keivan Beigi)早在2018年就发布了一个开源免费的软件包管理器AppGet,用以在Windows中安装和更新软件。AppGet基本上可以模仿apt-get在Linux中的工作方式,例如,使用命令appget install winrar将在计算机中下载并安装WinRAR浏览器。

AppGet开源至今已经包含了1400多个软件包,每个软件包都经过了验证。并且还拥有相当大量的使用者,早已成为Windows生态系统的重要补充。

微软发布新品被指剽窃!程序员开源两年的成功项目被迫终结 2

但是这个开源项目的结局并不太好,在微软发布WinGet之后,AppGet的作者Keivan表示:“将不再从事AppGet开发工作。AppGet的客户端与后端服务将立即进入维护模式,并从2020年8月1日起被永久关闭。”

更为让人吃惊的是,Keivan列举了一系列证据,表示微软的软件包管理器剽窃了他的工作。

一年前,Keivan在2019年7月3日的时候收到了微软高级经理Andrew的电子邮件,对方要求和Keivan见面沟通AppGet的发展。最初他很高兴微软注意到了他的这个业余项目,所以马上答应可以在微软温哥华分部见面。随后他和Andrew以及Andrew产品组内的中另一位微软工程经理讨论了AppGet背后的设计思路,以及AppGet未来发展的下一步计划。

Keivan,
我是Windows App Model工程团队的负责人,主要管理应用程序部署方面的工作。首先,我要感谢您在appget开发方面投入的心力——它已经成为Windows生态系统中的重要补充,降低了Windows开发者们的工作难度。我们接下来几周计划在温哥华与其他几家公司会面,如果届时您恰好有空,我们也希望能跟您和您的团队直接交流,聊聊怎么推动appget更好地发展下去。

一周之后,Keivan再次收到了来自微软的邮件:

Keivan,
很高兴认识您,并了解到关于appget的更多信息。我们正在为您规划一条新的发展道路。如您所知,我们一直非常重视Windows系统上的软件包管理工具,也希望在这个领域中有所建树。我们的团队正在成长,当前的一大目标就是建立起专项小组,确保Windows上的软件包管理器与软件分发功能得到显著改善。这也许将给Windows平台上的软件分发方式带来重大改进,机会难得哦(至少在我看来,这确实是个好机会)。这项工作,有望定义Windows乃至整个Azure/Microsoft 365生态中的未来应用程序分发方式。
有鉴于此,您有没有考虑过在appget身上投入更多时间和精力,甚至直接加入我们微软?

微软希望Keivan将全部精力都放在AppGet身上。如果Keivan同意,届时微软会决定是否需要调整AppGet的名称。但在数次沟通交流过程中,Keivan都弄不清楚自己将在微软中得到怎样的职位,比如职责是什么、需要向谁报告等。但微软方面一直希望Keivan能快速移交代码所有权,双方在具体方法上没有达成共识,于是Keivan只能继续等待微软下一步的回应。

不幸的是,在接下来的6个月里,他再也没有收到任何后续消息。直到上周他听说微软将在第二天发布WinGet。

Heivan您好,祝您和您的家人一切顺遂——跟美国比起来,加拿大对COVID-19疫情的控制还比较到位。
我很遗憾地知会您,上次商议的雇用事宜没能解决。但我们仍然非常感谢您的意见与建议。我们一直在开发Windows软件包管理器,而且首个版本将在明天正式发布。我们在相关博文中也提到了appget,微软希望Windows平台上能够有多种不同软件包管理器的生存空间。我们的软件包管理器同样基于GitHub,但其中也包含自己的实现成果。这个项目将保持开源,我们期待着您能够为它带来宝贵的贡献。
在明天项目上线之后,我打算再跟您聊聊微软的这款软件包管理器。但在此之前,项目本身还是完全保密的,因此请您不要向他人透露。
祝好
Andrew

WinGet核心原理、术语、manifest格式或者结构,就连软件包repo的文件夹结构都跟AppGet一模一样。

Keivan对这个结果也无可奈何,停止维护AppGet之后,他表示:“这样一家市值高达1.4万亿美元的企业早在多年之前就该做好这项工作。Windows应用商店曾是无数用户的噩梦,同样的事情不该在软件包管理器身上重演。”而且还大方承认:“无论我在AppGet的推广方面投入多少精力,都不可能让它像微软官方解决方案那样获得足够的重视与普及度。我开发AppGet不是为了赚钱或者被微软聘用;相反,我的想法非常简单——让Windows用户也能获得比较正常的应用程序管理体验。”

他说,真正让他难受的,是整件事情的处理方式。缓慢而低效的沟通速度、永无应答的交流对象,最后则是给人沉重一击的官方公告。客观上讲,WinGet的大部分设计灵感都来自AppGet,但微软却刻意把AppGet描述成一个恰好存在、因此可以顺带一提的管理器方案。相比之下,反倒是其他跟WinGet共通点不多的软件包管理器,在官方公告中得到了更多提及与强调。

AppGet终结之日

AppGet是一个开源项目,遵守了GitHub上的开源协议,也凝聚了这位开发者两年多的心血。但得知微软发布了相同产品之后,他没有任何挣扎地直接终结掉了这个项目。

有网友评论说不应该惯着微软:“他们阅读了AppGet的代码,然后将其重写了。根据美国版权法,这是非法的。应该去起诉他们!他们要么买断AppGet,要么必须取消该项目,解雇从事该项目的每位员工,然后雇用一个从未见过AppGet代码的全新团队来遵守法律。”

事实上,微软十年前也曾因为要进军中国的社交网络市场,从而剽窃了加拿大一家名叫“Plurk”的类似微博网站的代码。Plurk公开指责微软“公开盗窃代码、设计和用户界面”,于是微软在这场公关危机中迅速的关闭了新项目并表达了歉意。

但也有更多网友表示,Keivan所经历的不过就是这些大公司的通用策略,比如组织技术人员与他交流,套取有用信息,然后发展自己的产品。

虽然很多人支持他发起诉讼,但也有人并不看好这个方式:

“第一,将apt-get的想法应用到Windows空间,这对个人项目而言是不利的定位,基本上逃脱不了最终被大型公司的产品所取代的命运。对微软来说,不过就是个时间问题,只需看看VS Code和TypeScript。

第二,大公司可以无限期的将诉讼进行到底。开发者个人属于弱势的一方。

第三,首先就不应该信任他们,不应该跟他们进行交流。”

但是不管怎么样,开源项目AppGet还是被终结了。

参考链接:

https://medium.com/@keivan/the-day-appget-died-e9a5c96c8b22