当前位置:首页 > 科技资讯 > 正文

微软WinUI“真开源”背后的挑战与社区期待

一个多年前的“开源”项目,如今再次宣布要“真正开源”,微软此举究竟意欲何为?

微软向来高举「微软 ❤️ 开源」的旗帜,从MS-DOS 4.0源码到WSL开源,成果颇丰。然而,这次引发争议的却是早已在GitHub上被定义为Windows系统现代UI框架的WinUI。

从微软首席软件工程师Beth Pan在GitHub上的公告来看,WinUI正“逐步迈向真正的开源协作”。这一声明让不少开发者感到困惑:“这不是早就开源了吗?”

讽刺的是,该公告发布后不久,一则17个月前由某位开发者发起的讨论帖浮出水面,标题直指:“WinUI 3已死,我们什么时候能等到公告?”该帖子至今累积了超过580条评论,反映了社区对项目进展的不满。

微软WinUI“真开源”背后的挑战与社区期待 WinUI 开源 微软 开发者 第1张

长期以来,开发者对WinUI的失望情绪不断累积。如今,微软喊出“真正开源”的口号,是真心拥抱社区,还是无奈之举?这一问题或许比WinUI本身更值得关注。

01 WinUI“开源”背后的争议

简单来说,WinUI是微软推出的现代原生UI框架,用于构建Windows 10和11的桌面应用界面,延续了UWP的部分技术路线。它提供完整的控件库和样式支持,遵循Fluent Design设计体系,让开发者能打造更现代、统一的Windows应用界面。

微软将其定位为“Windows的现代原生UI平台”,并集成进部分系统级应用。它还支持React Native for Windows等新型开发方式,是微软推进Windows应用生态现代化的重要工具。

访问WinUI的GitHub地址(https://github.com/microsoft/microsoft-ui-xaml),我们发现其Star数量已达6.8k——那么,微软所说的“未来将真正开源”到底是什么意思?

微软WinUI“真开源”背后的挑战与社区期待 WinUI 开源 微软 开发者 第2张

Beth Pan的公告标题为“‘WinUI开源更新:逐步推进开放合作’”,外界认为,微软想改变WinUI的开发流程,尤其是如何管理其GitHub仓库。

目前该仓库仅是内部代码的一个“定期同步副本”,即微软工程师仍在内部仓库开发,GitHub上的只是不定期更新的展示。

未来,微软希望将GitHub上的仓库变成主要开发仓库,让所有开发者(包括内部和外部)都能直接提交代码和贡献。

02 分四步推进Windows 11用户界面框架的“真正开源”

关于何时兑现这一承诺,Beth Pan表示无法确定具体时间表。她强调:“我们正在积极推进中。这不会是一蹴而就的,而是一个循序渐进的过程。”

目前大部分WinUI代码只是定期镜像同步到GitHub,主仓库仍是微软内部私有。Pan列出了开放仓库的四个阶段:

阶段 1:提高镜像同步频率

Windows App SDK 1.8发布(8月底)后,微软将更频繁地同步内部提交到GitHub,以提高透明度并展示项目进展。

阶段 2:第三方开发者可本地构建

外部开发者将能克隆仓库并在本地构建,微软将提供文档指导环境配置和依赖管理。

阶段 3:第三方开发者可贡献和运行测试

贡献者能提交PR并在本地运行测试。微软正努力剥离私有依赖,并开放测试基础设施。

阶段 4:GitHub成为开发主阵地

GitHub将成为开发、问题追踪和社区互动的主要平台,内部仓库镜像将逐步淘汰。

“这一过程之所以复杂,是因为WinUI与Windows系统有深层次耦合。”Pan表示,“我们正在努力将可共享部分与不可共享部分分开——这项工作仍在进行中。”

03 开发者:微软的UI框架“善变”

对于这一声明,不少开发者并不买账。他们认为微软在UI技术路线上太过“善变”。

从多年来的发展来看,微软的UI技术路线经历了多次更迭:

  • Win32(1985): Windows内置API,用于创建按钮、窗口等。
  • MFC(1992): Win32的C++封装。
  • WinForms(2002): Win32的.NET封装。
  • WPF(2006): 引入XAML,基于DirectX绘制矢量组件。
  • Silverlight(2007): WPF的Web版。
  • Xamarin(Forms,2014): 跨平台.NET解决方案。
  • WinJS(2012): 基于JavaScript的框架。
  • WinRT(XAML,2012): 应用平台,支持自定义C++语言变体。
  • UWP(XAML,2015): “通用应用”平台。
  • WinUI(2018): 与UWP类似但样式更贴近Windows 11。
  • MAUI(2020): 多平台UI开发框架。
  • WinUI 3(2021): 独立库。

“每隔几年都会有一门新技术取代旧方案。”一位开发者表示,“更换名字和做法让不少开发者感到困惑。”

“WinUI 这是想靠社区续命?”

“欣慰WinUI依然活跃且有人关注。”一位开发者表示认同。但更多人持保留意见:“微软是否会真正投入资源并建立开发者信心?”

“我这些年一直在深度投入WinUI的开发。”另一位开发者表示:“坦白说,我不认为微软意识到他们对布道者、广大开发者社区以及使用WinRT→UWP→WinUI/WASDK的公司的伤害。”

“缺乏透明度、进展和责任明确方向。”有开发者直言,“我们现在连输入验证都还没有可用方案。”