LWN:Android平臺(tái)的Emacs!
關(guān)注了就能看到更多這么棒的文章哦~
Emacs for Android
By Jonathan Corbet
June 29, 2023
ChatGPT assisted translation
https://lwn.net/Articles/936576/
Emacs 編輯器并不依賴于 Linux 內(nèi)核;實(shí)際上,它在 Linux 出現(xiàn)幾年前就已經(jīng)存在了。Emacs 的代碼重視可移植性,在各種系統(tǒng)上都可以不同程度地運(yùn)行起來。最近,一位積極的開發(fā)者致力于將其能支持的系統(tǒng)再增加一個(gè) Android,已經(jīng)得到了一個(gè)可以工作的移植版本,但能否被合并到 Emacs 的主線,仍在持續(xù)討論中。
在 2022 年的最后一天,Po Lu 宣布將初步的 Emacs 移植推送到 Emacs Git 倉庫的一個(gè)功能分支中。這個(gè)移植版本大約有"14,000 行代碼",基本功能可以正常工作;Lu 請(qǐng)求大家?guī)椭鉀Q剩下的一些問題。 Lu 在 1 月份回來時(shí)提出了其他人可以承擔(dān)的更詳細(xì)的一些建議。2月份,移植版本被宣布為"基本上具備完整功能",在 3 月初,Lu 要求將這項(xiàng)工作在"接下來的幾天"內(nèi)合并到 Emacs 主線版本。當(dāng)時(shí),Emacs 維護(hù)者 Eli Zaretskii 表示不情愿,直到現(xiàn)在為止,仍未合并。
F-Droid 存儲(chǔ)庫中有一個(gè) Android Emacs 移植版本,但那個(gè)版本已經(jīng)過時(shí),Lu 不推薦使用。在 SourceForge 上還有一組經(jīng)常更新的二進(jìn)制版本供不想自己構(gòu)建的用戶選擇,這似乎是最好的選擇。

