无论您是编程新手、经验丰富的专家,还是根本不是工程师,除了编写代码之外,还有很多方法可以为开源项目做出贡献。
与专有软件相比,开源项目在非工程方面的贡献往往相对不足,因此不要因为您不是程序员而回避开源。 与仅仅增加一行代码相比,您的博客文章或设计技能对正确的项目可能更有意义。
因此,这里有一些您可以立即参与的为开源做贡献的简单方法。
倡导
开始贡献的最简单方法是成为开源技术的忠实用户。
这意味着使用开源应用程序并在您有选择的情况下选择开源软件(或者至少尝试一下)。例如,当您所在组织正在考虑是否使用专有应用程序来解决问题时,请考虑研究和倡导开源替代方案。
与 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 的5 个 Slack 开源替代品中看到的那样,撰写一篇关于类似开源应用程序优缺点的评论。
当您撰写博客文章或就您最喜欢的开源应用程序发表演讲时,您将坦率地根据个人经验发言。 如果我在听您说话,我肯定会更信任您独立的博客文章评论,而不是由圆滑的营销专业人士制作的广告。
我最喜欢的一些例子
- Jack Singleton 的 演讲,HackerSlides 的作者和 SandForms 的主要开发人员,关于在 Chaos Communication Camp 上的 Sandstorm。 他还在图书馆数字权利会议上组织了一个 Sandstorm 展位。
- Oli Evans 的 演讲,关于在 LXJS 上使用 Meteor 编写应用程序。
- Audrey Tang 的 演讲,EtherCalc 的作者(和 更多),关于开源启蒙运动(与 Allison Randal 共同撰写),阐明了自由软件运动的哲学和社会原则。 她还将 Sandstorm 演讲者工具包翻译成中文。
翻译
有时,当您的主要语言不是英语时,为开源做出贡献可能具有挑战性,但这也可能是一项非常有价值的资产。 翻译(或国际化/本地化)是一项非常有价值的贡献,可以将软件开放给更大的用户群。
例如,Wekan 用户 将 Wekan 中的字符串翻译成其他 17 种语言。 Audrey Tang 将 Sandstorm 入门幻灯片翻译成中文。
Sacha Greif,Discover Meteor(我最喜欢的 Meteor 教科书)的合著者,启动了他的书籍的 开源翻译项目(最初以英语出版)。 这是一个大规模的翻译项目,有 200 多位贡献者翻译成 32 种不同的语言。
当然,并非每个项目都设置为轻松接受翻译贡献,因此最好的办法是找到并询问作者或维护者。 尝试查找邮件列表或 Google 网上论坛。 如果他们没有,可以直接询问作者。
并非所有开源软件用户都是只会说英语的母语人士。 我住在美国,并且注意到人们很容易理所当然地认为只会说英语的母语人士的体验,并将其视为默认设置,但人类的体验比这更广泛和多样化。 通过翻译帮助开源项目是一种非常有用的贡献方式,因为它使世界上更多的人可以使用您最喜欢的开源项目。 如果您精通多种语言,翻译是一种很好的贡献方式。
设计图形
如果您有设计技能,您可以帮助许多需要帮助的项目。 有时,注重后端的开发人员需要一些帮助,使其图标和其他图形具有视觉吸引力,并准确传达应用程序的用途。
开源设计 (OSD) 有 这个招聘板来协调设计师和开源项目(由 Jan Borchardt 启动)。 想要帮忙? 与您附近的设计师分享这个版块。 (感谢 Simon Vansintjan 将 OSD 提请 Sandstorm 社区注意。)

我还想对一些我亲身欣赏过的开源设计工作表示敬意。 我真的很喜欢 Karen Rustad Tölva(AeroFS 的首席 UX 工程师)为 Rust 制作的这款令人惊叹的 Rustacean T 恤,以及她为 OpenHatch 制作的企鹅吉祥物。 另外,请查看 Cap'n Proto(序列化协议)的徽标,该徽标由 Amy Wibowo(前 Airbnb 工程师,Bubble Sort 的作者:CS zines)。 而且我真的很喜欢 Nena Nguyen 在 Sandstorm 一直为开源 Web 应用程序作者制作的精美图标。

