无论您是编程新手、经验丰富的资深人士,还是根本不是工程师,除了编码之外,还有许多方法可以为开源项目做出贡献。
与专有软件相比,开源项目在非工程方面的贡献方面往往人手不足,因此不要仅仅因为您不是程序员而回避开源。对于合适的项目来说,您的博客文章或设计技能可能比仅仅一行代码更有意义。
因此,这里有一些您可以立即开始做的、为开源做贡献的简单方法。
倡导
开始贡献的最简单方法是成为开源技术的优秀用户。
这意味着使用开源应用程序,并在您有选择时选择开源软件(或者至少尝试一下)。例如,当您所在组织正在考虑是否使用专有应用程序来解决问题时,请考虑研究和倡导开源替代方案。
与 SaaS(软件即服务)不同,开源软件可安装在您自己的服务器(或您公司的数据中心)上。隐私、安全和可定制性通常是开源解决方案的关键优势。
在 Google 上搜索“X 的开源替代方案”是找到很棒的项目的绝佳方式,例如 Rocket.Chat(团队聊天)、Wekan(类似 Trello 的看板工具)、Etherpad 和 Hackpad(协作文本编辑)、EtherCalc(协作电子表格)、HackerSlides(协作幻灯片)、Piwik(Google Analytics 替代方案)、Ghost(博客应用程序)等等。
查找这些应用程序列表的好地方包括列表网站、一键安装列表和热门博客文章,例如
- 替代方案
- OSAlt
- OpensourceAlternative.org
- Sandstorm 应用市场
- Digital Ocean 的安装列表
- Google Drive 的 5 个开源 Web 应用替代方案
- Slack 的 5 个开源替代方案
说到博客文章,您可以自己撰写一篇这样的博客文章... 当然是为了倡导开源软件!
教育
专有软件公司通常有专门的营销团队来吸引更多用户,但您最喜欢的开源项目有更好的东西:您!
教育他人了解您最喜欢的开源项目为何重要。这可以是任何事情,从撰写一篇关于您如何使用特定的开源应用程序完成工作的“生活技巧”风格的博客文章,到在您当地的黑客空间就您最喜欢的项目进行快速演讲。您甚至可以撰写一篇关于类似开源应用程序优缺点的评论,如 John Light 的 Slack 的 5 个开源替代方案 中所示。
当您撰写博客文章或就您最喜欢的开源应用程序发表演讲时,您将从个人经验坦诚地发言。如果我在听您讲话,我肯定会相信您独立的博客文章评论,而不是由一位油嘴滑舌的营销专业人士制作的广告。
我最喜欢的一些例子
- Jack Singleton 的 演讲,HackerSlides 的作者和 SandForms 的首席开发人员,在 Chaos Communication Camp 上关于 Sandstorm 的演讲。他还组织了在 Digital Rights in Libraries Conference 上的 Sandstorm 展位。
- Oli Evans 的 演讲,关于在 LXJS 上使用 Meteor 编写应用程序的演讲。
- Audrey Tang 的 演讲,EtherCalc 的作者(以及 更多),关于开源启蒙(与 Allison Randal 合著)阐明了自由软件运动的哲学和社会原则。她还将 Sandstorm 演讲者工具包翻译成中文。
翻译
有时,当您的主要语言不是英语时,为开源做贡献可能具有挑战性,但这也可以是非常宝贵的资产。翻译(或国际化/本地化)是一项非常有价值的贡献,它可以为更多的用户群开放软件。
例如,Wekan 用户 将 Wekan 中的字符串翻译成 17 种其他语言。Audrey Tang 将 Intro-to-Sandstorm 幻灯片翻译成中文。
Sacha Greif,《Discover Meteor》(我最喜欢的 Meteor 教材)的合著者,启动了一个他的书(最初以英文出版)的 开源翻译项目。这是一个大规模的翻译项目,有 200 多位贡献者将其翻译成 32 种不同的语言。
当然,并非每个项目都设置为容易接受翻译贡献,因此最好的办法是找到并询问作者或维护者。尝试查找邮件列表或 Google 网上论坛。如果他们没有,直接询问作者也没关系。
并非所有开源软件用户都是只懂英语的单语使用者。我住在美国,注意到很容易理所当然地认为只懂英语的单语使用者的体验是默认的,但人类体验比这更广泛、更多样化。通过翻译帮助开源项目是一种非常有益的贡献方式,因为您可以让世界上更多的人能够使用您最喜欢的开源项目。如果您精通多种语言,翻译是做出贡献的好方法。
设计图形
如果您有设计技能,您可以帮助许多需要帮助的项目。有时,注重后端的开发人员需要一些帮助,使其图标和其他图形在视觉上更具吸引力,并准确地传达应用程序的用途。
Open Source Design (OSD) 拥有 这个职位公告板,用于协调设计师和开源项目(由 Jan Borchardt 启动)。想帮忙吗?与您附近的设计师分享这个公告板。(并感谢 Simon Vansintjan 将 OSD 引起 Sandstorm 社区的注意。)

