如何在参与开源项目的同时提升技术技能

还没有读者喜欢这篇文章。
Get started with open source, orange flames

Opensource.com

尽管有些人认为开源项目只需要程序员——而且是经验丰富的程序员——但开源项目的需求不仅仅是编写代码的能力。它们还需要测试、技术支持、文档编写、市场营销等等。参与项目也是提升技术技能和与志同道合的人建立联系的好方法。参与开源项目的一个障碍是不了解如何加入和入门。在本文中,我将解释如何开始为开源项目做贡献。

Con Kolivas,一位澳大利亚麻醉师,为 Linux 内核开发了他自己的任务调度器,因为现有的调度器是为服务器适配的,在用户任务方面表现不佳。Alexey Kuznetsov,一位理论物理学家,成为了一名 Linux 黑客和系统程序员。Peter Semiletov,一位 IT 记者,十年来一直在开发他的开源文本编辑器 TEA。Lesya Novaselskaya,一位学习成为验尸官的人,现在参与 测试一个开源项目。像这样通过追求他们在开源项目中的兴趣而团结在一起,同时获得经验和乐趣的个人例子还有很多。

编写新代码

您不必成为专家才能开始从事项目。如果您了解项目中使用的编程语言,请创建一个新功能并将其提供给项目团队。有些项目对新手比较友好,有些则不然。新手友好型项目中的开发者,无论是资深人士还是其他人,都可以帮助您理顺代码。无论如何,如果您的代码可以帮助其他人,您的贡献就不会被忽视。

每个项目都有特定的内部流程,您需要在开始贡献之前熟悉这些流程。例如,在 PostgreSQL 中,所有流程都受到严格监管;代码更改以补丁的形式发送给所有主要开发者进行彻底研究。其他项目,如 Parrot,允许提交到主分支。如果项目使用 GitHub,则可能涉及到 pull request。换句话说,请记住,没有两个项目是相同的。

每次您更改代码时,请记住您是团队的一份子,并尽力使您的编码风格符合项目中采用的风格。您添加或编辑的代码部分不得与其余部分格格不入。您可能有自己的代码风格偏好,但您提交的内容必须遵循通用规则。否则,就像在说,“我不喜欢你的风格。我的更好,所以按我的方式做。”

优先处理缺陷

毫无疑问,代码是任何项目的基础;但是,编写代码并不是您可以参与的唯一事情。技术支持常常被忽视,因为每个人都专注于添加新功能和修复错误。但是,技术支持是新贡献者入门的好地方。

例如,OpenVZ 在 bugs.openvz.org 上有一个完全开放的错误跟踪器。错误跟踪器收集了这个近十年的项目曾经拥有的所有已知问题——已修复和未修复。错误跟踪器是建立开发者和用户之间沟通的一种方式。持续处理当前请求提供了很好的贡献机会。请记住,您可能需要项目经理提供的某些访问权限(通常基于功绩授予)。

测试中间版本

有兴趣从事开源软件的测试人员可能不知道从哪里开始。而且大多数开源项目,无论是否商业化,通常都缺少足够的测试人员。查找和整理错误可以节省开发者定位问题的时间。

如果用户评论说“当我执行这些步骤时,软件无法工作”,测试人员可以检查问题及其发生原因,然后再将其发送给开发者。测试人员确定问题是否可重现(以及所需的步骤),以及在特定环境中是什么触发了该行为。即使您不知道错误背后的实际原因,努力缩小可能原因的列表也可能极大地帮助修复它。无论您作为测试人员设法找到什么细节,都将其添加到错误中,以便所有人都能看到。

以我的经验,开源项目通常缺乏充分测试新功能的资源。因此,在将任何重大更改引入主分支之前,项目会尝试通过发布测试号召来尽可能多地 привлечь 测试人员。没有任何项目的硬件或软件配置数量能与整个社区可用的数量相匹敌。因此,例如 OpenBSDOpenVZ 会宣布新功能并请求帮助测试它们。

您可以帮助开发者测试软件在不同平台上的工作情况。如果您使用某种非标准硬件,您的反馈将更有价值。如果您确认构建即使在这样的环境中也能正常工作,那么您就可以让项目经理更容易评估项目的当前发布状态。

