无论您是编程新手、经验丰富的专家,还是根本不是工程师,除了编码之外,还有许多方法可以为开源项目做出贡献。
与专有软件相比,开源项目在非工程方面的贡献往往相对不足,因此不要因为您不是程序员而回避开源。对于合适的项目来说,您的博客文章或设计技能可能比仅仅一行代码更有意义。
因此,这里有一些您可以立即为开源做出贡献的简单方法。
倡导
开始贡献的最简单方法是成为开源技术的优秀用户。
这意味着使用开源应用程序,并在您有选择时选择开源软件(或者至少尝试一下)。例如,当您工作的组织正在考虑是否使用专有应用程序来解决问题时,请考虑研究和倡导开源替代方案。
与 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。他还组织了在数字图书馆权利会议上的 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 Group。如果他们没有,直接询问作者也没关系。
并非所有开源软件用户都是只会说英语的单语使用者。我住在美国,注意到很容易将只会说英语的单语使用者的体验视为理所当然并接受为默认设置,但人类体验比这更广泛、更多样化。帮助开源项目进行翻译是一种非常有用的贡献方式,因为您可以让世界上更多的人能够使用您最喜欢的开源项目。如果您精通多种语言,翻译是一种很好的贡献方式。
设计图形
如果您有设计技能,您可以帮助许多需要帮助的项目。有时,注重后端的开发人员需要一些帮助,使其图标和其他图形在视觉上更具吸引力,并准确传达应用程序的用途。
开源设计 (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》的作者)贡献。我真的很喜欢 Nena Nguyen 在 Sandstorm 为开源 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 生态系统中最受欢迎的教育资源。
如果你遇到了困难,不要不好意思提问。就我个人而言,我不认为有愚蠢的问题。每个人,特别是专家和资深人士,都经历了从不知到知的过程。你可能是 今天幸运的 10000 人之一。从专家头脑中查询信息的最佳方式是向他们提问,而且每次你提问,答案都会被记录在某个地方,这样每个人,而不仅仅是你,都能看到答案。那些不是核心开发者的专家也有机会分享他们的知识。也许,某个比你更胆怯或语言不太流利的人会非常感激和欣慰,因为你已经问了这个问题。
此外,改进知识库还有一个极好的副作用,那就是改进项目的入门流程,使更多人更容易做出贡献。任何使贡献更容易的事情都特别有影响力,因为它意味着更多人手。
招募更多人手
以上建议只是在代码贡献之外为开源项目做贡献的无数种方式中的几种,绝不是一个详尽的列表。要进一步阅读关于如何培养更鼓励人的开源社区,我推荐 Audrey Tang 的 我从开源社区中学到的教训。
专有/闭源软件通常有整个团队的人员负责 QA、设计、文档、推广、招聘、入职以及工程之外的各种可以想象到的角色。但是,由于工程师倾向于向其他工程师传播信息,而不是向其他人传播,许多开源社区往往在非工程技能方面人手不足,例如设计和社区组织。
因此,让我们一起解决人手不足的问题,方法是:1) 招募更多人手,2) 让每个人(从普通用户到核心贡献者)在代码之外做出更多贡献,以及 3) 营造一个欢迎的氛围,赞赏所有贡献,而不仅仅是代码贡献。通过在设计聚会上进行闪电演讲,或联系朋友和熟人,在工程技术圈之外的场所推广你最喜欢的开源项目。
如果你是一个项目的核心团队成员,请务必感谢和承认所有贡献者,而不仅仅是代码贡献者。试想一下,如果潜在的贡献者知道他们的帮助有多么受重视,你的项目会因为更多随机的小错误被报告和修复,以及改进的图形和 UI 而变得更加完善。
如果你将这篇博客文章分享给一位拥有像素/人员/文字/或其他技能的朋友,并将他们介绍给一个可以利用他们帮助的开源项目,或者在工作中向你的同事倡导使用开源软件,那么你已经做了一些了不起的事情。为此,谢谢你。
9 条评论