为开源项目做出你的第一个贡献

万事开头难。
351 位读者喜欢这篇文章。
women programming

WOCinTech Chat。由 Opensource.com 修改。CC BY-SA 4.0

普遍存在一个误解,认为为开源做贡献是困难的。你可能会想,“有时我甚至看不懂自己的代码;我怎么可能看懂别人的代码呢?”

放轻松。直到去年,我也是这么想的。阅读和理解别人的代码,并在其基础上编写自己的代码可能是一项艰巨的任务,但有了正确的资源,它并不像你想象的那么难。

第一步是选择一个项目。这个决定对于将一个新手程序员转变为经验丰富的开源贡献者至关重要。

许多对开源感兴趣的业余程序员被建议去看看 Git,但这并不是最好的入门方式。Git 由拥有多年软件开发经验的超级极客维护。它是一个寻找开源项目并为其做贡献的好地方,但对初学者并不友好。大多数为 Git 贡献代码的开发者都有足够的经验,他们不需要资源或详细的文档。在本文中,我将提供一个初学者友好的功能清单和一些技巧,使你的第一次开源贡献变得容易。

理解产品

在为一个项目做贡献之前,你应该理解它是如何工作的。要理解它,你需要亲自尝试一下。如果你发现这个产品有趣且有用,那么就值得为其做贡献。

很多时候,初学者在没有先使用软件的情况下就尝试为一个项目做贡献。然后他们会感到沮丧并放弃。如果你不使用软件,你就无法理解它是如何工作的。如果你不知道它是如何工作的,你又如何修复错误或编写新功能呢?

记住:先试用,再动手。

检查项目状态

项目活跃度如何?

如果你向一个无人维护或休眠的项目发送拉取请求,你的拉取请求(或 PR)可能永远不会被审查或合并。寻找活动量大的项目;这样你就能立即得到关于你代码的反馈,你的贡献也不会白费。

以下是如何判断一个项目是否活跃

  • 贡献者数量:不断增长的贡献者数量表明开发者社区对项目感兴趣,并愿意接受新的贡献者。
  • 提交频率:查看最近的提交日期。如果是在最近一周,甚至一两个月内,则表明项目正在维护中。
  • 维护者数量:更多的维护者意味着有更多潜在的导师来指导你。
  • 聊天室/IRC 中的活跃程度:繁忙的聊天室意味着你的疑问可以得到快速回复。

初学者资源

Coala 是一个开源项目的例子,它有自己的教程和文档资源,你还可以访问其 API(每个类和方法)。该网站还具有吸引人的 UI,让你想阅读更多内容。

文档:所有级别的开发者都需要可靠、维护良好的文档来理解项目的细节。寻找在 GitHub(或任何托管地)以及像 Read the Docs 这样的独立站点上提供完善文档的项目,其中包含大量示例,可以帮助你深入了解代码。

Coala Newcomers' Guide screen

教程:解释如何向项目添加功能的教程对初学者很有帮助(但是,你可能找不到所有项目的教程)。例如,coala 提供了编写 bears(用于执行代码分析的 linting 工具的 Python 包装器)的教程。

Coala UI

标记的问题:对于刚开始了解如何选择第一个项目的初学者来说,选择一个问题可能是一项更艰巨的任务。标记为“difficulty/low”、“difficulty/newcomer”、“good first issue”和“low-hanging fruit”的问题非常适合新手。

Coala labeled issues

 

其他因素

CI user pipeline log
  • 维护者对新贡献者的态度:以我的经验来看,大多数开源贡献者都渴望帮助新人加入他们的项目。但是,你可能也会遇到一些不太欢迎(甚至有点粗鲁)的人,当你寻求帮助时。不要让他们让你气馁。仅仅因为某人有更多经验并不意味着他们有权粗鲁。还有很多人愿意提供帮助。

  • 审查流程/结构:你的 PR 将经过经验丰富的开发者和你的同行的多次审查和修改——这就是你学习软件开发最多知识的方式。具有严格审查流程的项目使你能够通过编写生产级代码成长为一名开发者。

  • 稳健的 CI 管道:开源项目向初学者介绍持续集成和部署服务。稳健的 CI 管道将帮助你学习如何阅读和理解 CI 日志。它还将使你获得处理失败的测试用例和代码覆盖率问题的经验。

  • 参与代码项目(例如 Google Summer Of Code):参与组织表明愿意致力于项目的长期发展。它们还为新人提供了获得真实世界开发经验并获得报酬的机会。大多数参与此类项目的组织都欢迎新手。

7 个初学者友好的组织

标签
User profile image.
我是一名开源开发者和编程语言爱好者。我喜欢编写 Go、Rust、Elixir、Clojure 等语言。

14 条评论

太棒了.....对像我这样的开源初学者真的很有帮助....?

谢谢。

回复 Debasish Sahoo (未验证) 的评论 Awesome one .....really

感谢分享这类文章。

谢谢你

回复 Abhishek Roy (未验证) 的评论 Thanks for sharing this kind

我读了你的帖子,真的很喜欢,感谢分享。很有用的信息。

谢谢

回复 Jagannath Barman (未验证) 的评论 I read your post and I really

太棒了 bhaiya ...非常有帮助..

谢谢。

回复 Rupesh (未验证) 的评论 Great one bhaiya ...Very

非常感谢分享这类信息。你的文章提供了如此棒的信息和知识。

多么令人兴奋的文章。对开源初学者真的很有帮助,感谢与我们分享这篇伟大的文章。

感谢阅读。

回复 Sourav Haldar (未验证) 的评论 Such an exciting post. Really

好文章!感谢分享精彩信息。

非常感谢这篇博文。再次感谢。真的是对开源的巨大贡献。

哇,很棒的博文。非常感谢这些有用的信息。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.