LWN:Android平台的Emacs!
关注了就能看到更多这么棒的文章哦~
Emacs for Android
By Jonathan Corbet
June 29, 2023
ChatGPT assisted translation
https://lwn.net/Articles/936576/
Emacs 编辑器并不依赖于 Linux 内核;实际上,它在 Linux 出现几年前就已经存在了。Emacs 的代码重视可移植性,在各种系统上都可以不同程度地运行起来。最近,一位积极的开发者致力于将其能支持的系统再增加一个 Android,已经得到了一个可以工作的移植版本,但能否被合并到 Emacs 的主线,仍在持续讨论中。
在 2022 年的最后一天,Po Lu 宣布将初步的 Emacs 移植推送到 Emacs Git 仓库的一个功能分支中。这个移植版本大约有"14,000 行代码",基本功能可以正常工作;Lu 请求大家帮助解决剩下的一些问题。 Lu 在 1 月份回来时提出了其他人可以承担的更详细的一些建议。2月份,移植版本被宣布为"基本上具备完整功能",在 3 月初,Lu 要求将这项工作在"接下来的几天"内合并到 Emacs 主线版本。当时,Emacs 维护者 Eli Zaretskii 表示不情愿,直到现在为止,仍未合并。
F-Droid 存储库中有一个 Android Emacs 移植版本,但那个版本已经过时,Lu 不推荐使用。在 SourceForge 上还有一组经常更新的二进制版本供不想自己构建的用户选择,这似乎是最好的选择。
尽管使用这个移植版本在编者的 Android 系统上可以运行,但使用起来仍然有些麻烦。图标太小,无法清晰显示,对于手指较粗的人来说,触摸准确性也有问题。肯定有一种方法可以使用 Android 键盘进行像 M-$ 组合键(运行 ispell-word)这样的需要扭曲手指的三键组合键,但我还不知道怎么做,也不方便进行常规使用。任何希望在该平台上认真使用 Emacs 的人都最好配备一个外部键盘。即便如此,Android 的权限系统(被 Lu 称为"法西斯主义")使得无法访问系统中的全部文件。
尽管如此,人们似乎对这个移植版本有一些兴趣,而且 Lu 并不是唯一希望将其合并的人。然而,Zaretskii 仍然不信服;在 6 月中旬,他开启了一场讨论,称虽然合并 Android 代码将带来一些好处,但也会带来一些不利因素。它将显著增加 Emacs 的分发内容,将 Java 代码引入 Emacs,使一些现有的内部 API 变得复杂,并且最重要的是,将导致依赖一个单一维护者能了解移植版本并能够使其保持正常工作。鉴于这些问题,再加上 Android 是一个专有平台,他问道,保持 Emacs 不支持 Android 岂不是更好?
Lu 回应称,这个移植版本也可以在 Replicant 等自由 Android 版本上运行,不过也承认"这些系统使用得很少,不应被考虑在内"。NeXTSTEP/macOS 移植版本使用 Objective-C,因此为平台引入新语言已经有了先例,并且为了最小化所需的 Java 代码量,已经对 Android 移植版本进行了精心设计。关于维护,Lu 表示所需的更改并不是很大,有很多具有 Android 经验的自由软件开发者,而且他打算继续留在这个项目并确保一切正常运行。
讨论继续进行,其中还有一些讨论是专门关于 Emacs 开发的一些整体挑战的内容,这里不涵盖了。许多参与者表示希望有 Android 移植版本;例如,Arne Babenhauserheide 博士评论说,这将是在 Android 设备上提供 Org Mode 的最佳途径。然而,Zaretskii 仍然坚持认为,讨论优势并不是问题的核心:
我毫不怀疑,在 Android 上拥有 Emacs 将使 Android 用户受益;我的疑虑是,作为项目,我们是否应该并且能够承担起这个额外的维护负担,并承诺将来几年内维护、甚至开发这个移植版本。
这种关于维护方面的担忧并非毫无根据。查看 feature/android 分支可以看到 620 个 commit,其中 619 个是由 Lu 编写的(另一个 commit 是修正了一个拼写错误)。换句话说,Lu 今年早些时候寻求帮助,但没有其他贡献者参与到这个移植版本的开发中。Emacs 还有其他一些移植版本,人们认为状态并不是很好,其中包括 macOS 移植版本,其维护者已离开社区。增加另一个支持较差的移植版本对 Emacs 整体的状态不是很好。
然而,Lu 坚信 Android 移植版本会得到很好的支持。对于 Richard Stallman 来说,这已经足够了:"但是如果 Po Lu 说他想继续努力工作,并会继续完善使得可以大受欢迎,我建议值得在这方面投入精力。" 然而,Zaretskii 重申了他的担忧,称 Emacs 项目过去曾因此而受伤,并可能重蹈覆辙。但他对合并 Android 支持并不是完全拒绝:
"但也许我是唯一一个困扰于这个事实的人,即我们作为一个项目,从来没有将头抬出水面,超越明天或后天,展望未来?如果是这样,我将停止谈论这个问题,并接受事实也就是其他人并不感到困扰。毕竟,我不是这个项目的负责人,我只是一个管理者;如果社区决定这样做,社区将承担后果,无论是好是坏。"
读完这些对话,看起来除 Zaretskii 之外,很少有人担心合并一个今后可能失去唯一维护者的移植版。也许这个结果可能是因为回应者主要是 Emacs 用户,而其他开发者大多保持沉默。当维护负担由他人肩负时,维护任务就不那么令人畏惧。接受大量新代码存在风险,但不支持一个受欢迎的平台并让一个多产的贡献者失望也是存在风险的。Emacs 社区将选择哪种风险,还有待观察。
全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。
长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~