标签 开源项目维护 下的文章

项目历程

初出茅庐

2020 年 7 月,那会刚高中,我正在尝试 Android 原生开发,当前恰好需要缓存一些 B 站的视频素材,就在找手机上能直接缓存提取好的 APP ,那会我还不能经常用电脑,我记得当年也有一个简单实现了功能的 APP ,我当时就在想能不能给自己做一个,就这样,我的第一个 Java 原生应用诞生了——BILIBILIAS ,其中 as 取自单词 analysis ,当时还发布了一篇文章:Bilibili 番剧/视频下载 || BILIBILI AS,这个 APP 算是我整个安卓开发的启蒙了,那会还是用 Java ,当第一个原生程序真正的跑起来,那种感觉是无与伦比的,这个项目当年还非常简陋,只是按钮和图片组成的,我清晰的记得它的样子。
我那会刚开始在 B 站发布一些视频,我希望向其他人分享这个项目的过程,当时这个项目就被开源了,我还可以在 git 记录看到。

那虽然是一个简陋的 APP ,但我还是想分享出去,没想到当时就收获了很多用户,这让我看到了开发程序的另外一种可能,这之后,我决定继续优化这个 APP ,通过这个形式学习安卓开发。同年 11 月,我发布了新的版本[ B 站番剧/视频下载] BILIBILI AS v1.0.7 更新,当时 BUG 非常多,只能说勉强可以用,不过还是有那么多人来反馈。

当时我找了其他伙伴来处理服务器的事情,我们使用最便宜的学生机,轻量机来部署后端服务,用来发布更新和通知,应该这时这个 APP 就不止一个人维护了。

牛刀小试

可能是尝到了甜头,也可能是发现有这么多用户,我觉得需要再做的更好一些,但当时实际上并不懂重构的概念,只是觉得应该在现在的基础上优化优化,我就继续对 UI 进行了一些调整,将之前的代码可能加了一些封装,我正在不断尝试安卓原生开发带来的新 API 和功能,当时真的是如饥似渴,每周放假就扎进去开发,21 年的 2 月,我发布了一个看上去还不错的版本:[教程] 爆肝!自制 B 站缓存软件
当时还做了桌面小组件:搁置已久的安卓版本 B 站桌面小部件来啦!!!
这个时候,这个项目的另外一个使命来了,我发现我们已经有了一部分用户积累,这个时候我开始在 APP 加上轮播图,本来是用来做一些通知的,但我觉得我们已经有有一部分用户,应该有一些担当,就这样,这个轮播图有的时候我会推荐一些新动漫,有的时候会发布 B 站的一些重要通知,部分特殊节日和国家事件,我们也会宣传,当年疫情期间,我们还为大家提供了疫情地图显示。

崭露头角

高中结束的时候,毫无疑问的,我选了计算机相关专业,现在来看是毫无疑问,但回头看实际上是这个 app 影响了我的选择,它是鉴定选择软件行业的后盾。当时参加了一次字节跳动组织的青训营,我才发现,欸,原来架构设计是这样的,原来还有 DataBinding 这样的库,原来还有序列化这么一说,那我之前做的是什么?当时结营后我就将我的 APP 进行了一次重构,当然,现在看其实当时只是修改了一些关键的地方,但,这至少看上去像一个 APP 了。
当时我好像还写了一篇文章,关于饺子播放器的,但是那个版本的截图不太找得到了,当时也没有怎么宣传:饺子播放器实现抖音点击布局暂停及双击效果

小有名气

大学后我才开始真正的接触到 Kotlin ,新东西总是让人畏惧,但是新知识我真的很难不去用,老软件 BUG 实在是太多了,而且还不能多任务下载,所以我当时还是做了个大胆的决定,那就是重新开发!使用 Kotlin 和 DataBinding 技术。
23 年,项目的重构版本 2.0 来了,这次重构实际上是从软件架构上进行了一些设计,虽然现在看当时做的还是拉完了,但在当时我才真正接触到复杂项目开发,设计代码结构,有非常重要的意义。
[分享] 重制 B 站视频缓存工具
这个版本发布后,接下来的几年中都采用了 23 年开发的架构,在这个基础上进行更多功能的扩展,当然,因为当初设计局限性还是很大,导致后期还是没办法继续迭代了。

这些年来,BILIBILIAS 积攒了不少用户,很多动漫爱好者,学生等群体都需要使用它。