我还想向我近距离欣赏到的一些开源设计工作致敬。我真的很喜欢 Karen Rustad Tölva(AeroFS 的首席用户体验工程师)为 Rust 制作的这款令人惊叹的 Rustacean T 恤,以及她为 OpenHatch 制作的企鹅吉祥物。另外,请查看 Cap'n Proto(序列化协议)的徽标,该徽标由 Amy Wibowo(前 Airbnb 工程师,《Bubble Sort: CS zines》的作者)贡献。我真的很喜欢 Sandstorm 的 Nena Nguyen 为开源 Web 应用程序作者制作的精美图标。

改进用户体验和报告错误
专有软件公司通常有专门的专业人员从事 UI/UX(用户界面和设计)和 QA(质量保证)工作,但您最喜欢的开源项目可能需要在这些领域得到您的帮助。即使您认为自己是新手用户,积极报告从错误和边缘案例到 UI/UX 问题(例如按钮位置不方便或命名令人困惑)的问题也真的很有帮助。花了很多时间查看某些内容的专家永远无法真正以全新的眼光看待它,因为他们无法忘记他们已经知道的东西,这就是为什么您的新视角如此有价值。
如果某些东西在您看来很奇怪,核心开发人员可能真的没有意识到。原因如下:
- 您可能正在使用不同的浏览器、操作系统,或者有不同的使用习惯,这与核心开发人员不同。
- 他们可能经常遇到特定的信息量不足的错误消息(或不直观的用户界面),以至于不再感到困惑。
- 您可能和 全球数千万人 一样患有部分色盲,但主要作者不是,因此您从字面上看到的东西不同。
如果您可以包含屏幕截图和重现错误的步骤,这对修复错误的人员非常有帮助。事实证明,即使是小的修复也可以使软件对每个人都更加可用,因为每个人都喜欢更大、更易读的字体、舒适的对比度和直观的用户界面。
例如,在 Sandstorm 社区中,在应用程序作者将应用程序提交到应用市场之前,他们通常会通过电子邮件将他们新的 Sandstorm 软件包和源代码链接发送到 sandstorm-dev 邮件列表,以便社区可以试用它并报告他们遇到的错误并提供 UI 反馈。我非常感谢列表中尝试新应用程序并提供反馈的每个人,但我尤其感谢 Nolan Darilek,他由于视力障碍而使用屏幕阅读器,并且就屏幕阅读器如何感知 Sandstorm 应用程序以及核心本身提供了许多非常有价值的可用性反馈。谢谢您,Nolan。
组织聚会
聚会是开源社区成员相互学习、结交朋友和寻找合作者的好方法。如果已经有您最喜欢的开源项目的用户组,您应该加入它并主动协助其他聚会组织者。
如果还没有,那就自己创建一个!与核心团队协调不是运行聚会的必要条件,但对于许多项目来说,如果您联系社区团队中的某个人,他们很可能会很乐意帮助您入门。在其他条件相同的情况下,考虑使用 Meetup.com 来组织您的聚会小组,因为有相关兴趣的人更容易找到您的小组。(查看 Asheesh Laroia 的这篇 Python 用户组运行指南。如果您有兴趣结识其他使用 Sandstorm 的人,您可以 开始或参加 Sandstorm 聚会。)
从小处开始是可以的。我参加过一些少于 10 个人在咖啡馆或餐厅举行的聚会,舒适的氛围让我很容易真正了解每个与会者。我也参加过一些基本上是会议,但名称不是会议的聚会。聚会的规模可能相差很大(毕竟,有些城市的人均书呆子比其他城市多),但与会者人数远不如营造热情和包容的氛围、设定定期节奏(每月一次就很好),以便与会者可以方便地将其安排在日历中,并在活动开始前至少 10 天宣布活动重要。如果您有场地但忘记宣布,错过一个月也没关系。只需提前 40 天安排下一次活动,以便人们在访问您的聚会页面时可以回复。
如果已经有一个聚会小组,您可以主动协助其他聚会组织者。根据我的经验,运行最好的聚会小组总是有一个以上的组织者来分担责任,尤其是在组织者可能很忙的情况下。
有很多方法可以帮助聚会成功。以下是一些可能会让您感到惊讶的方法:
- 向组织者提供场地。 如果您在工作,您的雇主很可能会在晚上向您的聚会小组提供会议室或活动空间,甚至可能提供一些饮料和小吃。同样,如果您是大学生或黑客空间的成员。
- 寻找食品/饮料赞助商。 招聘部门对聚会小组尤其慷慨。
- 记住总是有新的初学者。 如果您决定为每次聚会做不同的主题,那么偶尔做一个对初学者友好的主题,并向有相关兴趣的聚会小组发出提醒通常是个好主意。
- 访问其他类似的小组,发表演讲,并邀请他们。 例如,在 MongoDB 聚会上就您的 Meteor 应用程序进行快速演讲,因为您的 Meteor 应用程序默认情况下可能正在使用 MongoDB,并在您的演讲结束时提及即将到来的本地 Meteor 聚会。
我想重点介绍 Deb Nicholson 完成的出色的社区组织工作,例如首届 SpinachCon。她还因其众多贡献而获得了 O'Reilly 开源奖。我也非常感谢每月不知疲倦地组织 Meteor 聚会的数百名聚会组织者。我尤其感谢 Tableflip.io 的 Oli Evans 和 Alan Shaw,他们的 Meteor 聚会小组是第一个发展成为 Meteor Devshop 分支的聚会小组,Meteor Devshop 是 Meteor 社区的官方分布式迷你会议。由于他们的组织努力,两位在聚会上发表演讲的与会者最终加入了 Tableflip 团队。
改进知识库(文档、教程、问答等)
有时,在聚会上有人会告诉我,他们被一个问题卡住了,到处搜索都没有找到答案,要么放弃了,要么实现了一些完全是黑客式的解决方法。我会问他们是否在 Stack Overflow 上发布了问题,他们通常会说,他们从来没有想到要发布问题,或者他们因为提出一个愚蠢的问题而感到尴尬。
改进公共知识库是为代码之外的开源项目做出贡献的绝佳方式。这包括不需要任何人批准的事情,例如在 Stack Overflow 或邮件列表上提出问题,或者制作关于您所学内容的博客文章或视频,并将教程链接发送到邮件列表。如果您学到新的核心概念并且可以接受协调审核流程,或者如果您发现小的错误(例如链接丢失或拼写错误),您应该向官方文档提交建议的编辑。
知识对于相对较新接触项目的人来说尤其有用,他们仍然可以记住他们作为初学者的心态,同时找到方向。如果您能想到更清晰的方式来解释某些事情,那真是一种很棒的贡献方式!我很可能会阅读、收藏和分享您的教程博客文章或视频。我读过、收藏过或分享过的一些最好的教育资源都是从一篇博客文章开始的。例如,今天,《Discover Meteor》教材和《Evented Mind》视频系列是 Meteor 生态系统中最受欢迎的教育资源。
如果您遇到困难,请不要不好意思提问。就我个人而言,我不相信有愚蠢的问题。每个人,尤其是专家和资深人士,都要经历从不知到知的过程。您可能是 今天的 10,000 个幸运儿之一。从专家脑海中查询信息的最佳方法是询问他们,并且每次您询问,答案都会记录在某个地方,每个人,而不仅仅是您,都可以看到答案。而那些不是核心开发人员的专家有机会分享他们的知识。也许,某个比您更胆怯或不太精通您的语言的人会非常感激和欣慰,因为您已经提出了问题。
此外,改进知识库还具有改进项目入门流程的绝妙副作用,使更多人更容易做出贡献。任何使贡献更容易的事情都特别有影响力,因为它意味着更多的人手。
招募更多人手
以上建议只是代码贡献之外为开源项目做出贡献的无数种方式中的一小部分,绝不是详尽的列表。有关如何培养更具鼓励性的开源社区的更多阅读材料,我推荐 Audrey Tang 的 从开源社区中学到的教训。
专有/封闭软件通常有整个团队的人员从事 QA、设计、文档、推广、招聘、入职以及工程以外的每个可以想象到的角色。但是,由于工程师倾向于向其他工程师传播信息,而不是向其他人传播信息,因此许多开源社区往往在非工程技能方面人手不足,例如设计和社区组织。
因此,让我们通过 1) 获得更多人手,2) 让每个人(从临时用户到核心贡献者)参与到代码以外的更多方面,以及 3) 营造欢迎所有贡献(而不仅仅是代码贡献)的氛围,共同解决人手不足的问题。通过在设计聚会上进行快速演讲,或联系朋友和熟人,在工程密集型圈子之外的场所宣传您最喜欢的开源项目。
如果您是一个项目的核心团队成员,请务必感谢和承认所有贡献者,而不仅仅是代码贡献者。试想一下,如果潜在的贡献者知道他们的帮助受到了多大的赞赏,那么您的项目会因为更多随机的小错误被报告和修复,以及改进的图形和用户界面而变得更加完善。
如果您与一位拥有像素/人员/散文/其他技能的朋友分享这篇博客文章,并将他们介绍给可以利用他们帮助的开源项目,或者在工作中向您的同事倡导使用开源软件,那么您就做了一件了不起的事情。为此,谢谢您。
9 条评论