都2023了!我不允许你还不了解AIGC!立即报名 了解详情
写点什么

逃离被微软支配的恐惧,.NET 开发者们 Fork 了一个开源分支

  • 2021-11-26
  • 本文字数:3336 字

    阅读完需:约 11 分钟

逃离被微软支配的恐惧,.NET开发者们Fork了一个开源分支

“不用担心微软讨厌谁,或者本周有什么语言或框架被宣布死亡。相反,要拥抱进步,积极自我提高。”


一个月前,微软从.NET 6 中悄悄删除 Hot Reload 功能,从商业策略出发只为 Visual Studio 付费用户提供,这件事情引发了广大开发者的强烈抗议。虽然微软最后迫于形势更改了决策,并给予了道歉,但显然还无法平息大家的愤怒。


昨天,HackerNews 热榜上又一条关于.NET 的消息爬了上来:“The Microsoft .NET platform has been forked: Introducing Open.NET”。


在 Open.NET 项目的 GitHub 页面中,创建者们表示希望能有一个不受微软控制的“Open.NET”社区,能让 .NET 完成向开放编程语言的过渡。他们强调说,其它开源编程语言都是在开放环境中开发的,而不是像.NET 这样隔离大量开发人员进行黑箱操作。



微软上个月做出的这个商业决策,无疑深深伤害了开发者的感情。对于那些仍然讨厌微软的人来说,它将成为又一个说明“微软让人无法信任”的例子。


事件回顾:无视开发者,微软不断加强对.NET 的控制


10 月 20 日,社区发现微软在即将发布的.NET 6 中悄悄删除了 Hot Reload 中的一个关键组件。Hot Reload 功能希望帮助开发者在创建项目时随时获取即时反馈,并在更改代码后可以立即查看结果。相较于谷歌推出的竞争性 Dart 编程语言与 Flutter 工具包, Hot Reload 无疑颇具卖点,微软也一直希望能把这项功能推向.NET 与 Visual Studio。


微软在最初的计划声明中将其描述为“一个雄心勃勃的项目,希望将 Hot Reload 带给更多.NET 开发人员。”但就在成果即将发布的最后一刻,微软突然决定把受众范围缩小至 Windows 与 Visual Studio 开发人员、不再开放跨平台版本。


荒谬的是,微软之前一直在测试、而且已经非常接近最终版本的.NET 6 候选版允许开发者通过 donet watch 在各类环境及平台上灵活使用 Hot Reload 功能,其中也包括颇具人气的 Visual Studio Code 开发环境。所谓候选版,就是功能完备、已经通过厂商生产就绪测试的版本,只需要在正式发布之前再检查一下 bug 即可。


微软在发布的最后一刻突然变卦,表示“Hot Reload 功能将仅通过 Visual Studio 2022 发布,旨在保证为大多数用户提供最佳体验。”微软公司 Hot Reload 功能项目负责人 Dmitry Lyalin 则把话说得更明白,微软结合“优先考量”,所以才放弃了将 Hot Reload 直接纳入 dotnet watch 工具的计划。社区对此明显大为恼火,GitHub 上已经有帖子对此提出质疑。Hacker News 网站及微软自己的相关博文下方也出现不少抗议性评论。



“请不要误会,这里我们做出澄清。面对需要应对的庞大场景数量,我们必须做出优先考量。因此,Hot Reload 不会作为 dotnet watch 工具中的功能发布。我们正在 VS 2022 上着力完美这项功能,稍后还将推出 VS4Mac 支持。”


微软公司前 F# 团队雇员 Phillip Carter 坦言,“在查看源代码后,情况更加令人失望。相关支持代码共有 1000 到 2000 行,但却在发布前最后一刻被撤掉了。这显然是在开历史的倒车,Hot Reload 功能在设计之初也压根不属于 Visual Studio 独占。恐怕未来还会有更多类似的情况出现。


根据媒体掌握的情况,从.NET 6 中删除 Hot Reload 功能的决定来自微软开发部门负责人 Julia Liuson。据消息人士称,这项决定的深层考量在于保障业务收益。微软明显觉得这不是什么大事,却没想到激起了社区的愤怒回应。在.NET 项目上与开源社区合作多年的微软工程师们感到被公司背叛,同时担心这样的决定会对微软后续的开源参与工作造成深远影响。