盡管使用這個(gè)移植版本在編者的 Android 系統(tǒng)上可以運(yùn)行,但使用起來仍然有些麻煩。圖標(biāo)太小,無法清晰顯示,對(duì)于手指較粗的人來說,觸摸準(zhǔn)確性也有問題。肯定有一種方法可以使用 Android 鍵盤進(jìn)行像 M-$ 組合鍵(運(yùn)行 ispell-word)這樣的需要扭曲手指的三鍵組合鍵,但我還不知道怎么做,也不方便進(jìn)行常規(guī)使用。任何希望在該平臺(tái)上認(rèn)真使用 Emacs 的人都最好配備一個(gè)外部鍵盤。即便如此,Android 的權(quán)限系統(tǒng)(被 Lu 稱為"法西斯主義")使得無法訪問系統(tǒng)中的全部文件。
盡管如此,人們似乎對(duì)這個(gè)移植版本有一些興趣,而且 Lu 并不是唯一希望將其合并的人。然而,Zaretskii 仍然不信服;在 6 月中旬,他開啟了一場(chǎng)討論,稱雖然合并 Android 代碼將帶來一些好處,但也會(huì)帶來一些不利因素。它將顯著增加 Emacs 的分發(fā)內(nèi)容,將 Java 代碼引入 Emacs,使一些現(xiàn)有的內(nèi)部 API 變得復(fù)雜,并且最重要的是,將導(dǎo)致依賴一個(gè)單一維護(hù)者能了解移植版本并能夠使其保持正常工作。鑒于這些問題,再加上 Android 是一個(gè)專有平臺(tái),他問道,保持 Emacs 不支持 Android 豈不是更好?
Lu 回應(yīng)稱,這個(gè)移植版本也可以在 Replicant 等自由 Android 版本上運(yùn)行,不過也承認(rèn)"這些系統(tǒng)使用得很少,不應(yīng)被考慮在內(nèi)"。NeXTSTEP/macOS 移植版本使用 Objective-C,因此為平臺(tái)引入新語言已經(jīng)有了先例,并且為了最小化所需的 Java 代碼量,已經(jīng)對(duì) Android 移植版本進(jìn)行了精心設(shè)計(jì)。關(guān)于維護(hù),Lu 表示所需的更改并不是很大,有很多具有 Android 經(jīng)驗(yàn)的自由軟件開發(fā)者,而且他打算繼續(xù)留在這個(gè)項(xiàng)目并確保一切正常運(yùn)行。
討論繼續(xù)進(jìn)行,其中還有一些討論是專門關(guān)于 Emacs 開發(fā)的一些整體挑戰(zhàn)的內(nèi)容,這里不涵蓋了。許多參與者表示希望有 Android 移植版本;例如,Arne Babenhauserheide 博士評(píng)論說,這將是在 Android 設(shè)備上提供 Org Mode 的最佳途徑。然而,Zaretskii 仍然堅(jiān)持認(rèn)為,討論優(yōu)勢(shì)并不是問題的核心:
我毫不懷疑,在 Android 上擁有 Emacs 將使 Android 用戶受益;我的疑慮是,作為項(xiàng)目,我們是否應(yīng)該并且能夠承擔(dān)起這個(gè)額外的維護(hù)負(fù)擔(dān),并承諾將來幾年內(nèi)維護(hù)、甚至開發(fā)這個(gè)移植版本。
這種關(guān)于維護(hù)方面的擔(dān)憂并非毫無根據(jù)。查看 feature/android 分支可以看到 620 個(gè) commit,其中 619 個(gè)是由 Lu 編寫的(另一個(gè) commit 是修正了一個(gè)拼寫錯(cuò)誤)。換句話說,Lu 今年早些時(shí)候?qū)で髱椭珱]有其他貢獻(xiàn)者參與到這個(gè)移植版本的開發(fā)中。Emacs 還有其他一些移植版本,人們認(rèn)為狀態(tài)并不是很好,其中包括 macOS 移植版本,其維護(hù)者已離開社區(qū)。增加另一個(gè)支持較差的移植版本對(duì) Emacs 整體的狀態(tài)不是很好。
然而,Lu 堅(jiān)信 Android 移植版本會(huì)得到很好的支持。對(duì)于 Richard Stallman 來說,這已經(jīng)足夠了:"但是如果 Po Lu 說他想繼續(xù)努力工作,并會(huì)繼續(xù)完善使得可以大受歡迎,我建議值得在這方面投入精力。" 然而,Zaretskii 重申了他的擔(dān)憂,稱 Emacs 項(xiàng)目過去曾因此而受傷,并可能重蹈覆轍。但他對(duì)合并 Android 支持并不是完全拒絕:
"但也許我是唯一一個(gè)困擾于這個(gè)事實(shí)的人,即我們作為一個(gè)項(xiàng)目,從來沒有將頭抬出水面,超越明天或后天,展望未來?如果是這樣,我將停止談?wù)撨@個(gè)問題,并接受事實(shí)也就是其他人并不感到困擾。畢竟,我不是這個(gè)項(xiàng)目的負(fù)責(zé)人,我只是一個(gè)管理者;如果社區(qū)決定這樣做,社區(qū)將承擔(dān)后果,無論是好是壞。"
讀完這些對(duì)話,看起來除 Zaretskii 之外,很少有人擔(dān)心合并一個(gè)今后可能失去唯一維護(hù)者的移植版。也許這個(gè)結(jié)果可能是因?yàn)榛貞?yīng)者主要是 Emacs 用戶,而其他開發(fā)者大多保持沉默。當(dāng)維護(hù)負(fù)擔(dān)由他人肩負(fù)時(shí),維護(hù)任務(wù)就不那么令人畏懼。接受大量新代碼存在風(fēng)險(xiǎn),但不支持一個(gè)受歡迎的平臺(tái)并讓一個(gè)多產(chǎn)的貢獻(xiàn)者失望也是存在風(fēng)險(xiǎn)的。Emacs 社區(qū)將選擇哪種風(fēng)險(xiǎn),還有待觀察。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長(zhǎng)按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