创建测试

大多数项目都使用软件套件进行代码测试,这些套件通常允许添加自定义测试。使用像 LCOV 这样的 C 语言工具来定位源代码中无法通过预设测试检查的部分。然后创建自定义测试以覆盖这些代码部分。

修复错误并添加功能

包含错误修复或新功能的补丁是将人们引入开源项目的经典方式。Odin 首席技术官 James Bottomley 也建议那些愿意但不知道如何加入 Linux 项目的人修复错误并添加功能。例如,他通常引用一个案例,即他需要的 Android SIP 客户端缺少功能,因此他 创建了一个补丁 并将其发送到 SIPdroid 项目。

当您创建新功能时,为您更改的代码添加测试也是很好的。有些项目要求所有错误修复都附带测试。在您研究未知代码时做笔记。即使您无法修复错误,也要在工单中描述您发现的内容。这样做将有助于那些在您之后处理错误的人。

帮助维护项目基础设施

您对 DevOps 感兴趣吗?优秀的 DevOps 工程师很难找到(我可以根据自己的经验说)。DevOps 工程师可以在开放基础设施开发的项目中提高他们的技能,例如 WikipediaFedora 项目。OpenVZ 也正在朝着这个方向 发展。为项目组件设置持续集成,为 Linux 发行版创建组件 软件包,以及自动配置开发者环境都是 DevOps 任务。

编写和本地化文档

维护文档是任何项目中经常被忽视的重要组成部分。而且,文档通常是从已经熟悉软件的人的角度编写的,而不是从新用户或新手的角度编写的。阅读此类文档,您可能会觉得您应该已经知道软件是如何工作的。通常,新用户的角度会发现项目贡献者未注意到的当前文档中的缺点。此外,快速发展的项目中的文档很快就会过时,因此需要定期更新。

认为文档不重要是一个错误。对开源项目的所有贡献都很重要。例如,OpenBSD 开发者 Ingo Schwarze 也曾在 CERN 工作,他创建了 mandoc,现在它不仅用于格式化 OpenBSD 中的手册页,还用于 FreeBSD、NetBSD 和 DragonFlyBSD。他还整理了项目中现有手册页的格式。(有关更多详细信息,请阅读他的 BSDCan 2015 演讲 (PDF)。)因此,如果您有兴趣为项目做一些重要的事情,请帮助改进其文档。

帮助社区成员

为了使项目发展,回答问题,特别是来自新用户的问题,至关重要。即使答案已经在文档中,花费在这方面的时间也不会浪费。结果,您可能会得到一位感激的新活跃贡献者。每个人都必须从某个地方开始,任何项目都需要人员流入才能前进。

推广项目

如果您有博客,请分享您在开源项目中的经验故事。告诉您的读者您在使用开源软件时遇到的问题以及您如何解决这些问题。这样,您将一石二鸟:您吸引了人们对该项目的关注,并且您为未来的贡献者创建了一个知识库。描述您的技术成就、研究和专业知识的博客也是分享在为项目做贡献时获得的实际经验以及您找到的技术问题解决方案(如果您正在寻找新的工作机会,这可能会很有用)的好方法。许多项目都采用了贡献者博客文章聚合器,通常称为行星,包括

即使作者没有正式为项目做贡献,来自爱好者的帖子也可能很有趣。

创建设计

设计是许多开源项目惨败的地方。乏味的网站和平淡的徽标困扰着项目,仅仅是因为贡献者专注于项目应该如何工作,而不是它应该如何看起来。因此,欢迎设计师的投入。StackExchange 社区的成员试图回答诸如“平面设计师如何为开源项目做贡献?”和“如何激励平面设计师加入开源项目?”等问题,但他们的观点存在分歧。

结论

如果您想为开源项目做贡献,请寻找您感兴趣有助于改进项目的任务。贡献过程因项目而异,因此您可能需要首先阅读专门介绍如何帮助潜在贡献者加入的页面,例如

项目有这样的页面意味着它对贡献持开放态度。

标签
User profile image.
https://bronevichok.ru/

评论已关闭。

© . All rights reserved.