十五个补丁:把编辑器搬进鸿蒙 PC
8 月 31 日深夜,开源鸿蒙社区月度评优申报的台账里出现了一个不太一样的仓库名:`vscodium_for_openharmony`。
别的申报交的是一个应用——课程表、考研打卡、面料识别。这一份交的东西,严格说不是应用,而是"让应用能跑起来的东西":一套把 VSCodium(VS Code 的开源发行版)搬上鸿蒙 PC 的移植工程。
它叫 OHCodium,申报人是电子科技大学电子信息专业的胡炜凡。打开仓库,你会看到 255 个文件、15 个带四位编号的补丁、一份 560 行的构建手册——以及一个和大多数参赛项目完全不同的气质:每个步骤都有硬性校验,版本不对就停下来,不绕过。
这篇文章把它拆开看:一个桌面编辑器进入一个新操作系统,到底要过多少关。
▍一|先把"搬"这个字说清楚
移植容易让人误会成"重新写一遍"。OHCodium 的做法恰恰相反:一行不重写,全部保留。
VSCodium 本身是个 Electron 应用——可以理解为一团运行在浏览器引擎里的 JavaScript,加上一堆需要跟操作系统打交道的"手脚":读写文件的、开终端的、监听键盘的、画窗口的。前面的部分到哪儿都能跑,麻烦的全在后面那半截:每一个"手脚"都默认自己长在 Windows、macOS 或 Linux 上。
所以"搬"的实际含义是:把应用层原封不动运过去,然后在沿途每一个"跟操作系统打交道"的路口,告诉它新系统的路怎么走。
OHCodium 把这些路口数了一遍,一共十五个,做成了十五个按顺序编号的补丁。

▍二|先被认出来,再住下来
前三个补丁(0001—0003)做的是最基础的事:让鸿蒙系统知道"我是谁"。声明平台标识,暴露系统上下文,加一个 OpenHarmony 专用的构建目标——类比一下,新同学报到,先办校园卡,不然食堂都进不去。
接下来的三个(0004、0005、0010)解决"住在哪儿"。编辑器的用户数据放哪个目录、配置存哪里、更新检查走哪条路、关掉窗口再打开能不能回到原来的那个——这些在老系统里是"默认就对"的事,在新系统里每一件都要有人明说。
到这一步,应用已经能启动了。但能启动和能用之间,还隔着最大的一截。

(应用图标与身份字段均取自仓库配置文件原图,非界面截图)
▍三|最贵的一步:手和眼
十五个补丁里,超过四成的行数(555 行)花在同一个主题上:让编辑器重新长出手和眼。
键盘要能按——而且是编辑器那种按法,Ctrl、Cmd、组合键一个都不能含糊,0006 号补丁叫"OpenHarmony 键盘支持"。集成终端要能开——这是 0007,十五个补丁里最贵的一个,238 行,要在沙箱里给 zsh 安个家。调试器要能挂上,窗口的最小化最大化关闭要换成系统原生按钮,弹窗要长在正确的位置。
为什么这一块最贵?因为编辑器和普通应用不一样:用户盯着它一整天,所有的不顺手都会被放大十倍。快捷键差一档、终端慢半拍,这个编辑器就"不能用"了。移植做到这儿,才算从"能启动"走到"敢日常打开"。

(0007 终端补丁原文节录:新增的三行,就是让鸿蒙有了自己的终端配置项)
▍四|改别人的代码
第四组只有两个补丁,却可能是最诚实的两个:0013 和 0014,标题里都带着一个不太好听的动词——去改别人写好的代码。
以 0014 为例。VSCodium 依赖十几个"原生模块"——文件监听、SQLite 数据库、终端驱动、正则搜索工具 rg……它们各带一份编译好的二进制文件,且都默认自己躺在老位置。到了鸿蒙上,这些二进制被统一装进了应用包里的另一个目录。于是 0014 做的事情是:挨个找到这十几个模块的加载代码,在每个 try-catch 的兜底分支里加一句判断——“如果你在 openharmony 平台上,去这个新路径找”。
打开这个补丁能看到 13 个文件、48 行新增。改动小得惊人,前提是作者把十几个模块的加载链路一个一个摸清了。
0013 则处理一个更微妙的角色:TypeScript 语言服务。代码补全、错误提示都靠它,它一崩,编辑器就"瞎"了。这个补丁只有 30 行,却是验收清单里单独列了一条的环节。

▍五|最后才有名字
补丁做到 0012 和 0015,事情开始变"轻":换图标、改产品名、注册自己的数据目录和协议头。
把这件事放在最后做,其实是一种工程判断:名字是所有功能都稳了之后才配拥有的东西。前十三步解决"它是活的",这一步解决"它是谁"——OHCodium,一个带着自己身份的 VSCodium,从此在鸿蒙 PC 上落户。
▍六|补丁之外:560 行手册和 8 条验收
如果只有补丁,这还只是半个作品。仓库里真正的"隐形工程"是那份 560 行的 README——一本从零开始的施工手册:准备哪台 Linux 主机、装哪个版本的 Node、JDK 必须是 17 而不是 21、国内镜像怎么配、连"镜像代理传输到最后容易报 curl 18 错误"这种坑都写明了解法。
手册的最后一节不是结束语,而是一张验收单:8 条最小回归清单。装机之后,一条一条验——

图标显示对不对、窗口按钮是不是原生的、文件能不能建删、终端默认是不是 zsh、搜索走不走 rg、TypeScript 服务崩不崩、快捷键灵不灵、Git 和扩展装没装上。八条全过,才叫"跑起来了"。
提交记录里只有一个快照,看不出这十五个补丁打磨了多少轮。但过程没有丢——它全部留在了这份手册里。对一个开源作品来说,这可能是比代码更贵重的部分:下一个想做移植的人,不用再踩一遍坑。
▍七|移植之后
这件事没有停在"能用"。在 6—8 月的社区月度优秀评选公示里,胡炜凡的名字出现了四次:MKCode 和 MKLab 拿了月度星光 PC 应用,本人拿了 PC 应用之星,还是月度开源贡献之星之一。MKCode——正是 OHCodium 这套开源底座上长出来的产品,README 里预留的远程开发能力(Remote SSH、Server)就是它的方向。
一套移植,两种产出:**给社区的 OHCodium,给自己的 MKCode。**开源的底座越稳,上面的产品走得越远——这条路,他已经走通了一遍。
▍尾声|生态需要两种人
写到这里,可以回答开头的问题了:为什么这次申报"不是一个应用"?
因为一个桌面生态要立住,需要两种人。一种做应用,让用户有的用;另一种做"让应用能跑起来的东西",让第一种人的活儿从不可能变成可能。编辑器、工具链、运行时,每一件都是后者的活——枯燥、看不见、但缺一个就卡一层。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)