参与你最喜爱的开源项目的 13 种方式

应用 GET/SET 原则来与开源项目建立联系。
49 位读者喜欢这篇文章。
Looking at a map for career journey

opensource.com

我的 博客 的许多读者已经对开源了解很多,但我也意识到许多人对此知之甚少,甚至一无所知。 我是开源软件(以及更广泛的开源硬件)的忠实拥护者,并且有很多很棒的资源可以找到以了解更多信息。

一个非常好的起点就是您现在正在阅读的 Opensource.com。 它由一群杰出的人士为更广泛的社区而运营,由我目前的雇主 Red Hat 运营。(我应该补充一个免责声明,我不仅受雇于 Red Hat,而且还是 Opensource.com 的 通讯员——一种经常投稿者/资深人士。)它拥有关于您可以想象到的几乎开源各个方面的文章。

我今天在思考 API(它们正在新闻中,因为我正在撰写本文,在美国最高法院对谷歌和 Oracle 之间的争论做出判决之后),我突然想到,如果我有兴趣了解如何在项目级别与开源互动,但对此知之甚少,那么快速指南可能会很有用。 如果我参与了一个开源项目(例如,Enarx),并且有兴趣吸引那些不了解开源的贡献者(尤其是技术贡献者),情况也是如此。

鉴于大多数程序员会理解 GET 和 SET 方法的作用(一个读取数据,另一个写入数据),我认为这可能是一个有用的框架来考虑参与。1 我将从 GET 开始,因为这很可能是您开始的方式——了解有关项目的更多信息——然后转向 SET 方法以参与开源项目。

这远非详尽的列表,但我希望我已经涵盖了您最有可能开始参与或鼓励他人参与的大多数关键方式。 我选择的顺序反映了我怀疑是一种相当典型的方法,特别是对于那些还不精通开源的人来说,正如他们所说,YMMV。3

我设法阻止自己仅使用 Enarx(我共同创立的)作为示例的唯一来源,并尝试找到各种项目来给您一个品尝。 免责声明:在此处包含它们并不意味着我是该项目的用户或贡献者,也不保证它们的开源凭证、代码质量、最新性、项目成熟度或社区健康。4

GET 方法

  • 着陆页:您与项目的第一次接触很可能是它的着陆页。 有些项目采用基本的方法,另一些项目应用更多的设计,但您应该能够将其用作您在项目周围冒险的起点。 您通常希望从着陆页找到指向下面列出的各种其他资源的链接。
  • Wiki:在许多情况下,项目将拥有一个 wiki。 这可能很简单,也可能很复杂。 它可能允许任何人编辑,或者只允许项目的一小部分贡献者编辑,并且它作为真理来源的相关性可能会受到其更新程度的影响。 尽管如此,wiki 通常是一个极好的起点。
  • 视频:一些项目维护一组关于其项目的视频。 这些可能包括概念介绍、与团队成员的访谈、会议会话、演示、操作指南等等。 还值得寻找项目贡献者发布但并非一定由项目官方拥有的视频。
  • 行为准则:许多项目坚持要求其项目成员遵守行为准则,以减少骚扰、减少摩擦,并总体上使项目成为一个友好、更具包容性和更多样化的地方。
  • 二进制下载:随着项目变得更加成熟,他们可能会选择为用户提供预编译的二进制下载。 技术倾向更强的用户可能会选择从代码库编译他们自己的二进制文件(见下文),但二进制下载可能是尝试项目并查看其是否满足您需求的快速方法。
  • 设计文档:如果没有设计文档,就很难真正深入到一个项目。(我之前写过 架构图的重要性。)此文档可能包括从 API 定义到复杂用例和威胁模型的所有内容。
  • 代码库:您已经找到了开始所需的一切:是时候查看代码了! 这可能从几行到数千行不等,包括注释中的文档或包括测试用例,但如果代码不存在,那么该项目就不能合法地称自己为开源。
  • 电子邮件/聊天:大多数项目都希望有一种方式让贡献者异步讨论问题。 首选媒介因项目而异,但大多数会选择电子邮件列表、聊天服务器或两者兼而有之。 这些地方是结识其他用户和贡献者、提出问题、庆祝编译成功以及只是闲逛的地方。
  • 聚会、视频会议、通话等:尽管目前面对面的会议对许多人来说都很棘手(我写这篇文章时 COVID-19 仍在减少旅行机会),但让社区成员和贡献者同步聚在一起的方式对每个人都非常有帮助。 有时这些是每天、每周或每月安排的;有时,它们与其他更大的聚会同时进行;有时,一个项目变得足够大,可以举办自己的聚会;有时,它太大了,以至于有子项目或内部兴趣小组的聚会。

PUT 方法

  • 错误报告:我们许多人第一次为开源项目做出实质性贡献是当我们提交错误报告时。 来自新用户的错误报告对项目非常有帮助,因为它们不仅暴露了项目可能还不知道的错误,而且还提供了有关项目实际用户如何尝试使用代码的线索。 如果项目已经发布了二进制下载(见上文),您甚至不需要编译代码即可尝试并提交错误报告。 但是,与编译和构建相关的错误报告也可能对项目非常有用。 有时,错误报告机制还提供了一种提出关于项目的更一般性问题或请求新功能的方式。
    • 请参阅 exals 命令的替代品)的问题页面。
  • 测试:一旦您开始使用该项目,另一种参与方式(尤其是在您开始贡献代码后)可能是为项目应该如何工作设计和提交测试。 这可能是一种很好的方式来揭示您对项目的假设(以及缺乏了解!)以及项目的设计假设(其中一些很可能存在缺陷)。 测试通常是代码存储库的一部分,但并非总是如此。
  • Wiki:无论您是否编码,wiki 都可以成为为项目做出贡献的好方法。 许多项目没有尽可能多的可用信息,并且这些信息可能并非针对“新鲜”来到项目的人。 如果这就是您所做的,那么您就处于撰写材料的有利位置,这将帮助其他“菜鸟”更快地进入项目,因为您会知道如果这些材料在那里,它们会对您有所帮助。
    • 请参阅 Wine(Linux 的 Windows 模拟器)的 wiki。
  • 代码: 最后但并非最不重要的一点是,您可以编写代码。 您可能需要花费数小时、数月或数年才能达到这个阶段——或者您可能永远无法达到——但开源软件没有代码就什么也不是。 如果您已经足够注意其他步骤,参与了社区,了解了项目的目标,并且拥有技术专长(您可能会在前进的过程中发展这些专长!),那么编写代码可能是您想要贡献的方式。
    • 请参阅 Enarx(再次)。

  1. 我确实考虑过标准的 RESTful 动词——GET、PUT、POST 和 DELETE——但这感觉相当牵强。2
  2. 而且我不喜欢在这种情况下使用 DELETE 的想法!
  3. “您的里程可能会有所不同”,基本上意味着,您的经验可能会有所不同,这是意料之中的。
  4. 话虽如此,我确实使用了其中的很多!
  5. 我包含这个是因为在过去的几个月中,我花了太多时间研究这个…

本文最初发表于 Alice, Eve, and Bob,并经作者许可转载。

接下来阅读
标签
User profile image.
自 1997 年左右以来,我一直身处开源领域,并且从那时起就一直在家庭和工作中使用 (GNU) Linux 作为我的主要桌面:并非总是容易...  我是一名安全专家和架构师,Enarx 项目的联合创始人,目前是一家初创公司的 CEO,该公司位于

评论已关闭。

© . All rights reserved.