抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

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

2020 年 5 月 27 日

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

“我的开源项目被市值高达 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



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


已经开源两年的 AppGet

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


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



但是这个开源项目的结局并不太好,在微软发布 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


2020 年 5 月 27 日 16:147814

评论 4 条评论

发布
用户头像
和 scoop chocolately 有啥区别?
2020 年 05 月 30 日 19:57
回复
用户头像
scoop还没说话呢
2020 年 05 月 28 日 17:54
回复
用户头像
剽窃还行
2020 年 05 月 28 日 17:53
回复
用户头像
so tm what
2020 年 05 月 28 日 13:48
回复
没有更多了
发现更多内容

想了解Webpack,看这篇就够了

华为云开发者社区

华为 前端 开发

"全能"人才的概念真的对吗

supernova

创业 读书笔记 随笔杂谈

自我管理系列-为啥要做生产问题分析报告呀

罗小龙

复盘 IT, 经验总结 职场搞笑 生产事故

vim快捷键收藏版

良知犹存

vim

陈山枝:5G+车联网 推动中国特色车路协同发展

Geek_459987

Hbase实用技巧:全量+增量数据的迁移方法

华为云开发者社区

数据 HBase 集群

杰哥获奖了!

JackTian

Linux 程序人生 运维工程师 运维人生

Alibaba技术大牛丢给我一份Spring Cloud笔记,在GitHub的热度居然高达81.6k标星,太强了!

Java架构之路

Java 程序员 架构 面试 编程语言

信息量爆炸!78天闭门深造1258页SpringCloud学习进阶笔记,再战蚂蚁金服

996小迁

Java 架构 面试 SpringCloud

接口文档生成工具

测试人生路

接口文档

USDT承兑商支付系统开发,USDT支付结算系统搭建

135深圳3055源中瑞8032

合约一键跟单软件,API跟单软件开发

135深圳3055源中瑞8032

VRBT视频彩铃解决方案

dwqcmo

5G 音视频 解决方案

同学信誓旦旦地说,我司的系统从来不做性能调优!

沉默王二

Java 性能调优

面试阿里P6,过关斩将直通2面,结果3面找了个架构师来吊打我?

Java架构之路

Java 程序员 架构 面试 编程语言

如何实现微服务架构下的分布式事务?

华为云开发者社区

架构 分布式 事务

架构师训练营 1 期 -- 第六周作业

曾彪彪

极客大学架构师训练营

服了!不愧是AlibabaP8级别的大牛,把Kafka的精髓全部总结整理成了一份“限量笔记”。

Java架构之路

Java 程序员 架构 面试 编程语言

端应用研发进入云原生时代

应用研发平台EMAS

求职时这样回答问题你就输了!来自IT类面试官视角的深度解读

Java架构师迁哥

15张图解Redis为什么这么快

Java架构师迁哥

.NET可视化权限功能界面设计

雯雯写代码

企业CRM未来发展趋势展望

Philips

敏捷开发 软件架构

问题篇:WSL和VMware。你怎么选择(附wsl安装步骤)

小Q

Java Linux 学习 架构 面试

LeetCode题解:78. 子集,递归回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

中台:未到终局,焉知生死?

ToB行业头条

中台

京东智联云4篇论文入选国际语音顶级大会Interspeech 2020

京东科技开发者

人工智能 大数据 语音识别

视频客服的应用和优点

anyRTC开发者

音视频 WebRTC 直播 RTC

滴滴高峰期亿级并发如何调优?Java亿级并发系统架构设计手册分享

Java架构追梦

Java 架构 面试 高并发 亿级流量

数字货币交易所开发,全球区块链交易所系统开发

135深圳3055源中瑞8032

区块链钱包软件开发,数字货币钱包

135深圳3055源中瑞8032

Study Go: From Zero to Hero

Study Go: From Zero to Hero

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