本帖最后由 anyangmo 于 2026-3-25 18:12 编辑
微软前CTO长文控诉:Windows被搞成一锅粥!14年14次转变、17种GUI共存
快科技3月25日消息,前微软CTO、在微软效力23年的Jeffrey Snover近日发布长篇博文,系统梳理了微软过去数十年间在GUI(图形用户界面)上的反复摇摆,揭示了Windows开发生态为何走向碎片化的原因。
首先将时间线拉回1980年代,当时的Win16和Win32 API为所有Windows开发者提供了一致的开发范式,开发者只需要学一套东西,就能覆盖几乎所有Windows应用场景。
技术作者Charles Petzold撰写的《Programming Windows》长达852页,被视为桌面应用开发的圣经。
到了1990年代,微软试图用MFC、COM、OLE、ActiveX等技术突破Win32的局限性,Snover指出,这些组件架构“渗透了Windows开发的每个角落,引入了前所未有的认知复杂度”。
在开发者大会上,微软的技术叙事变得支离破碎,Snover毫不客气地将当时的主题演讲形容为"keynote clusterf*ck"。
2003年,微软展示了Windows Longhorn的技术愿景,其中Avalon(后更名为WPF)基于GPU加速的XAML矢量渲染子系统,技术实力极为强大。然而2004年8月,微软突然转向,要求所有新开发使用C++。
WPF虽然随Windows Vista发布,但Windows Shell本身并未采用它,这一决策在Windows工程团队和.NET团队之间埋下了深深的裂痕。
Snover指出,内部矛盾最终导致WPF被弃养、Silverlight死亡、UWP(通用Windows平台)一出世就注定失败。
2007年,微软在WPF已经证明自身实力的情况下,再次转向推出Silverlight。
2010年,微软突然宣布Silverlight不适用于跨平台开发,HTML5才是未来方向,Silverlight仅用于Windows Phone开发,大量押注Silverlight的开发者措手不及。
快进到2012年Windows 8发布,引入了基于原生C++的WinRT运行时,Windows团队对.NET的敌意导致后者十年的投资被瞬间抛弃。Snover这样描述当时的混乱局面:
“微软内部同时在讲两个故事,Windows团队在搞WinRT,.NET团队还在推WPF。不同的楼,不同的副总裁,不同的路线图。
开发者在//Build 2012上听到的是:未来是WinRT,同时HTML+JS是一等公民,同时.NET还能用,同时C++回来了,同时你应该写Metro应用,同时你的WPF代码跑得很好。这不是战略,这是《饥饿游戏》,六个团队在争夺你的注意力。
企业开发者看了一眼UWP的沙箱机制、强制应用商店分发以及缺失的Win32 API,转身就走。”
Snover指出,过去14年间,微软在推荐Windows GUI框架方面转向了14次,如今的Windows平台上共存着17种GUI技术,覆盖5种编程语言:
微软原生框架:Win32(1985)、MFC(1992)、WinForms(2002)、WPF(2006)、WinUI 3(2021)、MAUI(2022)
微软Web混合方案:Blazor Hybrid、WebView2
第三方方案:Electron(VS Code、Slack、Discord都在用,Snover特别指出,这是目前Windows上部署最广泛的桌面GUI技术,而微软跟它毫无关系)、Flutter(Google)、Tauri、Qt、React Native for Windows、Avalonia(JetBrains、GitHub、Unity在用,Snover讽刺这些开发者"不再等微软了")、Uno Platform、Delphi、Java Swing/JavaFX
Snover用自创的词"boof-a-rama"来形容当前局面为聪明人在做蠢事,他强调,微软推出的技术本身往往并不差,真正杀死它们的不是技术缺陷,而是内部政治、开发者大会上过早宣布转向、以及混乱的商业战略。
Petzold的《Programming Windows》在2012年第六版(覆盖Windows 8/WinRT)之后便不再更新,或许就是对这种不可预测的碎片化最好的注脚。
Snover于1989年加入微软,历任Partner Architect、Distinguished Engineer(2009)、Technical Fellow兼首席架构师(2015)、CTO(2019),2022年离职加入Google,2025年正式退休,以他对微软内部运作模式的了解,这篇博文的可信度不言而喻。
|