最早在 GitHub 上抗议此次功能删除的独立开发者 Reilly Wood 表示,“微软的行为其实传达出这样的信息:想要良好的开发者体验,就得使用 Visual Studio。这似乎与.NET 团队之前的一切跨平台努力背道而驰。”


.NET 基金会董事被迫辞职


而就在此事之前,微软加入.NET 基金会的消息在.NET 社区中已经引发动荡。.NET 基金会成立于 2014 年,当时微软决定将.NET 项目开源,因此基金会本身应该以独立组织的身份持续推动.NET 开源软件的发展与协作。而一位辞职的董事会成员 Rodney Littles 近期公开质疑.NET 基金会的角色定位,询问“基金会到底是在帮助培养和推进社区健康稳定,还是帮助微软保持对开源.NET 的管控能力?”


微软还锁定并限制了一项 pull 请求,借以从.NET 6 dotnet watch 工具中删除 Hot Reload 功能。如此一来,社区就无法抓住最后时机评论或拒绝这项临时更改。虽然现在社区再次提交 pull 请求希望恢复 Hot Reload,但被批准的可能性明显不大。


面对.NET 基金会独立性遭受质疑、微软加入很可能建立掌控特权等呼声,另一位董事也选择了辞职。



为了推动 @dotnetfdn 继续向前发展,我已辞去执行董事职务。我仍会留在 @dotnet 团队,也期待能继续为我最喜爱的平台贡献力量。


对微软的“不信任”是不断累积出来的


这项有争议的商业决策,让很多人再次怀疑起软件巨头做出的开源承诺。根据多位公司内部消息人士证实,此举也激怒了微软公司大批开发人员,而后续上峰下达的“禁止抱怨”命令不仅无助于缓解事态、反而将群众情绪推向高点。


在微软之外,其他程序员骂的更加直接:“这是一个极其短视的决定,让我对 .NET 的未来感到害怕。我非常尊重 .NET 团队,我非常肯定他们不是这背后的人。”


虽然最后微软更改了决策,并给予了道歉,但对于那些仍然讨厌微软的人来说,这将成为又一个无法信任微软的例子。


不顾及开发者利益、侧重从商业角度考虑问题,这样的事情在微软的产品发展历史上已经屡见不鲜。很多产品甚至还在享受甚至仍然拥有强大的开发者支持,包括 Visual Basic、Microsoft Liquid Motion、Microsoft Blend、Microsoft WebMatrix、Microsoft LightSwitch for Visual Studio 和 Microsoft Expression Web(或许还包括 UWP)。


尤其伤害开发者的还有 2011 年微软突然宣布放弃“Silverlight”的事件。Silverlight 是微软花费巨资开发的 Web 应用程序开发框架。当时,很多开发人员也都觉得自己应该投资 Silverlight,但微软直接宣布了 Silverlight 的死亡,转而采用 HTML5 等新兴标准。


我说服了公司在一项重要产品上使用 Silverlight。大量的投资包括人力和学习过程。在我们的实施过程中,微软给 Silverlight 的未来扔下了一颗炸弹。我无法描述那种被背叛、沮丧的感觉,更不用说来自上层管理团队的压力。作为一个开发者,我的问题非常简单。为什么微软要做这样一件奇怪的事情来失去开发者的信任?为什么微软不能简单地继续支持 / 倡导 Silverlight,同时将 HTML5 视为一种新的趋势和发展路径呢?身为开发者,我认为微软的策略是两败俱伤……我已经不再鼓吹微软的任何新技术了。


之后,开发者对微软的不信任感逐渐深入到骨髓,一直非常担心会再次遭受 Silverlight 这样突然被淘汰的事情。


十年前,对要采用.NET 的开发者,有人劝阻道:“难道你没有听到 .NET 开发者对微软将应用开发重点从 .NET 转移到 HTML/JS/CSS 的强烈抗议吗?难道你没有听到 Silverlight 开发者愤怒的声音吗?”


十年后,因为.NET 这个 Hot Reload 事件,有开发者再次提及微软 Silverlight,表示大家对微软的愤怒情绪一直都十分强烈。



毫无疑问,所有的开发工具公司都会推出新的产品和技术,然后由于商业决策的需要,许多产品和技术会被淘汰或投入会收缩。对于被 Silverlight“照耀”的恐惧,最合理的想法可能来自于 Ed Charbeneau,当时他是 Telerik 的开发者倡导者,在几年前的一篇题为《微软讨厌企业开发者》的博文中。


