cireu
2026 年5 月 16 日 14:38
1
最近在 Lobster 看到的一篇有趣文章,原文章地址是 The Emacsification of Software — Quarrelsome
原文作者讲述了自己在寻找一个好的 Markdown 阅读器时,突然觉得自己不需要去找一个「现成」的阅读器,不如直接用 AI 帮忙写一个。这让他想起了整个 Emacs 社区的风格——当某人需要什么功能时,他往往是直接用 Emacs Lisp 结合现有的生态临时写一个。
这个论点让我想起 David Chisnall 之前在他的 mastodon 上发表的观点 (翻译 ):自由软件本应该追求可组合的组件化模式,而不是仿照商业软件的设计模式(他在这篇短文里还藉此批评了 GPL 协议,我不是很认同这个观点)。
自由/开源软件系统不存在这些刺激开发者走入恶性循环的机制,在看到各种自由/开源软件盲目复制此类架构时,我深感遗憾。自由/开源平台本应聚焦于可轻量级互操作组件,用户可以按任意方式自行组合使用这些组件。开发特定用例的新组件成本应该足够低,低到可以让个人程序员独立完成,也可以让其他人负担得起雇佣程序员开发,这样的系统才真正有利于自由/开源生态。聘人为 LibreOffice 这类庞大全包应用开发功能非常困难(具体问题在于,开发人员需要确保功能回馈上游——这要求上游维护者投入时间精力,才能确保长久)。相比之下,付费为模块化组件系统开发组件则简单得多,也无需依赖他人认可。
组件系统 [Component System]在 90 年代初至中期曾风靡一时,但它与商用现成软件 [Commercial off-the-shelf]的商业模式相悖,从而逐渐消亡——微软意识到,用一组可组合构建任意文档类别的 COM 组件取代 Office 完全可行,但此举有助于竞争对手逐步取代其产品、并为颠覆微软 Office 的统治地位铺平了道路。因此,行业趋势走向了相反方向——朝着封闭式操作系统与孤岛式应用发展,各家都试图成为传说中的「万能应用」。
自由/开源软件无需效仿此举。它能构建专有软件根本无法复制的架构,因为这些架构与通过租金榨取模式资助开发的行为存在根本性冲突。在这个世界里,GPL 之类的许可证既无必要(有人想把我的组件整合到专有系统?尽管去吧,如果这个组件不在我的生态系统里,就根本没竞争力),又会造成危害(在一个由百个独立组件紧密协作的系统中,我的文档包含一个由十个其他插件衍生而成的定制插件——若我依据律师-客户保密特权将这份文档发送给律师,我的法律义务究竟是什么?)。
5 个赞
我也读到了这篇文章,不过我觉得他的论点和论据之间没有什么强关联。我需要新功能的时候肯定是第一时间搜索有没有现成的,因为搜索引擎不会强迫我支付token。
至于所谓的组件系统,「组件化」本身也是一个非常典型的商业软件设计模式吧,组件化程度高不代表更hackable,不然Emacs也不至于这么冷门了。
3 个赞
有現成且滿足需要是最好,但往往会发現有的功能不符合自己的需要,而自己定制的是最贴近自己需求的,就像那些自己糊出來的 Elisp 函数,它們不适合所有人,但能滿足自己特定的需要,它們也未必能作為 package 发布,但這也不重要。The Emacsification of Software 想表达的就是這樣吧,借助 LLM,人們可以定制自己的软件,就像定制 Emacs 一樣。我們可以从別人的 .emacs.d 中抄配置,从別人的软件集中,能借鉴的或許是別人的创意了。
3 个赞
SPQR
2026 年5 月 17 日 15:53
6
组件化这个词太模糊了,我可以举例比如tsoding 的那个 The annoying usefulness of Emacs说明emacs非常组件化。对于Emacs来说“小而精“和“大而全“之间没有绝对的冲突,而别的软件可能必须二选一。我甚至敢说大部分自由软件都必须二选一,我想不出有第二个GNU/XXX能做到Emacs这种程度,也许Guix Linux算是?
成立的前提是有一些自由软件如此成功以至于成为了计算机软件基础设施,但我们不能把这个现状当成理所当然的,Rust Coreutils,musl,例子太多了
1 个赞
wsug
2026 年5 月 18 日 03:35
7
有时可能只是需要一个简单的功能, 开始以为很容易就能找到一个实现, 然而各种各样原因, 你就是找不到这样一个满意的实现, 能找到的不是这有问题就是那点不对, 最后想明白了, 自己实现.
然后又把这种应该自己实现的思想传递下去, 然而其实最开始的时候是并不想自己实现的
组件化的另一个问题是,谁来保障稳定性?若统一 intercomponent-communication,最终莫不会演变成 lazyvim 或 spacemacs 那样大而统一的固定组合,牵引着上下游跟着走?linux 也是,君不见为了上下游客制需求,linux 做了多少工作,让它越来越不像那个最初的 UNIX-like。当然不是说 linux 一定要长成 UNIX-like 的样子,但 linux 演变成今天这样终究是一个组件为浪潮裹挟妥协。org mode 同理,很多 org mode packages 都会尝试兼容一些主流 packages。
1 个赞
设计一个长命的可组合架构很难,UNIX或者Emacs这种东西可遇不可求。而且越往GUI组件化就越难,微软苹果九十年代设计过不少技术(COM、OpenDoc、OLE),最后都被淘汰了。