光荣进化

到现在,我觉得需要到更进一步的阶段了,JetpackCompose 技术已经逐渐稳定,我开始采用更高效的响应式框架进行开发,这就是我们现在的 3.0 版本!
这既是尝试新技术,也是对老用户的一个交代,还有人需要它,现在我就还需要继续维护一段时间。

项目困境

现在用户的需求逐渐变多,但社区开发人员主力只有我一个,到了现在,我希望去认真的设计项目的每一块内容,确实是跟不上用户的需要,有很大工作,设计都需要一点一点的推进。
所以我希望可以招揽更多对这个项目感兴趣的社区成员参与这个项目的开发

项目地址:bilibilias
项目预览:GooglePlay

前端生态最具影响力的开源项目之一 Tailwind CSS,正经历一场罕见的生存压力测试。

 

其创始人 Adam Wathan 近日在社区公开表示,由于 AI 对业务模式造成的“残酷冲击”,Tailwind 在一天之内裁掉了工程团队约 75% 的员工。

 

他在 1 月 7 日一期自述播客中进一步解释:在 AI 编程工具大规模采用 Tailwind、使用量持续走高的同时,这种“被默认使用”的成功并未转化为可持续的商业回报,反而持续侵蚀了团队的生存空间。若趋势不变,大约 6 个月后将无法继续支付工资。Adam 形容这是一种“非常糟糕的认知”,迫使他们必须立刻缩编,避免走到“既撑不住工资、也拿不出体面遣散”的境地。

 

“我真的难受。胃都拧在一起了。”Adam 说。

 

“因为这件事,我感觉自己像个失败者:我做出了一个几乎‘统治世界’的开源 CSS 框架,用的人越来越多、越来越火,但商业上的成功,却和开源的成功呈现出一种反向关系。”

 

“我们只剩下六个月了。”

 

“我现在的每一秒,都必须用来让公司活下去”

 

这场裁员风波最终被外界注意到,触发点是一则围绕“大模型(LLM)文档支持”的 GitHub Pull Request。

 

2025 年 11 月,社区开发者向 Tailwind 官方仓库提交了一项合并请求,要求新增一个 llms.txt 端点,用于提供面向 LLM 优化的 Tailwind CSS 全部文档的纯文本合并版本。以此希望在所有文档页面加一个“复制为 Markdown”的按钮,因为现在很多人会把文档内容直接喂给 AI。

 

从描述来看,这个 PR 是将 Tailwind 所有官方文档(共 185 个文件)在构建阶段静态合并为一个纯文本、无 JSX、按章节顺序排列的文档文件,方便 LLM 直接读取和使用。从工程实现上看,这只是一个构建期脚本,改动规模有限。

 

但该 PR 提交后长期未获推进。面对社区的追问,Tailwind 创始人 Adam Wathan 回应称,当前团队有更重要的事情要做,比如先想清楚怎么让公司赚到足够的钱、把业务维持下去。他直言,如果越来越多的人不再访问文档,而是直接依赖 LLM 去爬 Markdown 文件,“只会导致文档访问量进一步下降,也就意味着更少的人会了解到我们的付费产品,最终让业务变得更加不可持续。”

 

“很抱歉,我现在没有时间去做那些不能帮我们付账单的事情。”

 

Adam 关闭了这个 PR。当然,评论区立刻炸了:这对社区太糟糕了,你们只想着赚钱,太失望了......

 

有社区开发者认为,让软件更容易融入用户工作流、解决他们日常互动中的痛点,本身就是扩大潜在付费用户的关键前提;而此功能旨在让人们能够使用 Tailwind 更快、更高效地构建更多内容,现在 Adam 以“变现”为由拒绝此类功能,“等于是在告诉你的客户,从他们那里赚钱比为他们提供服务更重要。”

 

争议升级后,Adam 不得不再次回应,并披露了 Tailwind 的真实处境。

 

他坦言他知道这个功能的价值,但现实情况是:“就在昨天,我们工程团队里有 75% 的人失去了工作,这是 AI 对我们造成的残酷冲击。”

 

在这样的背景下,他坦率地说,自己已经很难再把时间投入到这类“不直接带来收入”的事情上:“我现在的每一秒,都必须用来让公司活下去。确保还留在这里的人,每个月都能拿到工资。”

 

