积木经济
构建软件并获得大规模采用的最有效方式,已不再是打造高质量的主线应用,而是通过提供能让他人以数量胜过质量的方式去构建的积木。1
- Ghostty 上线 18 个月:每日一百万次 macOS 更新检查。
- libghostty 上线 2 个月:每日数百万用户。2
在其他“积木”技术中也能看到类似的增长轨迹:Pi Mono、Next.js、Tailwind 等。
亲身经历这一点,并目睹其他生态系统中的类似现象,已经从根本上改变了我对当今产品与软件开发实践的看法,无论是商业目标还是非商业目标皆是如此。
本文为手写完成,未借助 AI 协助。我热爱并大量使用 AI,但在这类内容上我个人会划清界限。我希望我的个人博客能够反映我真实的想法与感受。
引入量大增
我使用“积木”一词来描述它们的用法,是因为如今它们的组装方式与过去几十年截然不同。我不用“库”或“框架”这样的词,因为其范畴甚至可以上升到“应用”层面(例如,Ghostty 图形界面应用的分叉数量比以往任何时候都多,上面叠加了各种定制补丁,这很棒)。
如今的工厂是 agent(智能体)驱动的。我说这是一个客观事实,无论你对此有何感受。你可以争辩说这些工厂产出的东西有 99% 都是垃圾,但你无法否认其产出的惊人数量。无论技术栈还是行业,数据都无处不在,且无可辩驳。
AI 从零开始构建所有东西时表现尚可,但当它将高质量、文档完善且经过验证的组件粘合在一起时,则表现得非常出色。而且,除非被明确提示不要这样做,否则 AI 在条件允许时会更倾向于采用这种方式。这正是当今软件“积木”属性的体现:我们比以往任何时候都更倾向于直接拿来现成的组件并将其拼合在一起。
当然,人类也一直是这样做的。在我的整个职业生涯中,人类软件开发者一直更倾向于在经过验证的原语之上构建。但要足够了解各个组件以至于能将它们拼凑起来,这一天然的入门门槛曾经高到足以限制整个生态系统。如今,这一门槛已经消失。
产出大增
这些工厂产出的当然是软件。海量的软件。
这其中有负面影响。我认为其负面影响已经明显到无需我花太多时间赘述,但我想承认它们的存在:安全漏洞、不稳定,以及对关键承载系统如何运作的普遍缺乏理解。
但也有大量的积极面:
质量门槛更低。面向广大用户群体的主线应用,必须权衡每一个功能与其他功能之间的关系:它们如何相互作用?是否符合长期愿景?我能否为数百万用户维护它?而面向一到数百名用户的工厂产物则无需在意这些。因此,你可以更快、更宽松地发布。
认知度更高。主线应用无法面面俱到,它通常会为大多数用户最需要、最常使用的场景进行优化。而工厂产物可以为极小部分用户进行优化,这些用户也因此得以了解作为积木的底层技术。我在 Ghostty 上深切地感受到了这一点,因为非常小众的社群也开始拥有了自己的终端。
维护负担更轻。如今对功能请求说“不,谢谢”变得前所未有的容易,因为你提供的是生产资料中的关键一环。我对敷衍请求的困扰是公开的,甚至为此做了一个“no machine”,但我每天都越来越心安理得地拒绝。
研发被外包了。作为维护者,现在更容易观察他人的实践、看到可运行的概念验证,并决定将哪些内容带回主线。空谈少了,实干多了。而当他人实干时,你可以择优采纳最棒的点子(这是公平的:你提供了一块积木,他们则贡献了他们的想法)。
影响
这正在改变我对软件与产品开发的看法。
我现在更加有意识地去创造积木,并鼓励在其之上构建应用或分叉。我认为这带来了更快乐、更庞大的社区,并最终带来了更好的主线软件。
高质量的应用并不会消失。由积木开发者打造的高质量应用也不会消失。对于大多数软件类别,我认为始终会有一个多数群体,他们不想要个性化的粗制滥造的软件,而是想要一个精致、维护良好且支持完善的应用。
相反,我认为得益于积木经济,主线应用正变得更加稳定,其功能集也更加有的放矢。稳定性来自更加庞大和多样化的用户群体。功能集则来自大规模外包研发的生态系统。主线应用依然是审慎、高质量且维护良好的,但它是面向特定群体的。
房间里的大象:商业化
随之而来的显而易见的问题是,这对商业化意味着什么。闭源商业软件似乎处于巨大的劣势。事实也的确如此。
Agent 会更倾向于选择开放、免费的软件,而非闭源、商业的软件。在撰写本文时,这是一个客观事实。独立研究实验室在主流模型上进行的实验反复发现,在多种不同情况下,模型都会选择开放、免费的替代方案,而非商业方案。到目前为止是这样。
但是,我在这里没有确切的答案,因为与产品和软件开发不同,我目前并没有直接在打造一个可商业化的产品。我有一些想法,而且与所有难题一样,我认为答案是微妙的。但是,我不想给人一种我在对此高谈阔论的错觉,所以我打算避而不谈。当我付诸实践、了解更多之后,我会分享更多。
我再次只是承认,这一挑战显然是存在的。
转变已然发生
我们必须接受,积木和软件工厂已主宰了我们周围的一切,并接受和内化其带来的后果。
我们可以选择朝相反方向奔跑,打造与之对抗的飞地。或者我们可以选择完全投身于混沌。了解我的人都知道,我在行动上远没有那么极端,并且会根据具体情境持有不同的看法。
关键在于,转变已经发生。我们正身处其中。
脚注
随机一篇博客