改善用户体验和报告错误
专有软件公司通常有专门的专业人员从事 UI/UX(用户界面和设计)和 QA(质量保证)工作,但您最喜欢的开源项目可能需要您在这些方面的帮助。 即使您认为自己是新手用户,主动报告从错误和边缘案例到 UI/UX 问题的各种问题确实很有帮助,例如按钮的位置不方便或命名令人困惑。 花费大量时间查看某些内容的专家永远无法真正用新鲜的眼光看待它,因为他们无法忘记他们已经知道的东西,这就是为什么您新鲜的视角如此有价值。
如果某些东西对您来说看起来很奇怪,核心开发人员可能真的不知道。 原因如下
- 您可能正在使用与核心开发人员不同的浏览器、操作系统或有不同的使用习惯。
- 他们可能经常遇到特定的不含信息的错误消息(或不直观的用户界面),因此不再感到困惑。
- 您可能与 全球数千万人一样,患有部分色盲,但主要作者没有,因此您实际上看到的东西不同。
如果您可以包含屏幕截图和重现错误的步骤,这对修复错误的人来说非常有帮助。 事实证明,即使是很小的修复也可以使软件对每个人来说都更易于使用,因为每个人都喜欢更大更易读的类型、舒适的对比度和直观的用户界面。
例如,在 Sandstorm 社区中,在应用程序作者将应用程序提交到 App Market 之前,他们通常会通过电子邮件将他们新的 Sandstorm 软件包以及指向源代码的链接发送到 sandstorm-dev 邮件列表,以便社区可以尝试并报告他们遇到的错误并提供 UI 反馈。 我非常感谢列表中的每个人尝试新应用程序并提供反馈,但我特别感谢 Nolan Darilek,他由于视力障碍而使用屏幕阅读器,并就屏幕阅读器如何感知 Sandstorm 应用程序以及核心本身提供了许多非常有价值的可用性反馈。 谢谢你,Nolan。
组织聚会
线下聚会是开源社区成员相互学习、结交朋友和寻找合作者的绝佳方式。 如果你喜爱的开源项目已经有用户组,你应该加入并主动协助其他聚会组织者。
如果还没有,那就自己创建一个! 组织聚会不需要和核心团队协调,但是对于许多项目来说,如果你联系社区团队的成员,他们很可能会很乐意帮助你入门。 在其他条件相同的情况下,可以考虑使用 Meetup.com 来组织你的聚会小组,因为它更容易让有相关兴趣的人找到你的小组。(查看这份 Python 用户组运营指南,作者是 Asheesh Laroia。 如果你对与其他 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 团队。
改进知识库(文档、教程、问答等)。
有时,在聚会上有人会告诉我,他们遇到了一个问题,四处搜索但没有找到答案,要么放弃了,要么实现了一些完全是 hack 的解决方法。 我会问他们是否在 Stack Overflow 上发布了这个问题,他们通常会说,他们从来没有想到要发布它,或者他们因为提出一个愚蠢的问题而感到难堪。
改进公共知识库是一种非常好的为开源项目做出贡献的方式,不仅仅是代码。 这包括不需要任何人批准的事情,例如在 Stack Overflow 或邮件列表中提问,或者发布关于你所学到的知识的博客文章或视频,并将教程的链接发送到邮件列表中。 如果你学到了一个新的核心概念,并且可以接受协调审查过程,或者如果你发现了一些小的错误,例如缺少链接或拼写错误,你应该向官方文档提交建议的编辑。
来自对项目相对较新的人的知识尤其有用,他们仍然记得自己入门时的状态,并能顺利上手。 如果你能想到一种更清晰的方式来解释一些事情,那是一种非常好的贡献方式! 我可能会阅读、收藏和分享你的教程博客文章或视频。 我读过、收藏或分享的一些最好的教育资源都是从一篇博客文章开始的。 例如,如今,Discover Meteor 教材和 Evented Mind 视频系列是 Meteor 生态系统中最受欢迎的教育资源。
如果你遇到了困难,不要不好意思提问。 就我个人而言,我不相信有愚蠢的问题。 每个人,尤其是专家和资深人士,都会经历从不懂到懂的过程。 你可能是 今天幸运的 10,000 人中的一个。 从专家那里获取信息的最好方法是向他们提问,并且每次你提问,答案都会被记录在某个地方,这样每个人,而不仅仅是你,都能看到答案。 那些不是核心开发人员的专家也有机会分享他们的知识。 也许,比你更胆小或不太流利你的语言的人会非常感激和欣慰你已经提出了这个问题。
此外,改进知识库还有一个绝妙的副作用,即改进项目的入门流程,使更多的人更容易做出贡献。 任何使贡献更容易的事情都特别有影响力,因为它意味着更多的人手。
招募更多的人手
以上建议仅仅是在代码贡献之外为开源项目做出贡献的无数种方式中的一小部分,绝不是一个详尽的列表。 要进一步阅读关于如何培养一个更具鼓励性的开源社区,我推荐 Audrey Tang 的从开源社区中吸取的教训。
专有/封闭软件通常有整个团队的人员从事 QA、设计、文档、推广、招聘、入门以及工程之外的每一种可以想象的角色。 但是由于工程师倾向于向其他工程师传播信息,而不是向其他人传播信息,因此许多开源社区往往在非工程技能方面相对人手不足,例如设计和社区组织。
因此,让我们一起解决这个人手不足的问题,方法是:1)招募更多的人手,2)让每个人(从普通用户到核心贡献者)参与到代码之外的更多事情中,3)培养一个欢迎的氛围,重视所有的贡献,而不仅仅是代码贡献。 通过在设计聚会上做一个闪电演讲,或者联系朋友和熟人,在工程密集型圈子之外的场所推广你最喜欢的开源项目。
如果你是一个项目的核心团队成员,一定要感谢和认可所有的贡献者,而不仅仅是代码贡献者。 试想一下,如果那些潜在的贡献者知道他们的帮助受到如此高度的赞赏,你的项目会因为更多随机的小 bug 被报告和修复、以及改进的图形和 UI 而变得更加完美。
如果你把这篇博客文章分享给一位拥有像素/人/散文/其他技能的朋友,并向他们介绍一个可以使用他们的帮助的开源项目,或者在工作中向你的同事倡导使用开源软件,那么你已经做了一件非凡的事情。 为此,感谢你。
9 条评论