他同时透露,尽管 Tailwind “比以往任何时候都更受欢迎”,但 “我们的文档流量相比 2023 年初已经下滑了大约 40%。”而文档是他们的唯一分发渠道,没有客户,就意味着 “我们根本负担不起继续维护这个框架。”

 

更残酷的是,虽然 Tailwind “增长速度比历史上任何时候都更快,规模也比任何时候都更大”,但 “收入却下滑了接近 80%。”他总结说,眼下 “让 Tailwind 变得更好用”,与 “让这个框架的开发在商业上变得可持续” 之间,“几乎已经看不到任何相关性。”

 

所以,他必须先解决生存问题,不然“一旦没人继续维护,这个项目最终会变成无人问津的弃置软件。”

 

更反直觉的现实:Tailwind 反而“到处都在被用”

这件事迅速在 Hacker News 上爆了。

 

HN 首页一条帖子标题很直接:“Tailwind 的创作者裁掉了 75% 的工程团队”,链接指向 TailwindLabs 的 GitHub 讨论。发出约 10 小时后,评论也堆到 598 条,迅速变成当天的高热讨论。

 

这场裁员之所以在社区引发震动,很大程度上来自一种强烈的反差感。

 

2020 年 7 月,Adam Wathan 还在公开回顾 Tailwind 的“上升期叙事”:Tailwind 的累计安装量刚刚突破 1000 万,而他们的首个商业化产品 Tailwind UI 上线仅约 5 个月,收入就即将跨过 200 万美元。他把这段经历形容为“完全超出想象”,并特意把最初发布在 Twitter 的长帖重新整理成文章。

 

而且在 AI 的世界里,在大多数开发者的体感里,Tailwind 也不是处在衰退期,恰恰相反,它正在悄然变成一种 AI 生成 UI 的“默认选项”。当人们打开 AI 编程工具,让模型生成一个页面、一个组件,甚至一整套 UI 时,模型往往不会再询问“要不要写 CSS”,而是直接给出一串熟悉的 class——这种选择并非出于偏好,而是因为在当下的工程环境里,这样做最快、最稳,也最不容易出错。

 

Glide CEO 兼创始人 David Siegel 认为:“你可以把 Tailwind 看成是一套无代码(no-code)工具包,它实际上让 AI 在设计这件事上变得更强了。”

 

有意思的是,AI 在使用 Tailwind 这件事上,确实表现得异常出色。就像无代码平台通过预制组件,帮助非开发者也能构建稳定、设计良好的应用一样,AI 也开始把 Tailwind 当作一套“组件库”来使用——这让它能够更快工作,并生成更可靠、更一致的样式结果。

 

“AI 并不是在 CSS 这种底层样式语言上变得更强了,”Siegel 解释道,“而是我们发明了一种 AI 更擅长使用的‘高层语言’,它叫 Tailwind。”他进一步指出:“它看起来几乎就像自然语言。你不用写一堆括号、冒号之类的东西,只需要写 text-black,文本就变成黑色;写 rounded-md,按钮就会变成中等圆角。这些组件库,本质上就是建立在设计之上的低代码 / 无代码抽象。”

 

现代 AI 编程助手最擅长的,往往是遵循清晰、可重复的模式,或者在一个定义良好的词汇体系中进行组合与生成。而 Tailwind 的方法论恰好满足了这一点:它提供了一套高度一致的 class 命名和样式模式,使 AI 更容易生成正确、相关且稳定的代码建议。

 

正如Vercel CEO Guillermo Rauch所说:“整个 Web 生态正在向 Tailwind 标准化,所以每个 AI 工具都在用它。”

 

“我们只剩下六个月了”

 

在 Adam Wathan 看来,AI 一把极其锋利的双刃剑。

 

“我认为,AI 是我们业务陷入困境的重要原因之一——即便它也让 Tailwind 变得比以往任何时候都更受欢迎。但同时,我也觉得 AI 是一项了不起的技术,我对它感到兴奋,也在思考它如何帮助我、帮助我们。在目前这个阶段,我们可能被迫要更认真地思考,如何利用 AI 来覆盖我们需要处理的所有事情。”

 

在 1 月 7 日发布的音频中,Adam 反复提到一个他此前一直试图回避、却最终不得不正视的事实:公司的收入已经连续多年处在下滑通道,而且还在继续下滑。

 

