Lodash 是一个很容易被忽略的包。
它 2012 年发布,如今每日 npm 下载量超过 1 亿次。很多 JavaScript 项目里,开发者未必主动安装它,却可能通过依赖树间接用到它。
反常点也在这里:一个安静躺在依赖链里的基础工具库,实际影响很大;可它过去的维护压力,曾经很大程度压在作者 John-David Dalton 这样的少数维护者身上。
Dalton 最近在 OpenJS Foundation 访谈里谈到开源维护者倦怠。他提到,母亲去世、2019 年离婚等生活变故,让他逐步减少开源投入。他大约花了五年,经过多次尝试,才重新找到比较可持续的参与方式。
我更在意的不是 Lodash 有没有“过气”。这件事真正提醒的是:关键开源基础设施不能默认某个人永远有时间、精力和生活余量。
Lodash 为什么会从工具库变成公共地基
Lodash 一开始解决的是很具体的问题:JavaScript 工具函数、性能、跨环境一致性。它不是炫技项目,也不是平台型产品。
但 npm、Node.js 和前端工程化起来后,这类工具库开始进入大量项目的依赖树。它不一定站在台前,却常常出现在构建、测试、打包和运行路径里。
这就是基础设施的典型命运:用的人越多,存在感越低。只有维护节奏变慢、安全流程不清,大家才意识到它一直在下面托着。
对开发团队来说,风险不等于“Lodash 不能用了”。目前没有必要把维护放缓写成项目废弃,也不能把它说成已经发生了安全事故。
更准确的判断是:当一个基础包的责任集中在少数人身上,升级、安全响应和发布可预期性都会变脆。
| 维度 | 过去更像什么 | 近期变化 | 对团队的实际含义 |
|---|---|---|---|
| 维护决策 | 依赖少数维护者节奏 | 建立 Technical Steering Committee | 决策压力不再只压在作者身上 |
| 安全响应 | 报告、判断、修复压力集中 | 建立安全分诊小组 | 漏洞处理路径更清楚 |
| 工程流程 | CI 与安全流程需要恢复 | 恢复 CI 与安全流程 | 发布和质量控制更接近基础设施要求 |
这个变化不能被说成 OpenJS “接管” Lodash。原文能确认的是生态支持和治理改造,不是财务救助,也不是所有权转移。
边界要讲清楚。开源项目缺的往往不只是一笔钱,还包括权限、分工、流程和长期有人接手脏活累活。
维护者倦怠不是一句情绪话
Dalton 提到,Lodash 开发明显放缓的阶段,和母亲去世重合。后来,他的生活优先级发生变化。2019 年,他又经历了一次友好的离婚。
这些信息不该被写成苦情故事。它们真正说明的是,开源维护经常和普通人的生活撞在一起。
维护一个基础包,不只是写代码。还包括看 issue、审 PR、处理兼容性、回应漏洞报告、判断版本发布、承受外部催促。
很多公司内部会把这些事拆给产品、工程、安全、法务和支持团队。可在不少开源基础包里,这些压力会汇到一个人或很小的维护小组身上。
Dalton 并不是突然消失,也不是把项目废弃。他更像是在长期消耗之后,开始重新寻找边界。
他约花了五年,经历多次尝试,才找到更可持续的参与方式。治疗、运动、边界感,以及不再把编程当成唯一业余爱好,都成了恢复的一部分。
这对行业有一个不舒服的提醒:责任感不能替代制度。一个维护者越负责,越容易被系统性地透支。
这里也要做个对比。React、TypeScript 这类项目背后有公司或大型团队支撑,维护压力的结构不同。Lodash 这样的基础工具库,影响范围很大,但组织资源未必跟影响范围匹配。
这不是谁道德不够。是结构不对。
JavaScript 团队现在该看什么、做什么
Lodash 的治理重建,对 JavaScript / Node.js 开发者不是旁观新闻。它会落到依赖审计、升级窗口、安全合规和构建稳定性上。
最相关的两类人,需要做的事不一样。
| 对象 | 该怎么做 | 不必急着做什么 |
|---|---|---|
| JavaScript / Node.js 开发者 | 检查项目是否直接或间接依赖 Lodash;确认 lockfile、构建和测试是否能稳定复现;关注后续版本发布与安全公告 | 不必因为维护放缓就立刻迁移所有用法 |
| 技术负责人 / 安全负责人 | 把 Lodash 这类基础包纳入依赖清单;指定内部 owner;在升级计划里预留测试窗口;评估替代方案和降级方案 | 不必把下载量、Star 数当成唯一安全感来源 |
这里的动作不是制造恐慌,而是把依赖管理从“默认没事”改成“有人负责”。
如果团队在做 SBOM、漏洞扫描或供应链安全审查,最怕的通常不是某个包很老。更麻烦的是维护责任不清、发布流程不可查、漏洞响应没人判断。
Lodash 近期建立 TSC、安全分诊小组,并恢复 CI 与安全流程,至少说明项目在补这些短板。
接下来真正该观察三件事。
- TSC 是否能持续运转,而不是只停留在一次组织调整。
- 安全分诊小组能否形成稳定响应,让漏洞报告有清晰路径。
- CI 与安全流程能否反映到后续版本发布里,而不只是流程恢复。
目前还看不清的是,社区贡献能不能长期补上个人维护退潮后的空缺。治理架构搭起来,只是第一步。它还要经受日常维护的琐碎考验。
所以,Lodash 这件事不该被读成“一个老库不行了”。它更像一次基础设施体检。
体检结果不是马上住院,也不是万事大吉。真正该改的,是团队对开源依赖的默认假设:作者不会永远有空,善意也不能当作维护机制。
