原文:https://antfu.me/posts/mental-health-oss
作者:Antfu
译者:ChatGPT 4 Turbo
编者注:一些收获,1)开源不仅仅是代码,你需要拥有很多编码外的角色和技能,2)star 数在你达到目标后就会变得平淡,3)降低自我期望,维护开源不必完美,解决他人问题不是义务,4)项目铁三角速度、范围和质量,作者选择质量和速度。
太长不看:我状态很好,不会离开。虽然有些压力,但我依然撑得住,并且在努力提升。谢谢你,不用担心!
这是我开始做开源的第 4 年。老实说,我开始越来越频繁地感觉到事情超出了我的能力范围。我仍然不确定自己是否经历过真正的倦怠,但我确实周期性地体验过我的生产力和动力的起伏。
这篇文章不是指南,也不是抱怨。它更像是我的个人日记,我用它来为自己做记录。我只是觉得,如果能和大家分享这些内容,可能会很有趣。
如果你经历过倦怠,或者感觉自己快要倦怠了,我建议你休息一下,找人聊聊,必要时寻求专业帮助。这里还有一篇不错的文章为开源维护者保持平衡,你可以参考一下。多加注意!
所以,现在,让我告诉你我最近在想些什么杂七杂八的事情。
未准备好
在某种程度上,即使到了今天,开源对我来说仍然是非常新的概念。
自从我开始学习编程和了解开源以来,我一直梦想成为一名全职开源开发者。上大学时,我渴望被开源社区认可,努力尝试“弄明白”一些我能完成的有影响力的工作。突然之间,你会达到一个转折点,你的项目可能意外地起飞了,或者你被邀请加入一个大项目 – 那一刻,你会开始感受到所有那些兴奋以及突然降临的责任感。几天后,当最初的兴奋开始消退时,你开始意识到这也意味着许多你从未想过的责任和其他东西。尽管我用了全部的大学时光努力融入开源,当我最终迈入这个领域时,我意识到我有多么的未准备好。
开源这件事情有趣的一点是,一个人可能永远无法做好完全的准备。你可能会遇到棘手的技术问题,或者需要跟上新技术,但除了编码之外,还有一大堆事情要处理。你要成为自己的「客户支持」来回答问题;成为一个「设计师」,「作家」去准备精美的文档;作为一个「项目经理」保持项目正轨;作为一个「团队领导」来带领新贡献者并保持团队的积极性;「市场营销」你的产品;在会议上「演讲」等等。这些都是成为开源开发者的“副作用”,许多事情一捆而来,不仅仅是代码。
对我来说,这可真是个挑战。我相当内向,不擅长聊天或交谈。我在学校时英语考试很糟糕,完全没有信心用英语说话。甚至只是在同学面前我都会怯场。我想我也不喜欢团队管理,尽管我从未领导过团队——有太多的事情让我感到恐惧。
这并不给你准备就绪的时间(或者另一方面,没有迈出第一步你可能永远也准备不好),随着项目的成长,随着你职责的增长,你将被迫学习和适应。当团队自然成长时,你必须学会沟通,去领导。当有人邀请你做播客或者演讲时,他们不会等你三年来练习语言或者演讲技巧——你要么错过机会,要么克服恐惧去做。因为我如此热爱开源,我必须克服它们和我自己。
这似乎可能让人不知所措。但如果你接受这些挑战并且一个一个地克服它们,逐渐地,你可能会发现它们相当有趣并且有回报。最后,我非常感激所有这些机会,它们促使我走出舒适区,迫使自己进步。在开源领域的这四年里,尽管在许多事情上我仍然不完美,但我管理更加自信地说英语了。我在许多会议上发表了演讲,有些甚至有成千上万的与会者。每次演讲前我仍然非常紧张,但至少我不再害怕去做了。
仍然有很多挑战和惊喜在等待着。我对接下来会发生什么既感到害怕又兴奋。
“期望”
人类适应。这驱使我们生存并不断改进,但这也使我们难以保持满足。
当我开始我的前几个开源项目时,我感到非常兴奋。我会不停地刷新页面,急切地等待新的问题、新的拉取请求和新的评论出现。每一个星标都会让我开心,我会尽可能地帮助解决每一个问题。我设定了如 100 星、500 星这样的里程碑,并在达到它们时庆祝。我仍然记得当我告诉我的朋友我的项目获得了几百个星标,我正在对世界产生一些影响时,我是多么骄傲。
一旦你达到了这些目标,事情开始变得“寻常”。然后你会开始期待更多并设定更高的目标。在某个时刻,我开始不再关心那些星标或下载的数量了。这不一定是坏事,毕竟它们并非我应该专注的指标,但我有时候会怀念过去那些简单的事情能给我带来快乐的日子。
我渐渐意识到,我们生活中很多事物的经验与我们的期望有直接关系。当我们刚开始时,我们的期望很低,这相对容易达到。当我们前进并站在更高的地方时,我们开始期待更多,这可能不会线性地增长。当你拥有 1000 个星标时,再获得 100 个星标听起来不像你一无所有时那么令人印象深刻。当你有了 1000 个星标,你会寻求另外 1000 个,仅仅 100 个再也无法满足你了。这对我来说很奇怪,我并不喜欢我自己的这种“人性”。
我发现,降低我的期望并对我所拥有的心存感激是让我保持快乐的好方法。当你开始意识到你不能一次又一次地达到你的里程碑时,停下来不再追求更高,休息一下并享受你周围的风景,或许你已经达到足够的高度,这是一个不错的出路。自从我开始“不过度关心得失”以来,我发现即使尝试不同的想法可能不会成功,我也感到更加快乐——因为我对它们没有高期望,对我来说没有所谓的“失败”概念。而如果它们中的一些后来可能被证明是好主意,那将是一个不错的“意外惊喜”。
如果您感兴趣,我在 关于剃毛技术 的帖子中解释了我的寻找想法的过程。
“自我期望”
期望不仅适用于我们正在做的事情,也来自我本身。当我太在乎一个项目时,我常常会发现自己在扮演一个和蔼可亲、友好的维护者这一角色上期望自己太多。当我读到人们批评我的项目、某个错误给人们造成麻烦,或者我没有及时回复问题等情况时,我会感到难过。在热门项目上,这种感觉甚至更强烈,因为你知道有很多人依赖它。这些自我期望给我带来了相当大的压力和压抑。
正如我在 另一篇帖子中提到的,维护者和用户的比例在开源项目中往往是不平衡的,找到新的合作者或团队成员真的很难,但由于开源本质上是免费的,因此增长更多用户基本上没有门槛。
我认为对于维护者来说,很难做出思维转变来认为他们没有义务为他人解决问题,因为开源软件通常是 按原样提供 的。尤其是对于那些关心用户和社区的维护者来说,在收到新问题时很难置之不理。但从另一个角度看,一个人的时间和精力是有限的。当工作量超出个人能力时,最好设定优先级并首先关注最重要的事情。
我希望有人能在我开始维护高流量开源项目时告诉我这些(你可以在网上找到像 这样 的优秀资源)——我花了很长时间才明白我不必完美,按照自己的节奏来做事是可以的。与其被动接收通知,还不如关闭推送通知,当我准备好了再主动检查问题和拉取请求。
我做了一个关于如何管理 GitHub 通知的演讲,如果你对方法论感兴趣,这很值得一看。
降低自己的期望 – 没有人是完美的,也没有人是机器。不要让它们成为你的负担。保持健康和可持续的步伐更重要,保持自己的快乐和动力,以便长期产生更积极的影响。
当你的梦想成为你的工作
能够活在自己的梦想中是美妙的,老实说,这是一种特权。但同时,现实地说,拥有一个梦想和生活在其中是非常不同的。梦想总是被理想化的,排除了所有无聊的细节。我的梦想是成为一名全职开源开发者。是的,听起来很棒,可以独立,做自己喜欢的事,拥有灵活的或完全没有日程安排,可以在任何地方工作,给世界带来好处等等。但实际上,事情没有那么简单。
这与“把你的爱好变成你的工作”非常相似。它确实有很多好处,比如你会更享受和更有效率,但它也伴随着义务和责任。当爱好变成工作时,你失去了选择何时以及做什么的自由。以前,你会把爱好作为下班后的放松,但现在当你想用你的爱好来放松时,它们变成了工作。
我很幸运,软件开发是一个包含许多不同事物的大领域。在维护“主要”开源项目之外,我有时会做一些小项目(生成艺术、稳定扩散、一些小实验 等)来趣味性地刷新我的思维(作为一种从主项目中“放松”的方式)。我也非常喜欢玩独立游戏,同时我不断地考虑着要认真开发一些游戏 – 但那是另一个故事 – 至少现在我还有一些方法在我真的想远离代码时逃避。
我可能太享受编程了,以至于我对此没有强烈的感觉。在我的情况下,“工作”和“乐趣”之间的界线相当模糊。有时,一个有趣的项目可以变成人们依赖的正经事。
速度、范围和质量
这实际上是我写这篇博客文章的主题。
让我们从这个“铁三角” —— 速度、范围和质量开始讨论。(通常它们是 质量 / 速度 / 成本,我在这里做了一些调整)
速度-范围-质量的铁三角
通常,人们会说 —— 在这三个因素中,你只能选择两个。如果你想要更快地交付一个项目,你可能不得不牺牲质量或者减少功能的范围。如果你想拥有一个高质量且功能丰富的产品,你可能不得不牺牲速度来慢慢交付好东西,等等。
对我个人的标准来说,在开源中保持高质量软件是我绝不妥协的标准。
同时,保持一定的速度和动力对我也非常重要。我的主要动力来自于完成某件事后的成就感。当我可以创建反馈循环,然后进行迭代交付时,我能够处于一个极佳的流动状态。
所以说,我通常选择质量和速度。开始时,我的项目范围相当清晰且较小。我设法保持高质量,快速交付,并迅速从社区获得反馈。在那时,我能够保持高效和动力,继续在那些项目上工作。
范围
我“偶然”能够保持那种动力和速度相当长的时间。我是通过 i18n Ally 和 VueUse 开始接触开源的,从那时起,我加入了 Vue 和 Vite 团队。仅在 2021 年内,我提出了 Slidev(2021 年 4 月)、UnoCSS(2021 年 10 月)和 Vitest(2021 年 12 月)—— 一切进展得几乎太顺利了,我几乎没有意识到拥有更大范围将会有一定的限制。从那时起,我就一直“无知地”以这种“速度”继续前进。我非常幸运能够遇见这些了不起的团队和社区,并从他们那里得到帮助:
- 优秀且超级支持的 Nuxt 团队 Atinux danielroe pi0
- sheremet-va AriPerkkio 和 Vitest 团队 对 Vitest 的精心打理
- chu121su12 zyyv 和 UnoCSS 团队 对 UnoCSS 的大量打磨
- okxiaoliang4 wheatjs Alfred-Skyblue Tahul 和 VueUse 团队 对 VueUse 的贡献
- sxzz 对 Unplugin 的管理
- KermanX tonai 对 Slidev 推出许多功能
- arashsheyda 在 Nuxt DevTools 上的大力帮助
- shuuji3 Shinigami92 对 Elk 的贡献
- patak-dev sapphi-red bluwy 持续推动 Vite 与其令人敬畏的社区向前发展
- userquin 维护 Vite PWA 并几乎无所不在地提供帮助
- yyx990803,我从他那学到了很多关于开源和决策的知识
- …还有许多为开源贡献或通过赞助提供财务支持的你们!
遗憾的是,我没法列出所有人的名字,而且许多人实际上在项目之间有所重叠。我想说的是,我并不是独自工作,而且我也不能独自完成所有这些。我从社区和团队那里获得了大量帮助,才拥有了这些项目。对此,我真心感激。在质量和速度之上,看来我还致力于广泛的项目范围——这似乎打破了铁三角的规则——但实际上,幕后那令人敬畏的社区才是让这一切成为可能的_“魔法”_。
容量
维护多个高流量开源项目所需的工作量实在是巨大。老实说,如果没有社区的帮助,我早就应该达到我的极限了。尽管社区给了我很多帮助,但是沟通、协调以及持续的上下文切换仍然需要大量的精力。随着时间的推移,我积累了很多只能自己做的事情,很多我想尝试的想法,以及很多我想要改进的事情。
我想让这些项目保持活力并继续前进;我想写更多博客文章来分享我的想法;我想做更多的演讲,去旅行和见人;我想做更多的直播,因为我知道很多人在等着它;我得清理这个东西,做那个发布;我也想学法语;并花更多时间与我的家人在一起——我是说,这大概就是生活。人们都有自己的担忧和责任,我并不比别人更特别或更忙。
“但不知为何,似乎总有些东西,
让我觉得难以呼吸。”
我可能不愿意承认自己潜在的倦怠。并不是因为我害怕它,更多的是,我不想放弃,被动地处理它。我知道需要休息的时候要休息,但是给自己贴上“倦怠”的标签并放弃是一种从责任中“逃避”的“简单方法”。我想找出_“根本原因”并尝试改善情况,而不仅仅是对它进行“规避”_。正如我们之前谈到的,对“期望”的转变,以及对我的“未准备好”和“自我期望”的重新评估,是我在因不同原因接近倦怠时找到的解决方案。通过调整自己并适应,我通常能够在大约一周内从低点中恢复过来,并继续前进。
这一次的情况有点不同,并不是因为我缺乏动力,而是有太多事情我想做但我已经超出了容量。我开始思考,也许是因为我期望自己以同样的速度持续提供一切,我对于没能做够、没能做快感到焦虑。快速获得反馈是很棒而且相当有效,但因为我太习惯于迅速行动了,我可能在成长中逐渐变得不耐烦。结合起来,它们使我在做一些需要中长期努力的事情时容易感到挫败。
例如,写作。我不擅长写作,而且老实说我并不享受这个过程。文档、博客文章、教程和讲座——所有这些都需要大量的时间,同时,这也是我不得不做的事。当我在写作或者在过程中放弃时,我很容易分心和失去焦点。因此我在 Twitter 上询问了这个问题,从社区那里得到了很多很好的建议(查看评论,你也可能找到对你有用的东西)。我开始尝试轻松对待,并慢慢来,试图转变我的思维,不期待立即看到结果,享受过程。你正在阅读的这篇博客我大约花了一周的时间来写(对我来说这是相当长的时间了),分成多个阶段。我觉得这也帮助我重新思考和重组我的思想和感受,实际上,把它们写下来让我对我的焦虑感觉好多了。
所以,我可能应该重新评估我的能力和期望。我必须理解并接受,我不能总是保持相同的速度,我不必过于逼迫自己。稍微慢下来,更多地关注细节,也许我会在过程中找到不同的乐趣和满足。
老实说,我甚至不确定我在这篇博客帖子中想要表达什么——也许只是简单地与你分享我的思想和感受。现在,我仍然感到相当大的压力。我仍在适应并试图找到更好的处理方式。在这一周的写作和与朋友交谈中,我感觉好多了,我确信我会度过这个难关。这可能只是像我们生活中的许多其他事情一样;我们不总是有完美的解决方案,但我们必须继续前进,找到我们的出路。
对每一个开源维护者来说,保持良好的心理健康是保持可持续性的重要任务之一。我认为在这个旅程中的高潮和低谷,并没有“一个答案”或“一个解决方案”。更像是一个持续的学习和适应的过程,找到适合我们每个人的方法。
我很想听听你的想法
感谢 你耐心阅读我这些杂乱无章且啰嗦的想法直至最后!
我知道我的观点可能会非常偏颇。如果它引发了你的任何思考或感受,我非常好奇你的看法或你的处理方式。你可以在这条 推文 或 mastodon 下留言,或者如果你更偏好私密交流,可以给我发送邮件到 hi@antfu.me。期待听到你的声音!
同时,其实还有很多关于开源的其他方面我在这篇文章里没有谈到。Artem Zakharchenko 写了一篇很棒的文章开源的黑暗面,从不同的视角和观点出发,我也非常有共鸣。强烈推荐给它读一读。
感谢
最后,我想向我的女朋友 Inès 表达深深的感谢,她从一开始就一直在支持我,并帮助我度过了那些艰难的时刻。没有她的巨大支持,我可能今天都不会涉足开源世界。
同时,也感谢 patak-dev 和 posva 关于这个话题深入的讨论,他们真的给了我很大的帮助和支持。
还有你,以及伟大的开源社区!我非常感激我从你们那里得到的所有帮助和支持。
下次再见,保重!