过去几年,这种下滑并不剧烈,甚至“慢到让人几乎察觉不到”。每个月的收入只是比上个月少一点点,账单依然能付,团队还能维持运转,久而久之,这种“更低但还能接受的收入水平”就变成了新的常态。

 

Adam 形容,这是一种典型的“温水煮青蛙”状态。

 

真正的转折点,发生在最近的假期里。他第一次不再凭感觉判断,而是认真做了一次收入预测:拉数据、画曲线、计算每个月的平均下降额。结论比他预期得要糟糕得多:收入并没有触底企稳,而是以几乎固定的绝对值持续下滑——这意味着,从比例上看,下滑速度只会越来越快。如果假设什么都不改变,那么大约6 个月之后,公司就将无法继续支付工资

 

对一家小型团队来说,6 个月并不算长。如果继续拖下去,等到现金流真正断裂,团队不仅保不住,甚至连体面的遣散都无法提供。相比之下,现在主动缩编,至少还能给被裁的同事留出缓冲期,让他们有时间寻找下一份工作

 

于是,在本周一,Tailwind Labs 正式裁掉了工程团队的 75%

 

公司规模并不大,“75%”对应的其实是3 个人。但 Adam 特意强调比例的意义:如果只说“裁了 3 个人”,听起来像是小幅调整;而现实是,工程团队原本只有 4 名工程师,如今只剩1 人。这对团队而言是一次结构性的变化。

 

裁员之后,Tailwind 的资源配置也被压缩到了极限:

 

现在的团队结构是这样的:剩下的核心成员是三位公司合伙人——我自己、因 Refactoring UI 而为人熟知的 Steve(一直负责设计),以及 Jonathan Rennick(最早和我一起创建 Tailwind,也做了 Inertia.js)。

 

除此之外,我们只有一名全职工程师 Robin——他从零开始做了 Headless UI,也从零做了 Tailwind 3 和 Tailwind 4,是在公司待得最久的人。

 

还有 Peter,他更多是兼职,负责合作伙伴计划、一些运营事务和客户支持。

 

就这些人了。

 

换句话说,整个公司只剩下“3 位合伙人 + 2 名员工”,“这就是我们接下来全部的资源”。

 

接下来,Adam 也将重新回到更偏 IC(个人贡献者)的角色。他承认这算是某种“银边”:随着团队变大,他的工作越来越偏高层和战略层,关注哪些事情需要完成,并分配给合适的人,而不是亲自构建;而现在,团队规模逼迫他必须亲自下场。

 

被裁的三位工程师,都是他非常欣赏、也非常享受共事的人:Philip既能啃 Tailwind 核心,也能把 Tailwind Plus 的 elements 组件库和组件预览的复杂前端界面硬生生推进落地;Jordan是团队的“疑难杂症终结者”,最擅长扎进陌生代码库定位上游/兼容性问题、快速开 PR 修复,同时也能在 Headless UI 与服务器排障上扛住关键战役;Dan则以设计工程师身份主导 Tailwind 4 的视觉与品牌更新,设计 P3 色彩体系并自研选色与预览工具,还贡献了大量高质量的图解与课程平台素材。

 

他原本对未来和他们一起继续做新东西充满期待,脑子里有很多计划,很多想一起推进的方向。但现实摆在面前,只剩下两个选择:要么让他们在这里“免费工作”,要么放他们离开,去一个真的能每个月按时发工资的地方。

 

他选择了后者。“我真的很难受,”Adam 说,“胃都拧在一起了。”

 

而且他也意识到,外界并不总能理解裁员背后的现实逻辑。在社交平台上,总有人会把裁员简单归因为贪婪、冷血,或者“不在乎社区”。作为创始人,这几乎是一种默认要承受的角色负担——你很容易被塑造成反派。

 

不是因为我贪婪、想赚更多钱,而是因为收入正在逼近零点,而我刚刚裁掉了我这辈子见过最优秀的三位工程师之一。我不想事情变得更糟。”

 

“说实话,我甚至把 tailwindcss.com 的仓库暂时设成了私有,只是不想再面对 issues 和 PR。睡了一觉之后,我可能会撤回这个决定。但我会反复动摇,本身就说明我这周的情绪状态真的不太对。”

 

“现在,开源项目越受欢迎,生意反而越艰难。这真的很残酷。这就是现状。”

 

参考链接:

https://news.ycombinator.com/item?id=46527950

https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957

https://adams-morning-walk.transistor.fm/episodes/we-had-six-months-left