“你们一定都听过关于他的故事。有人说他帮唐僧取到了真经,封了斗战胜佛,从此留在了灵山。也有人说那个成佛的根本不是他,真正的他早就死在了西行路上。还有人说,西游从来都没有发生过,它只不过是说书人杜撰的一只猴。但我要讲的故事你们一定没有听过。” ——《黑神话:悟空》
《黑神话:悟空》最近在全球掀起了一股热潮。不过,本文的焦点并不是这位中国神话中的美猴王,也不是各位努力的天命人,而是技术世界中的另一只曾叱咤风云的 “灵猴”——Mono 项目。
在 Mono 项目 GitHub 仓库停止更新几个月之后,微软终于在近日发布了一则重要公告。结合《.NET 传奇》一书中记录的历史背景,本文将逐句分析解读这则公告的内容,探讨 Mono 项目在技术演进中所扮演的角色,以及公告对其未来的安排。
微软公告内容 1
“The Mono Project (mono/mono) (‘original mono’) has been an important part of the .NET ecosystem since it was launched in 2001.”
Mono 项目自 2000 年启动以来,确实在 .NET 生态系统中占据了重要位置。正如我在《.NET 传奇》一书中详细描述的那样,Mono 项目由 Miguel de Icaza 倡议并领导,旨在将 .NET 框架相关技术引入到 Linux 平台,方便 Linux 平台应用程序的快速开发。优秀的跨平台能力使 Mono 一直是 .NET 生态系统的重要组成部分。
Mono 项目如同它的名字一样,就像一只灵猴,帮助开发者在不同平台间自由穿梭,提供了极大的便利。
微软公告内容2
“Microsoft became the steward of the Mono Project when it acquired Xamarin in 2016.”
Mono 项目最黄金的时期,也是它驱动 Unity 游戏平台和 Xamarin 移动开发平台服务于广大开发者的那几年。微软在2016年通过收购 Xamarin 成为了 Mono 项目的管理者。这标志着Mono项目进入了一个新的发展阶段。收购前后,微软将 Xamarin 与.NET Framework/.NET Core 生态系统进行了第一轮整合,为使用.NET/Mono 技术的开发者提供了更好的体验。
微软公告内容3
“The last major release of the Mono Project was in July 2019, with minor patch releases since that time. The last patch release was February 2024.”
2019年是.NET生态系统的重要年份,.NET Core 3.0/3.1的正式发布和.NET 5开发计划的公布标志着整个.NET 平台的现代化进程大幅加速,并进入第二轮深度整合,这极大地影响了Mono项目的重要性。随着.NET Core 逐渐成为主流,Mono项目的边缘化不可避免。虽然 Blazor 技术的横空出世表明 Mono 的一部分核心技术仍然是.NET Core 暂时不具备的,但.NET 5的公布表明.NET 生态走向一个统一平台的大方向已经清晰。
尽管 Mono 项目在2019年进行了最后一次重大更新,但此后的开发工作主要集中在修复漏洞和发布小补丁上,而不是引入新的功能或改进。由微软负责的 Mono 项目最后一个补丁版本发布于2024年2月,这也正好伴随着 Xamarin 品牌在微软产品中的最后一段岁月。2024年5月1日之后,Xamarin 品牌正式退出历史舞台,由.NET MAUI 完全接手。
微软公告内容4
“We are happy to announce that the WineHQ organization will be taking over as the stewards of the Mono Project upstream at wine-mono / Mono · GitLab (winehq.org). Source code in existing mono/mono and other repos will remain available, although repos may be archived. Binaries will remain available for up to four years.”
微软在公告中宣布将 Mono 项目的管理权移交给 WineHQ,标志着该项目进入了一个新的历史阶段。在.NET 5/6/7/8/9稳步推进之下,绝大部分相关开发者已经完成了他们的项目迁移。
Mono 项目被移交给一个专注于开源和跨平台兼容性的组织,那么 WineHQ 接手后这个项目还能持续提供怎样的价值呢?尽管面临资源有限和技术债务累积的挑战,WineHQ 也可能给 Mono 项目带来新的活力。
在苹果 M2 硬件平台上玩着黑神话的朋友们一定知道自己正享受着 WineHQ 旗下 Wine 项目的成果。
微软公告内容5
“Microsoft maintains a modern fork of Mono runtime in the dotnet/runtime repo and has been progressively moving workloads to that fork. That work is now complete, and we recommend that active Mono users and maintainers of Mono-based app frameworks migrate to .NET which includes work from this fork.”
微软在.NET 5/6时期将 Mono 项目最有价值的资产 MonoVM 整合进.NET 生态系统中。这一整合推动了 Blazor 和.NET MAUI 技术的健康发展。当前活跃版本的.NET 8以及即将发布的.NET 9正是整个生态系统所有开发者倚重的那个现代化、统一的.NET平台。
因此对于大多数开发者而言,聚焦在.NET 8即可,而不是 Mono。
微软公告内容6
“We want to recognize that the Mono Project was the first .NET implementation on Android, iOS, Linux, and other operating systems. The Mono Project was a trailblazer for the .NET platform across many operating systems. It helped make cross-platform .NET a reality and enabled .NET in many new places and we appreciate the work of those who came before us.”
在这里微软对 Mono 项目给予了高度评价,尤其是它在跨平台开发中的开创性作用。Mono 是.NET 技术在非 Windows 平台上的首次实现,它的积累在过去几年帮助微软主导的.NET 生态走向了更多的操作系统和设备,达成了今天主流开发平台的目标。Mono 项目的历史贡献不可忽视,这一点我在《.NET 传奇》一书中也有同样的结论。
总结
Mono 项目的历史与未来,是.NET 生态系统发展的一个缩影。从 Miguel de Icaza 到微软的收购,再到最终移交给 WineHQ,Mono 项目的每一个阶段都有着不同的意义。.NET 5/6/7/8/9的推出,标志着 Mono 项目的历史使命已经完成,整个生态系统的未来将更多地依赖于微软.NET 平台的发展。
WineHQ 的相关人士表示,他们也正在规划和研究 Mono 项目下一阶段的发展计划,希望他们很快能公布更多细节。对于 Mono 项目的未来我也将持续关注。
关于《黑神话:悟空》和 Mono 项目的关联,也许以后再找机会写写专题。