今天是 2026 年 5 月 23 日,距离 ClassIsland 这个想法从我脑海中萌发,也差不多要有三年了。可以说,ClassIsland 的开发历程完整伴随了我高中三年。而我现在即将离开高中,进入人生的新阶段,ClassIsland 的开发工作也将相应地进入新的阶段。在此我想借这个机会,回顾一下这三年以来,我们走过的漫漫长路。
一切的开始
大多数同学首次接触 ClassIsland 都不早于 2024 年 3 月 ClassIsland 首次公开宣发的时间,但 ClassIsland 的历史开始的时间要早于这一时间点。
在 2023 年的 7 月 8 日,我中考完后不久的暑假,我创建了仓库的第一个提交 45900d94,并将项目命名为“ClassIsland”。至此,ClassIsland 的开发工作正式开始了。

在此时市面上已经出现了如 DuguSand/class_form 这样的课表软件。它们都有各自的亮点,但也有一些短处,比如配置不便等。于是我在 ClassIsland 的早期开发时,在吸收了它们的优点的情况下,也希望在 ClassIsland 中解决它们的一些痛点。
中考后的暑假是相当悠闲的。我时常一边吹着空调,一边坐在桌前或趴在床上用笔电写代码,写累了就玩会游戏,游戏玩累了就继续写代码。经过一个多月紧锣密鼓的开发,ClassIsland 推出了首个正式版 1.0。

从此,ClassIsland 的故事正式开始了。
从玩具到初具雏形
ClassIsland 尽管已经发布了正式版 1.0,但此时应用的功能还及其有限,基本只能实现基本的课表显示功能。因此我开始了 1.1的开发,引入了界面缩放等必要功能,并将提醒功能模块化,从主界面剥离。提醒有关的服务也是从这个时候开始发展的,因此在很多提醒有关的地方,仍然保留了 1.0 或 1.1 时期的痕迹,例如“Overlay”,“Mask”这类的命名。
然而,在高中开学,我将 ClassIsland 首次拷贝到大屏环境上运行后,我又发现了很多奇奇怪怪的问题,比如当焦点在主界面上时,按下“关闭窗口”按钮可以直接关掉整个主界面等。同时应用还缺少如临时换课之类的功能,最初的列表时间点编辑视图在大屏上用起来也相当反人类,并且夏季天气多变,我们也有实时查看天气的需求,应用显示的时间也不够准确……在这样的背景下,我开始了 1.2 和 1.3-Elysia 的开发,目的是进一步完善应用的功能。
在 2024 年年初完成这两个版本的开发后,ClassIsland 也正式从一个玩具,变成了一个初具雏形的工具。
第一个上升期
到了这一阶段,ClassIsland 作为一个课表软件已经基本合格了。如果我没有将 ClassIsland 公开宣发,那么它的故事可能到这里,就会像我曾经的无数个 side project 那样结束了。然而非常幸运的是,我在此时结识了姜胤(@jiangyin14) 。他向我提供了一些新的开发和宣发思路,我也在这个时候开始了 ClassIsland 的首次宣发,收获了一定的初始用户。
姜胤在此时向我提出了诸如集控、提醒强调的建议。我也在 1.4-Firefly 的中部分实现了这些功能。此时尽管 ClassIsland 的功能已经比较丰富,但先前积累下来的架构已经到了一个比较混乱程度,同时用户也对 ClassIsland 的自定义能力提出了更进一步的要求。于是在 24 年的那个夏天,我开始了 1.5-Griseo 的开发。
在 1.5-Griseo 中,我做了这样几件事情:
- 引入组件:用户可以通过组件功能自由组合主界面上显示的内容,大幅提升了自定义能力
- 将课程服务从主界面抽离:降低了应用的耦合性,利于后续插件调用课程相关功能
- 重构课表控件:使课表组件的加载速度大幅提升
- 引入插件:为用户提供了扩展 ClassIsland 的途径
这段时间是我目前以来最快乐的时光之一,也形成了 ClassIsland 开始开发后的第一个开发高峰。

