从 8 月底到 10 月底,Term 发了 27 个版本。这篇说说我们做了什么、为什么要自己写 GPU 终端和 mosh 服务端、为什么选择订阅、质量怎么样、哪些地方还做得不够好,以及接下来要做什么。
撰写于
从 8 月 27 日的 26.2.3 到 10 月 26 日的 26.8.3,Term 一共发了 27 个版本,平均两天多一个。不是每个版本都很大,很多只修几个问题,但每个都经过真机验证再发布。
挑几个有代表性的:
HarmonyOS 上没有现成的终端组件可用。把网页终端塞进 WebView 是最快的路,但滚动、输入法和中文宽度都会受制于浏览器,手感很难做好。所以 Term 的终端从解析到绘制都是我们自己写的:用 Rust 写的终端引擎负责理解程序输出,自己写的 GPU 渲染器负责把它画到屏幕上。
一开始我们也是用 CPU 画屏幕。测下来,整屏滚动一帧要十几毫秒,一半花在画字上,三分之一多花在把画好的图搬上屏幕,离 120 Hz 差得很远。改成 GPU 之后,这两部分都交给了显卡。现在 CPU 渲染的路径已经整个删掉,只剩 GPU 一条。
自己写的另一个好处,是能按手机上的真实用法来做取舍:
mosh 很适合手机:切 Wi-Fi、切 5G、锁屏再回来,连接都不断。但原版 mosh 服务端已经很多年没有大的更新,有些事它做不到:往上翻看历史输出,可点的链接,Shift+Enter 换行,编程智能体跟着你的深浅色主题切换。
所以我们按 mosh 的协议,从头写了一个服务端,叫 termosh。它可以直接替换原版的 mosh-server,原版的测试也都能通过;配合 Term,就能用上上面这些功能,打字的响应也更快。不装 termosh,用原版 mosh 一样能连。
我们想把 Term 做成大家在手机上最顺手的终端,并且一直保持这个水准。这不是做完一次就能放下的事:SSH 服务器在变,编程智能体几乎每周都有新版本,HarmonyOS 自己也在更新。今天好用的功能,过几个月可能就会因为别处的变化出问题,需要有人持续跟进。
两个月 27 个版本,背后是大量看不见的工作:每个版本都要在手机、折叠屏、平板和电脑上逐一验证;遇到问题,先复现,再修,再确认没有带出新问题;大家在 App 里提的反馈,我们一条条看、一条条回。字体下载、termosh 发布和反馈系统,也都靠我们自己的服务器在运行。
一次性买断,收入集中在卖出的那一刻,之后的维护很难持续投入。订阅让我们的收入和 Term 是否一直好用绑在一起:只有每个月都把它做得更好,大家才会继续订阅。这正是我们想要的方向,也是我们选择 Term Pro 订阅制的原因。
我们用应用市场的崩溃统计来看质量。最近一段时间,无崩溃启动率在 99.98% 以上,也没有出现过卡死。每周的走势在质量页面公开。
崩溃不是零。大部分出在界面层的脚本错误,原生引擎的崩溃极少。每发现一个,我们都先在真机上复现,再修,再验证。很多修复也来自大家在 App 里提的反馈。
很多人想连的机器,其实没有公网 IP:家里的电脑、公司内网的服务器、藏在路由器后面的开发板。现在要连上它们,得自己折腾端口映射、内网穿透或者 VPN,门槛不低。
我们正在做一项新服务,暂定名 termconnect:在电脑或服务器上装好之后,不需要公网 IP,也不用改路由器设置,Term 就能随时连上它,不管你在家、在公司还是在路上。目标很简单:让每个人都能轻松连上自己的机器。
它还在开发中,名字和细节都可能调整。准备好之后,我们会第一时间在这里和 App 里告诉大家。
有想法或建议,欢迎在 App 里告诉我们:设置 › 账户 › 反馈与建议。