数学教师萨拉·雷恩斯伯格在重构合唱团网站时,并未打算成为一名开源贡献者。她只是出于兴趣想学习JavaScript和Web开发。她说:“我并非程序员,但经常发现自己是团队中唯一具备一定技术背景的人。这就是我最初构建合唱团网站的原因。”
她选择了当时全新的前端框架Astro。尽管其相比成熟框架的学习资源较少,但她认为跟随项目成长是一种良好的学习途径。不久后,她向项目贡献了一小段代码——一个配置文件。随着项目的扩展,雷恩斯伯格愈发深入社区,解答问题并支持新Astro用户。她说:“我不是最了解项目内部运作的人,但我懂得如何解释问题,引导人们学习过程。而且我知道当遇到不知道的问题时该问谁。”
如今,雷恩斯伯格已成为Astro核心维护团队的一员。即便深化了Web开发技能,她仍不专注于代码库。作为文档负责人,她的时间用于帮助他人掌握Astro的各个方面。
当我们谈论开源中的“贡献者”时,我们往往想到编写代码的人,无论是添加功能还是修复bug。但开源项目远不止于代码。正如萨拉·雷恩斯伯格所做的工作,许多工作同样重要。
开放源码社区经理戴恩·福斯特(现VMware开放源码社区策略总监)指出:“成功的开源项目与成功商业产品所需的东西有交集。”这包括文档、本地化、营销、平面设计、测试、社区管理及版本管理。
非代码贡献对于开源的重要性不容忽视。“即使你编写出惊人的程序,如果不解释它做什么和如何使用,没有人会使用它。”云原生计算基金会的开发者倡导者,设计背景的内特·沃丁顿说。简单项目可能只需要一个README,但复杂的项目需要更多文档、教程和支持以使代码变得有用。根据2021年《Octoverse报告》,易于获取的文档可以使开源和企业软件项目的生产力提高约50%。平面设计、品牌推广和外联则有助于展示项目的健康和严肃性,其他项目或公司可能会将其用作依赖项。
虽然非技术人员有很多机会为开源做贡献,但非代码贡献并不一定是非技术性的。某些测试、文档和支助任务可能需要深入了解代码库。随着越来越多的人希望通过开源贡献来提升职业发展,回馈社区或两者兼有,记住这些非代码贡献对开源至关重要,并提供了发展技术和非技术技能的机会。
“即使你编写了出色的程序,如果没有解释它的用途和使用方法,没人会使用它。”
为什么你应该做出非代码贡献
增加特性或修复bug听起来可能比本地化文档、提供支持或记录可复现的bug报告更吸引人,尤其是如果你的目标是将开源贡献作为求职之路。然而,像雷恩斯伯格的经历所示,非代码贡献同样有成就感。
如果你对技术沟通、图形设计、用户体验设计或其他不需要编程的角色感兴趣,开源为你提供了建立作品集的机会。不过,程序员也从磨练非代码技能中受益,特别是在写作和沟通方面。此外,撰写、支持或社区组织的经验可以帮助你转向开发者关系或产品经理等角色。
任何技能水平的人都有机会参与进来。“你不需要计算机科学学位,或者英语学位来编写文档。”沃丁顿说,“即使你的写作能力不强,你也总得从某个地方开始。”
此外,在你彻底理解一个项目之前,很难做出有意义的代码贡献。“功能请求从根本上来说是不同的贡献心态。”Winterbloom创始人西娅·弗劳尔斯在最近与The ReadME Project的贡献者关系问答中表示,“其他贡献就像修补墙壁或重新粉刷栅栏,而功能请求就像在后院建造新的棚屋。你需要真正思考一下。”即使是看似微不足道的bug修复也可能产生重大影响。
“实际编写代码以完成某事只占五分之一的努力。”Litestream维护者本·约翰逊在关于不同贡献程度的文章中说,“后续数年的维护、修复bug、编写文档、制作教程和其他所有事情才是难点。”今年4月,《ReadME Project》在社交媒体上进行的非正式调查中询问维护者如果只能选择一种类型,他们希望得到哪种类型的开源贡献。虽然代码是最受欢迎的答案,获得了62.2%的投票,但超过三分之一的受访者更倾向于文档、设计或测试。
Meta的AI工程师,PyTorch维护者马克·萨鲁菲姆建议阅读你可能想要参与的项目的文档,修复任何过时或错误的部分,作为入门的好起点。开源维护者乔丹·哈班德在问答中解释,新手往往更能发现现有文档的问题或缺少文档的领域,因为他们还不是特定项目的专家。“我写的任何文档不可避免地会被我对它如何工作的已知知识所影响。”他说。
同样,阅读和回应他人的疑问能加深你的理解,结识维护者,了解项目的构建流程。“这让你对项目有了透视般的洞察力。”萨鲁菲姆说。
即使你已经过渡到代码贡献,也有充分的理由继续从事非代码工作。“如果你不想永远从事非代码任务,那就别这样做。”萨鲁菲姆说,“但PyTorch许多最好、最高效的工程师也在支持工作中活跃。”提供支持帮助维护者了解用户在哪里遇到困难,以及用户真正想要和需要哪些功能,从而开发更好的软件。
持续的社区参与是比一次性代码贡献更好地在开源领域建立声誉的方式,而且通常有更多的长期机会通过非编码任务来帮