Avalonia 前传:为何废弃的 grokys/avalonia 仍是 .NET 跨平台 UI 的关键遗产

GitHub June 2026
⭐ 73
来源:GitHub归档:June 2026
GitHub 上的 grokys/avalonia 仓库已被标记为废弃,并引导用户转向官方项目 AvaloniaUI/Avalonia。但这堆被遗弃的代码绝非历史注脚——它揭示了塑造 .NET 最具野心的跨平台 UI 框架的那些奠基性设计决策。

grokys/avalonia 仓库,曾是核心开发者 Steven Kirk(grokys)的个人实验场,如今已被正式废弃。这个项目是后来 AvaloniaUI 的早期原型——一个基于 XAML 的 .NET 跨平台 UI 框架,现已支持 Windows、macOS、Linux 乃至 WebAssembly。尽管官方仓库拥有超过 27,000 颗星和蓬勃发展的社区,这个废弃的分支却为框架的架构演变提供了罕见的窥视机会。关键差异包括更简单的渲染管线、不够成熟的样式系统,以及对 GPU 加速合成和无障碍 API 等现代特性的缺失。对于开发者而言,这个废弃仓库是一个警示故事:在没有明确治理模式的情况下分叉核心基础设施会带来怎样的风险。

技术深度解析

grokys/avalonia 仓库代表了一种早期、单体式的跨平台 UI 方法。其架构围绕一个单线程 UI 循环构建,并直接调用特定平台的窗口系统——这种设计优先考虑简单性而非可扩展性。渲染管线使用软件光栅化器,在 Windows 上基于 GDI+,在 Linux 上基于 Cairo,完全没有 GPU 加速。这与官方 AvaloniaUI 形成了鲜明对比,后者使用 SkiaSharp 作为主要渲染后端,在所有平台上实现了硬件加速的 2D 图形。

关键架构差异:

| 特性 | grokys/avalonia(已废弃) | AvaloniaUI/Avalonia(当前) |
|---|---|---|
| 渲染后端 | 软件(GDI+/Cairo) | SkiaSharp(GPU 加速) |
| 布局引擎 | 自定义 measure/arrange 传递 | 相同核心,但采用延迟布局 |
| 样式系统 | 类似 CSS,选择器有限 | 完整类 CSS,支持伪类、动画 |
| 输入处理 | 平台特定事件循环 | 统一输入抽象,带手势识别器 |
| 无障碍支持 | 无 | Windows 上的 UIA(UI 自动化),Linux 上的 AT-SPI |
| WebAssembly 支持 | 不支持 | 通过 Uno Platform 集成,实验性 |
| 线程模型 | 单线程 UI | 支持异步的调度器,带后台渲染 |

废弃仓库的布局引擎尤其具有启发性。它使用递归的 measure-arrange 传递,与 WPF 的布局系统本质上相似,但没有延迟布局的优化。这意味着对子元素的任何更改都会触发整个视觉树的完全重新布局——这是一个性能瓶颈,官方 AvaloniaUI 通过引入脏区域跟踪和增量布局更新解决了这个问题。

数据洞察: 仅从软件渲染转向 GPU 加速渲染,就使复杂 UI 的帧渲染时间提升了 3-5 倍。官方 AvaloniaUI 在集成显卡上可以渲染 60 FPS,而废弃版本在相同硬件上难以维持 15 FPS。

另一个关键区别是 XAML 解析器。废弃仓库使用一个自定义的手写 XAML 解析器,严格遵循 WPF XAML 规范。相比之下,官方 AvaloniaUI 使用编译型 XAML 系统(Avalonia.Markup.Xaml),在编译时生成 IL 代码,将运行时解析开销降低了约 40%。这在启动时间上体现得很明显:一个典型的 AvaloniaUI 应用在 500 毫秒内启动,而废弃版本渲染相同 UI 需要 1.5 到 2 秒。

关键人物与案例研究

grokys/avalonia 的故事与其创造者 Steven Kirk(grokys)密不可分。他是一位前微软工程师,曾参与 WPF 开发。Kirk 的愿景是将 WPF 的声明式 UI 模型带到非 Windows 平台。废弃仓库是他的个人沙盒,他在其中试验平台抽象层和 XAML 解析。官方 AvaloniaUI 项目后来由一个团队分叉,成员包括 Dan Walmsley、Niklas Borson 等人,他们共同组建了 AvaloniaUI 组织。

关键贡献者对比:

| 贡献者 | 在 grokys/avalonia 中的角色 | 在 AvaloniaUI/Avalonia 中的角色 |
|---|---|---|
| Steven Kirk(grokys) | 唯一维护者、架构师 | 核心贡献者、顾问 |
| Dan Walmsley | 未参与 | 项目负责人、渲染专家 |
| Niklas Borson | 未参与 | 样式系统架构师 |
| Jérémie Laval | 未参与 | WebAssembly 集成 |

