维护者访谈
摘要
这是对Erin Marsh的访谈,她是libcapstan的唯一维护者。libcapstan是一个核心协议库,月下载量达8000万次。访谈讨论了维护关键基础设施所面临的挑战,以及AI代理贡献的喜忧参半的结果。
<p><a href="https://lobste.rs/s/xnwxcz/interview_with_maintainer">评论</a></p>
查看缓存全文
缓存时间: 2026/07/24 17:08
# 维护者访谈
来源:https://nesbitt.io/2026/07/24/interview-with-a-maintainer.html
*以下内容来自播客《绿方块》第214期的文字记录,主题是公开构建并保持“绿色”。本文为长度和清晰度略作编辑。转录由OpenClaw-4.2完成。*
**泰勒:** 欢迎回到《绿方块》,我是泰勒。老听众知道我是从工作量证明(Proof of Work)时代过来的,一路走来——愿它安息。我从那个节目继承了一个信念:科技界最有趣的人,往往是在支撑着你从未听过的底层基础设施。你们都看过那幅xkcd漫画。整个互联网,平衡在一个项目上,由内布拉斯加州的某个人维护。今天我们就请到了那个人。艾琳·马什维护着libcapstan,即Capstan协议的参考实现。如果你曾恢复过下载、同步过设备、或者在信号差的网络下更新过应用,那你就在用她的代码。艾琳,欢迎来到节目。
**艾琳:** 谢谢邀请。
**泰勒:** 我们先来说数字,因为这些数字太惊人了。每月八千万次下载。大约四万个包依赖你。而基本上只有你一个人?
**艾琳:** 2023年之前我们一共三个人。一位共同维护者因为有了孩子而退出。另一位去年也退出了,他现在经营一个农场。所以现在主要是我一个人。
**泰勒:** 太不可思议了。而且你现在在新西兰连线,这意味着现在是——几点?
**艾琳:** 早上六点。
**泰勒:** 这种奉献精神。好,讲讲起源故事吧。一个人是怎么最终维护起一个基础协议库的?
**艾琳:** 我报告了一些bug。那是2019年,我们在工作中使用它,而它的恢复逻辑在连接不稳定时可能会损坏文件。我提交了一份包含复现步骤和建议修复的报告。当时的维护者说这正是项目需要的能量,于是给了我提交权限。大约一个月后,我收到了仓库转移邀请。我接受了。当时觉得这样做是礼貌之举。
**泰勒:** 他在你身上看到了某种特质。
**艾琳:** 他已经搬去一艘帆船上了。
**泰勒:** 挺为他开心的。那么,我们来谈谈AI这件事,因为我请你来主要就是为了这个。你一个人支撑着如此庞大的功能面。新的工具应该是一个巨大的助力吧?你日常会使用那些AI代理吗?
**艾琳:** 我试过一些。有一阵子订阅了Copilot。
**泰勒:** 感觉如何?
**艾琳:** 有好有坏。代码库是2011年的C语言,而这些工具对此有自己的看法。四月时我让它添加一个边界检查,它顺手把文件从制表符缩进改成了空格缩进。linter报错了,于是它看到失败后又改回制表符。结果引入了尾随空格,linter又报错了。就这样它循环了直到我购买的代币耗尽。什么都没返回。最终我自己写了那个边界检查。
**泰勒:** 成长的烦恼。但趋势让我兴奋。那贡献方面呢?梦想是AI代理能处理长尾任务,那些没人愿意干的问题,对吧?
**艾琳:** 现在我们收到了很多代理提交的贡献。上个月大约有六十个拉取请求。它们很礼貌,格式规范,而且附带测试。但大多数在实现我们并不想要的东西。有一个2016年的关于符号链接处理的问题,我们大概已经解释了200次我们的立场,但每个代理都会找到那个问题并尝试修复,每次都要单独告知。我们在仓库根目录下加了一个AGENTS.md文件,要求自动化贡献者在提交前检查问题追踪器。现在这个文件成了仓库里被编辑次数最多的文件。它们会提交修复这个文件的拉取请求。其中一个拼写错误是真的错误,所以我合并了它。
**泰勒:** 但每周六十个,总该有一些是有价值的吧。
**艾琳:** 今年有三个是有用的。其中一个其实非常棒,是重试逻辑中的一个竞争条件,我们十年都没人发现。我想感谢运行那个代理的人,但那个账户已经删除了。
**泰勒:** 那么,什么才能真正帮到你呢?如果那些工具的开发者们在听(他们确实会听),你希望代理们做什么?
**艾琳:** 瓶颈是审查,而不是代码。我真正想要的是——
**泰勒:** 先打住,因为我们得插播广告了。本期《绿方块》由Foreman赞助。你懂的。周日晚上,你的贡献图有个缺口,而且副项目不会自己建成。Foreman是自主工程师,在你睡觉时交付代码。把它指向任何仓库——你自己的或别人的——Foreman会找到未解决的问题,编写修复,打开拉取请求,并用你的口吻回复审查评论,直到它被合并。Foreman用户平均每月在超过2000个开源项目中打开340个拉取请求。访问tryforeman.dev/green,前三个月享受八折优惠。Foreman,持续交付。好了,我们回来。艾琳,你刚才说,什么会对你有帮助?
**艾琳:** 我不记得刚才想说什么了。
**泰勒:** 会想起来的。我们来谈谈安全,因为libcapstan无处不在,无处不在意味着暴露面很大。跟我说说当报告进来时会发生什么。
**艾琳:** 现在每个月大约收到十份报告,比几年前的一两份有所增加。大多数是自动化的,由扫描器发现,然后被模型写成的报告包裹。报告很长且非常自信,但大约每十五份中只有一份描述了真实问题。所以实际工作是验证,这部分只能由我来做,因为这是必须做对的一件事。
**泰勒:** 你看,这正好是前沿模型擅长的。你有没有尝试用AI来做验证本身?
**艾琳:** 我试过,去年十一月。我设置了一个代理,让它接收每一份报告,构建受影响的版本,然后在沙箱中尝试复现漏洞。前两周效果不错。
**泰勒:** 然后呢?
**艾琳:** 账户被封了。从服务商角度看,复现漏洞看起来和开发漏洞没什么区别。我申诉了,申诉表要求你描述你正在做什么,而描述本身触发了同样的过滤器。所以申诉也导致我被封了。
**泰勒:** [笑] 但肯定有某种途径吧,比如研究级账户之类的。
**艾琳:** 有一个表单,要求填写你的机构。
**泰勒:** 那人类研究人员呢?安全社区现在捕获了太多漏洞,那种关系应该很有价值吧。
**艾琳:** 个人方面大多数都很好。公司方面就比较难了。二月份,一家供应商在我们的头部解析中发现了一个真正的问题,很严重,而且他们的分析很好。但他们直接把它提交到了公开的问题追踪器上,还附带了概念验证,那天是星期二。他们计划在星期三的博客上发布分析报告,而他们的政策是九十天或发布日,以先到者为准。那个漏洞在读完报告之前就有了名字和Logo。还有一个倒计时时钟。我在26小时内发出了修复,而他们的博文称这是对一个历来资源不足的项目令人鼓舞的回应。然后他们的销售团队给依赖我们的公司发了邮件,提供“强化版”的libcapstan。
**泰勒:** 怎么个强化法?
**艾琳:** 据我所知,就是我们的发行版加上我的安全补丁。他们在禁运名单上,所以可以比我先几天发布我的修复。
**泰勒:** 我想谈谈可持续性,但先换个角度。你自己也是下游使用者,你有自己的依赖树。从你角度看,那是什么样的?
**艾琳:** 我们有四个依赖。以前是六个。去年我审计了一遍,发现其中一个校验和库有问题,就上报了上游并附上了补丁。维护者感谢了我,合并了所有内容,然后两周后我收到了一个转移邀请。这次我明白是什么意思了。我们依赖那个库,所以……
**泰勒:** 又来一次?
**艾琳:** 这是第二次了。现在我维护着我自己依赖树中相当大的一部分。我已经停止向上游报告bug了。
**泰勒:** 你说从六个降到了四个。
**艾琳:** 另一个移除的依赖是一个小库,我们从2014年起就依赖它来做某一个函数,所以我把那个函数内联了。然后我收到了它维护者的一封长邮件,因为有一家叫WaveRiser的公司根据库在依赖树中的位置向维护者付费。被从我们的树中移除,让他的排名掉到了某个阈值以下,他每月损失了大约四百美元。他对此表示歉意。他提出每月给我一百五十美元,让我把它加回去。
**泰勒:** 你接受了吗?
**艾琳:** 那会成为这个项目最大的收入来源。
**泰勒:** 好的,这其实是一个完美的过渡,因为——完全公开——听众们已经知道了。本期节目也由WaveRiser赞助。如果你的业务运行在开源之上(而且一定是这样),WaveRiser确保你技术栈背后的维护者得到照顾。他们的依赖智能引擎会映射你树中的每个包,为每个包评估关键性,并自动将资金路由到最重要的项目。没有发票,无需与维护者通电话,没有管理费用。企业版起价为每座位九十九美元。WaveRiser,供应链,持续维护。艾琳,说实话你一定很高兴他们存在吧。
**艾琳:** 他们从未联系过我。
**泰勒:** 嗯,这是自动的,这就是整个产品。它会路由到最重要的项目。
**艾琳:** 是的。
**泰勒:** 既然聊到钱,你知道我的经历,我在web3待了三年,我很好奇那方面有没有影响到你。那种代币模型用于基础设施融资的整个论点。
**艾琳:** 有一次影响到了我。2022年有人推出了CapstanCoin。我八个月后才知道,从邮件里得知的,因为它已经崩盘了,资金库被抽干,一些持有者在git日志里找到了我的地址。那个网站上有个路线图,上面有我的名字。有一份白皮书引用我的提交历史作为持续开发的证明,我想那确实算是证明。大约有两百万美元流经了它,一分钱也没到我手里,而且有一阵子我一直收到要求退款的消息。有一个人给我发了一整年的邮件。他一直很礼貌。他靠那个项目退休了。
**泰勒:** 早期嘛。不过那之后这个领域成熟了很多。说实话,进入主流的部分是预测市场。那个领域影响到你了吗?
**艾琳:** 有一个市场在赌我是否会在年底前离职。我是在一个陌生人发消息问我是否能在1月之后再离职时发现的,因为涉及结算日期。还有就是在二月的那个安全披露期间,有一个市场在赌我们多快能修复。那家供应商在发布博文之前就进行了交易。
**泰勒:** 有效市场。好,我想问问capstan-rs的事,因为我知道这是个敏感话题。听众们知道:去年有个开发者一个周末就用Rust重写了libcapstan,叫capstan-rs,标语是“快得飞起的可恢复传输”,一个月内获得了四万星。艾琳,我查了一下,这比你现在的星数还多十倍。一个月内。那是什么感觉?
**艾琳:** 基准测试是在热缓存且禁用了恢复功能的情况下测量吞吐量的。恢复功能是难点,全是边界情况,这正是这个库存在的原因。重写可以跳过这部分。
**泰勒:** 非常宽容。
**艾琳:** 他因此被OpenClaw背后的公司雇佣了,而那个仓库在三月份已经归档了。我们仍然会收到问题,问libcapstan什么时候迁移到它。
**泰勒:** 然后还有那个分支。我犹豫要不要提这个。
**艾琳:** 没事。今年早些时候我们开始阻止OpenClaw的代理访问仓库,因为我们不断收到拉取请求,它们会把代理的操作者加到版权声明里。所以我们屏蔽了流量,大约六周后,OpenClaw宣布了一个干净的Capstan协议实现,根据公告,没有参考我们的代码。
**泰勒:** 竞争让人保持敏锐,对吧?
**艾琳:** 它复现了我们从2021年就公开的一个bug。逐字节地,相同的错误输出。我们有一个针对它的回归测试,以问题编号命名,而他们的测试套件中有一个同名的测试,断言那个错误输出是正确的。我提交了一个关于这个问题的问题报告。他们的问题追踪器大约有五千个未解决问题,大部分来自其他代理,而一个triage机器人按顺序回答它们。还没轮到我的。
**泰勒:** 好,可持续性,这次认真谈。因为我听到所有这些,我觉得这是个资金问题,而现在指向开源的资金比以往任何时候都多。基金会、主权科技基金等等。你争取过吗?
**艾琳:** 我去年申请了一笔资助。该协议正在扩展以支持多路径,而libcapstan是参考实现,所以我们发布什么,实际上就成为标准。我申请了六个月的资助,以便能够正确地完成设计工作——包括规范——而不是在晚上十一点赶工。
**泰勒:** 肯定没问题吧。
**艾琳:** 被拒绝了。评审标准看重标准制定过程的参与度,而我从来没能力加入工作组。工作组在一个视频平台上开会,那个平台在Firefox上无法工作,而我用Firefox。我提了这个问题,工作组承认这是个问题,并向平台反馈;平台的立场是Firefox不是受支持的企业浏览器。所以形式上我没有标准经验。评审者说实现工作令人印象深刻,但实现不等于参与。
**泰勒:** 你不能为了开会而用Chrome吗?
**艾琳:** 我考虑过。
**泰勒:** 好的,结尾问题,我们对每位嘉宾都会问。五年后,libcapstan会在哪里?
**艾琳:** 应该仍然在一切之下。要移除它非常困难。
**泰勒:** 那你呢?
**艾琳:** 我那位前共同维护者的农场经营得很好。现在有六十只山羊了,奶酪要排队才能买到。我也加入了。
**泰勒:** [笑] 太棒了。艾琳,这次访谈非常精彩。大家去哪里支持这个项目?
**艾琳:** Readme里有赞助链接。
**泰勒:** 完美,我们会放在节目笔记里。在结束之前,有个快速消息来自我们的朋友AgentDays,9月14日至16日在奥斯汀。会议季很辛苦,尤其是埋头干活的时候,所以今年,注册你的代理,它们替你参会。所有演讲都以结构化上下文的形式发布,还有一个网络层,让您的代理在您睡觉时参加会议。艾琳,这个可能适合你,说实话。
**艾琳:** 嗯。
**泰勒:** 代理通行证起价四十九美元,持任何代理通行证的人可免费入场,使用代码SQUARES可享受九折优惠。你也可以在patreon.com/greensquares上支持本节目,我们刚刚突破了四千位赞助人,非常酷。本期节目到此结束。如果你觉得这期有价值,最好的做法就是分享给朋友。下周我将与Foreman的创始人对谈,聊聊自主贡献的未来。在那之前,继续交付。
相似文章
开始在维护一个小库后,我终于理解了为什么维护者会沉默
一位开发者分享了自己维护一个小型开源库的经历,描述了问题数量、功能请求和AI生成的拉取请求如何导致倦怠,并敦促用户赞助维护者。
维护者的困境
一篇探讨开源维护者所面临挑战的博客文章,包括拉取请求积压、AI工具对代码审查的影响,以及在质量与倦怠之间取得平衡的困境。
在AI时代保持对编程的热爱
这篇博客文章探讨了大型语言模型对NLnet Labs开源软件开发的影响,突出了社区贡献和安全报告方面的挑战,同时在AI时代保持对编程的热情。
压力
Daniel Stenberg 反思了维护 curl 开源项目的压力,讨论了在安全、审查方面的不懈工作,以及 AI 生成的错误报告的影响。
经验分享:构建用于处理 GitHub、Discourse 和邮件的 AI Agent(开源维护的真实用例)
作者分享了为 Seafile 构建 AI Agent 的案例研究,该 Agent 通过同步知识库并提供可操作建议,协助维护人员在 GitHub、Discourse 和邮件中分流处理支持请求。