可以说,这些工作为 ClassIsland 后面两年应用本体和社区的发展打下了坚实的基础。甚至直到本文发布时,ClassIsland 也依然是在当时形成的这一套基础上构建的。而组件和插件这两样功能更是衍生出了丰富的插件生态。
到了这里,ClassIsland 已经成为了一个相对成熟、拥有一定生态的工具。
波折、平缓前行与第二次上升
到了 2025 年的下半年,我开始了 1.6-Himeko 的开发。在这个版本中 @DryIce-cc 引入了自动化功能,并且我也对 1.5 引入的新功能进行了改进,比如引入了多行主界面和容器组件,并进行了一些修修补补的工作。
在 1.6-Himeko 的开发期间,我们也遇到了一些的意外和挫折,这也一定程度上影响了 1.6-Himeko 的开发节奏。
在 1.6-Himeko 开发中期,我们发布了宣传短片《你的课表,比想象更聪明》。由于 ClassIsland 在前期在功能上已经有了一定的积累,加上投流作用,这个视频的宣传效果也出奇的好,为 ClassIsland 吸引了大量的新用户,是 ClassIsland 用户的一个爆发期。

用户量的增多给我们带来了更多的考验,对应用的健壮性提出了更高的要求。而在 1.6-Himeko 正式发布后,虽然应用的功能性又上了一个台阶,但这个版本的初始版本与之前相比,并没有非常稳定,甚至还存在启动过程卡死的恶性 Bug(ClassIsland/ClassIsland702 )。直到后面我们才渐渐解决了初始版本的各种不稳定问题。这些问题一定程度上暴露了我们开发策略上的一些问题。我们也根据此调整了开发策略,尽量增强应用的健壮性。当时引入的恢复模式也一定程度上体现了这一点。
随后,我们展开了 1.7-RyouYamada 的开发。这个版本只是一个中杯更新,没有太多的突破性的新功能,但进一步提升了应用的健壮性,使 1.7-RyouYamada 目前最新的稳定版 1.7.0.1 成为了 ClassIsland 最稳定的版本之一。
跨平台与第三次上升
在即将结束 1.7 的开发时,我面临着一个抉择:是否应该将 ClassIsland 由 WPF 转向跨平台框架,以更好地适应信创环境。
从长远来看,这一转向是必要的。目前的政策正在推广在大屏上使用如统信 UOS 或麒麟这样的基于 Linux 的国产操作系统,如果这一政策真的完全落实,那么未来在教育大屏上的 Windows 用户数量势必会萎缩。 (注:然而事实上截至我写这篇文章时,Linux 平台的 ClassIsland 用户数量也才超过 Windows 7 一点点,还没有达到能正面与 Windows 系统抗衡的地步) 此时 ClassIsland 转向跨平台就很有必要了。
然而从另一方面来看,从 WPF 向其它框架迁移会带来大量的重构工作。即使是迁移到像 Avalonia 这样与 WPF 比较相似的框架,框架间的差异也会给迁移带来不小的麻烦。此外,新的跨平台框架能否还能在 Windows 上做到与 WPF 相近的表现,在当时也是有待考证的。
但长痛不如短痛。越早迁移,迁移的工作量越小。于是我开始了 2.0-Khaslana 的开发,目的是将 ClassIsland 从 WPF 迁移到跨平台 UI 框架 Avalonia 上。
一开始,我将应用基本功能迁移到 Avalonia 上之后,发布了几个早期的验证版本,以验证 Avalonia 在教学设备上的表现。在确定能跑后,我在 25 年的暑假紧锣密鼓地开展了 2.0-Khaslana 的开发工作。迁移的工作量看起来很多,实际上也不少。应用几乎所有用 xaml 写的东西都大改了一遍,得益于 Avalonia 与 WPF 的相似性,迁移的工作量要比更换到一个与 WPF 截然不同的框架要小很多。
在暑假一个月的开发后,ClassIsland 70% 的功能已经迁移到了 Avalonia 上。这个暑假也是 ClassIsland 的第二个开发高峰。但我在开学后将 ClassIsland 拷贝到大屏电脑上运行时,又发现了几个比较严重的问题:
- 与 WPF 相比,Avalonia 版本的 ClassIsland 在大屏上工作时帧率整体更平稳,但有时要比 WPF 版本卡顿
- 资源占用高
此外,我还收到了几个非常玄学的问题:
除了这些问题,刚刚基本完成移植的 1.7.105.0 简直是灵车漂移,除了上文所说的问题,很多地方也有很多其奇怪怪的问题,而这两个问题也一度成为了 ClassIsland 2.0 头上最大的两朵乌云。经过不断努力和试错,我终于解决了这两个玄学问题。并且经过 1.7.105.1 、1.7.106.0、1.7.106.1 和 1.7.106.2 四个版本的沉淀和修复,剩余的问题也渐渐得到解决,使 ClassIsland 2.0 达到了基本可发布的阶段。我们也很感谢在 2.0 开发阶段持续参与测试的用户们,他们为我们提供了及时的问题反馈,发现了许多我们没有发现的问题,也提出了许多很好的建议,为 ClassIsland 2.0 的构建起到了很大的帮助。
在 2025 年 12 月 17 日,经过将近半年的开发,ClassIsland 大部分功能都被迁移到了 Avalonia 上,ClassIsland 2.0 正式发布。
在这半年内我们付出和牺牲了很多,而 ClassIsland 也在这个阶段中迈上了新的台阶,正式走向了各个桌面平台。与 1.5-Griseo 侧重对后端的优化和重构相比,2.0-Khaslana 的开发工作集中在 UI 界面上,后端仍然沿用了 1.5-Griseo 时期形成的基础,工作量不亚于 1.5-Griseo 甚至更多。现在回望当时,真的很佩服我当时 2.0 开发阶段做出这样的工作的勇气和毅力。
在这半年内,ClassIsland 也非常有幸得到了 HelloGitHub 等平台和许多 Up 主的推荐,ClassIsland 的星标数量也突破了 2k 大关,成为了相当知名的大屏课表软件。
进一步优化用户体验
在 2.0-Khaslana 开发工作结束后,我们留意到应用很多地方功能虽然很强,但用户不太好上手,比如课表编辑功能和组件编辑功能。而在这段时间内,我们也留意到友商们也针对这些痛点进行了自己的优化。在这样的背景下,我们决定在 2.1-LiliyaOlenyeva 中专注于让 ClassIsland 变得更好用、更易于上手。于是我们新增了以下的功能:
- 编辑模式:所见即所得地编辑主界面的组件