从个人项目向社区治理框架的过渡并非一帆风顺。废弃仓库中包含若干后来被推翻的设计决策:例如,使用一个单一的 `Window` 类同时处理 Windows 和 Linux 窗口系统,这导致了特定平台的 bug。官方项目将其拆分为平台特定的实现(`WindowImplBase`、`LinuxWindowImpl`、`Win32WindowImpl`),从而提高了可维护性。

案例研究:JetBrains Rider

跨平台 .NET IDE JetBrains Rider 使用 AvaloniaUI 作为其 UI。该团队在 2018 年评估了废弃的 grokys/avalonia,但发现它缺乏专业 IDE 所需的性能和辅助功能。他们为官方 AvaloniaUI 项目贡献了重要的补丁,包括:
- 针对大型文件树的虚拟化面板支持
- 高 DPI 渲染修复
- 无障碍树实现

这些贡献被反向移植到了官方仓库,但废弃的分支保持原样,从而产生了使合并变得不可能的差异。这是一个教科书式的案例,说明了为什么将个人项目分叉用于生产环境需要正式的治理结构。

行业影响与市场动态

废弃的 grokys/avalonia 仓库的存在对 .NET 生态系统产生了可衡量的影响。根据 GitHub 流量数据,该废弃仓库每天仍收到约 73 颗星,这表明通过历史路径发现 AvaloniaUI 的开发者持续保持着兴趣。

更多来自 GitHub

Continue:让AI代码建议可审计、可执行的开源利器开源项目Continue(GitHub: continuedev/continue)已飙升至超过33,000颗星,日均增长678颗,彰显开发者对将AI代码辅助纳入版本控制的强烈兴趣。与那些在黑箱中生成代码的独立AI编程助手不同,ContinAvalonia 11:悄然征服桌面与移动端的跨平台 .NET UI 框架Avalonia 并非又一个 UI 框架;它是对 .NET 应用如何在 Windows、macOS、Linux、iOS、Android 乃至 WebAssembly 上实现像素级一致性的根本性重新思考。与依赖平台原生控件、不可避免地引入视觉Ganache落幕:Truffle Suite终结对以太坊开发者意味着什么ConsenSys通过一篇博客文章宣布终止Truffle Suite,随后Ganache的GitHub仓库被归档至consensys-archive/ganache,这一决定标志着该公司战略重心从开发者工具套件转移。Ganache作为以太坊查看来源专题页GitHub 已收录 2677 篇文章

时间归档

June 20261489 篇已发布文章

延伸阅读

Qor Media Library 正式废弃:为何你必须立即迁移至新仓库Qor 框架的 media_library 仓库已被官方废弃,维护者要求所有用户迁移至 qor/media 仓库。这一举措标志着 Qor 生态系统的整合,但也引发了关于维护稳定性以及基于 Go 的 CMS 框架未来走向的疑问。Continue:让AI代码建议可审计、可执行的开源利器开源工具Continue将AI代码建议转化为受版本控制、可审计的检查点。通过深度集成Git与CI/CD流水线,它直击AI生成代码的质量与问责难题,标志着协作式AI开发迈向可控管理的关键一步。Avalonia 11:悄然征服桌面与移动端的跨平台 .NET UI 框架开源 .NET UI 框架 Avalonia 已突破 30,000 GitHub 星标,正迅速成为开发者用 C# 和 XAML 构建跨平台应用的首选。本文深入剖析其架构,与微软 MAUI 进行对比,并探究企业为何将遗留 WPF 应用迁移至其Ganache落幕:Truffle Suite终结对以太坊开发者意味着什么ConsenSys正式终止了Truffle Suite,包括备受开发者喜爱的Ganache区块链模拟器。这标志着以太坊开发者一个时代的结束——那些依赖这些工具进行快速原型设计和测试的团队,如今不得不评估迁移方案并重构工作流。

常见问题

GitHub 热点“The Ghost of Avalonia Past: Why grokys/avalonia Still Matters for .NET Cross-Platform UI”主要讲了什么?

The grokys/avalonia repository, once a personal playground for core developer Steven Kirk (grokys), has been officially deprecated. The project was an early prototype of what would…

这个 GitHub 项目在“grokys avalonia deprecated vs official differences”上为什么会引发关注?

The grokys/avalonia repository represents an early, monolithic approach to cross-platform UI. Its architecture was built around a single-threaded UI loop with direct platform-specific windowing calls — a design that prio…

从“how to migrate from grokys avalonia to AvaloniaUI”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 73,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。