Charbeneau 在谈到“.NET Core 5”的变化时(事实证明这并不是一回事,因为 .NET Core 变成了 .NET),并不认为微软憎恨企业开发者,他基本上建议这些开发者接受这些改变:


“少花点时间担心微软讨厌谁,或者本周有什么语言或框架被宣布死亡。相反,要拥抱进步,积极参与自我提高和教育。要做一个摒弃旧思维方式的人,要拥有更高的生产力,要跨平台,要开源。若能做到这一点,你会发现自己被一套独特的技能所武装,可以用来解决明天的问题,而不是无所事事地应付过去的问题。”


延伸阅读:


https://www.theverge.com/2021/10/22/22740701/microsoft-dotnet-hot-reload-removal-decision-open-source


https://visualstudiomagazine.com/articles/2021/08/17/silverlighted.aspx


“头号大厂铁粉”微软宣布关闭区块链服务


仅仅过去 4 年,微软 Teams 最终放弃了 Electron


2021-11-26 15:545476

评论 2 条评论

发布
用户头像
那玩意还有多少人在用?
2021-12-11 20:24
回复
用户头像
这社区越来越不健康了,说到底微软只是开源没有彻底放弃,.net本质其实还是个商业项目,你去指望一个赚钱的公司放弃利益本身就扯淡,还要对人家指指点点,微软送给你呗?自私都自私,本身就扯淡,早点分离出来也好,反正开源社区抢别人劳动成果也不是第一次了,习惯了
2021-12-06 14:13
回复
没有更多了
发现更多内容

分布式缓存总结

朱月俊

缓存、一致性哈希和负载均衡总结(训练营第五课)

看山是山

缓存 极客大学架构师训练营 一致性hash

小师妹学JVM之:JVM中的Safepoints

程序那些事

Java JVM 小师妹 性能调优 签约计划第二季

【第九课 + 第十课】技术选型:缓存架构 + 消息队列与异步架构

Aldaron

golang实现基于虚拟节点的一致性hash算法

朱月俊

高性能系统设计

dapaul

极客大学架构师训练营

视读——沟通的艺术,看入人里,看出人外(第一章)

废材姑娘

读书笔记 视觉笔记

重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」

小傅哥

Java 设计模式 小傅哥 重构 代码规范

华为厦门DevCloud创新中心正式揭牌,“上云用数赋智”新助力

Geek_116789

一致性哈希实现

娄江国

极客大学架构师训练营

架构师训练营 Week 05 总结

Wancho

一致性hash算法及java实现(转载,学习了)

王锟

ES5、ES6中继承的几种写法

Manito

Java

架构师训练第五周一致性Hash

Hanson

实现一致性哈希算法

Aldaron

架构师训练营-第五周-命题作业

sljoai

极客大学架构师训练营 第五周

嗯?阿里为啥不用 ZooKeeper 做服务发现?

Java小咖秀

zookeeper 分布式 技术人生

架构师训练营作业 -- Week 5

吴炳华

极客大学架构师训练营

架构师训练营:第五周作业-一致性 hash实现

zcj

极客大学架构师训练营

架构师训练营第五周作业 设计分布式缓存系统

Melo

极客大学架构师训练营

第5周作业

田振宇

漫画:Integer 竟然有 6 种比较方式?

王磊

Java 编程 漫画 java编程 漫画编程

B站Up主自制秃头生成器,一键get张东升同款发型,网友:秃的太过真实

程序员生活志

程序员 B站 隐秘的角落 张东升 秃头生成器

架构师训练第五周

Hanson

架构师训练营 第五周 学习总结

一雄

学习 极客大学架构师训练营 第五周

架构师课程第五周总结

dongge

可变对象和不可变对象

Leetao

Python Python基础知识

Tomcat 架构原理解析到架构设计借鉴

码哥字节

Tomccat 「Java 25周年」

第五次作业

王锟

真懂Spring的@Configuration配置类?你可能自我感觉太良好

YourBatman

Spring Boot Spring Framework @Configuration Spring配置类

面试官:为什么 HashMap 的加载因子是0.75?

哪吒来踢毽子

hashmap

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
逃离被微软支配的恐惧,.NET开发者们Fork了一个开源分支_语言 & 开发_核子可乐_InfoQ精选文章