- 课表周视图:更便捷地编辑一周的课表

- 应用内教程:引导用户进一步上手应用

此外,在这个版本中,我们也跟进了 Avalonia 的更新,通过框架小版本升级的方式进一步解决了应用因框架产生的一些问题。应用其它由应用自身产生的问题也得到了解决,2.1 的稳定性与 2.0 相比,也上了一个台阶。
尽管在写这篇文章的时候,2.1 的开发工作还没有结束。但让我们欣慰的是,根据用户反馈,这些功能确实比较好的简化了一些操作流程,降低了新用户的上手门槛。后续我们也会针对使用中的一些痛点,进行进一步的优化。同时我们也同步推出了文字版的上手教程,以帮助用户更快地上手应用。也希望各位用户能够踊跃提出自己的想法,让我们能够更好地优化用户体验。
以后的故事
现在 2.1 的开发即将进入尾声,而我也将离开高中,进入大学。我脱离 ClassIsland 原先的使用环境后,实地测试机会的缺少势必会给 ClassIsland 的开发带来新的挑战。未来 ClassIsland 会以怎样的方式发展、会走上什么道路等问题的答案还比较模糊,但我也相信这些问题的答案也会随着开发工作的进行而慢慢明了。对于未来的发展,我目前也有了一些想法:
- 集控:这是两年前就已经有的想法,但由于学业问题一直没有时间推进。后续我有了时间后,我想集控应该也能被捡起来继续发展。
- 进一步提升应用的可自定义能力:比如引入超级文本的功能,让用户有能力在提醒、组件和课程文本字段适用富文本,并支持插入绑定模板,动态显示信息。
- 扩展 ClassIsland 的适用平台和用户群体:一定程度上,这也算是我个人的一个想法。因为在进入大学后我也想要有一个强大和纯净的能显示大学课表的工具,于是我就有了这个想法。
此外,一些在 2.0 因为一些原因舍弃的功能(如从表格导入、壁纸主题色提取等),在后续也会逐步回归到应用中。
写到这里,不知不觉我已经写了很多内容,但还有很多话没有说。希望这篇文章能够帮到大家了解 ClassIsland 开发的幕后故事。也希望在接下来的故事中,ClassIsland 能够走出更远的距离。就让我们就此,既往,开来吧!