惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
雷峰网
雷峰网
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
云风的 BLOG
云风的 BLOG
V
V2EX
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
N
Netflix TechBlog - Medium
Vercel News
Vercel News
美团技术团队
人人都是产品经理
人人都是产品经理
The Cloudflare Blog

Gitee 官方博客

花几千块报志愿之前,先把这 7 个问题问清楚 Gitee 618 年中盛典开启:企业版新购最高送一年,PocketClaw 首次限时折扣 Gitee 成为首批「供应链安全号」成员单位,携手共建国产工业软件生态 七大赛道 TOP 10 公布!Gitee 年度开源项目评选结果正式揭晓 GLM-Image 上线模力方舟:首个国产芯片训练的多模态图像生成模型 「开源技术」正式纳入国家职教体系,Gitee 已为开源教育落地做好准备 Gitee 软件工厂:以密级管理为底座,构建符合国家保密资质的安全研发体系 Claude Code 的代码安全困境:插件机制齐全,却绕不开模型幻觉 北京中关村学院入驻 Gitee:打造 AI for Science 教学新范式 Gitee 移动软件工厂:突破网络限制的开发新模式 从依赖到可控:开源基础设施的国家命题 模力方舟 MCP Server 上线:在 Cursor 里玩 AI 生图+语音 【国内首家】 Gitee Repo 通过信通院《可信制品管理能力分级要求》先进级(最高级)评估 Gitee Repo 助力关键领域 DevSecOps落地:构建安全可控的制品管理体系 会翻译、懂产品、还能画头像:Gitee 智能三连上线! Gitee Pipe:关键领域 DevSecOps 的核心引擎 时代命题下的民营科技担当:从备份战略看 Gitee 的国家定位 没人喜欢写 README?Gitee:现在你不用写了 关键领域软件工厂的安全中枢:Gitee Scan 全面升级供应链检测能力 Gitee MCP 现已支持远程访问:无需本地部署,AI 助手即插即用 Gitee 企业版效能度量全面升级:构建可衡量、可洞察、可优化的研发体系 高标准+安全可控:关键领域研发为什么选择 Gitee Code? 河南农担 x Gitee:以数字化赋能「三农」信贷服务新范式 Gitee Test:驱动软件工厂DevSecOps 落地,保障关键领域安全稳定 马建仓 AI 助手全流程升级:更聪明的研发搭子,更专业的协作助手 从公益初心到商业化探索,开源中国助推中国开源生态之路 以知识管理赋能 DevSecOps,Gitee Wiki 加速关键领域软件自主演进 Gitee 企业版测试管理全面升级:流程更顺畅,交付更可靠 Gitee 企业版 AI 队友邀测开启:程序员的贴身助理来了 Gitee 构件治理实践:CBB 分布式管理助力软件工厂建设
如何在贡献开源项目的过程中提升自己的技术势力
Gitee · 2019-11-12 · via Gitee 官方博客

特别说明:本文由开源之道发布并授权转载。

引言

我今年不知是机缘巧合,还是所谓的注定,有多次机会和大家讲《开发者与开源社区的关系》的演讲。那么开源的生产方式,是高效的、高质量的,那么这些是怎么来的呢?其中,人是最主要的,那么我谈到的开发者是广义的开发者,包括项目生产过程中全部的过程参与者。那么从小白该如何晋级为高手?不妨按照文中作者的指引去做做。

正文

尽管有很多人认为开源项目只是需要程序员,而且是那种特别有经验的,然而,事实上是开源项目所需要的人才远远不止这些。比如测试人员、技术支持、文档工程师、营销人员等等。

不过本篇文章要说的是为开源项目做贡献,不仅可以提高技术技能,而且还能结识更多“臭味相投”的人,参与开源项目的一个障碍是不知道如何加入并开始使用,本篇文章就是为大家讲讲如何为开源项目做贡献。

我来举几个社区的榜样,参与社区一开始未必必须是程序员,比如Con Kolivas,他是一名来自澳大利亚的麻醉师,他针对Linux内核开发了适合自己的任务调度器,因为现存的任务调度是通用的,并不能满足Kolivas的需求。又比如Alexey Kuznetsov,一名理论物理学家,但是却也是一名Linux hacker,系统程序员。还有Peter Semiletov,一名IT记者,撰写了自己的开源编辑器:TEA,已经十多年了。Lesya Novaselskaya,本来打算是成为一名汽车修理工的,现在参与了开源项目的测试工作,还有很多很多这样的例子,个人通过在开源项目中找到自己的兴趣,同时获得经验和乐趣。

如何在贡献开源项目的过程中提升自己的技术势力-Gitee 官方博客

撰写新的代码

参与一个项目未必从一开始就必须得是专家,假如你对编程语言有一定对掌握,那么可以试着去提交一些新的特性,并让项目的其它成员看到。有些开源项目新手是比较容易上手的,但是有些则拥有很高的门槛。在门槛较低的项目中,一般是初学者、菜鸟较多,这个时候,如果你能够帮助到其他人,那么你的贡献就不会被忽视。

每个开源的项目内部的流程都是特别的,所以在做贡献之前一定要自己先熟悉他们的流程。举例来说,在 PostGreSQL 项目中,所有的流程都是被严格监管的,任何代码的更改,都要将补丁发送给所有的主要开发者做深入的研究。然而在项目 Parrot 中,就允许提交到主分支。还有,如果项目使用的是 GitHub,那么就会提倡使用 Pull Request。总而言之,世上没有完全相同的开源项目贡献法则。

在你每次更改代码的时候,你一定要记住,你是整个团队的一部分,并尽力使你的编码风格符合项目所采用的编码风格。你所添加和编辑的代码不应和其它部分格格不入,你可以在代码样式方面拥有自己的偏好,但是你提交的内容必须遵循常规规则。否则的话,你这么做的意思无疑是在挑衅:“我不喜欢你的风格。我更好,所以像我这样做。” 这会导致很多冲突的,相信社区经理或其它相关的人员会站出来解决的。

排定 Bug 的优先级

毫无疑问,代码是任何软件项目的基石。然而,撰写代码并不是唯一可以参与开源项目的事情。技术支持往往被忽视,因为每个人都专注于添加新功能和修复错误。但是,技术支持往往是一个新的贡献者入门上手的好的开始。

举例来说,OpenVZ在站点 bug.openvz.org 实现了完整的 bug 追踪,它会收集所有的已知的问题——已经修复的和尚未修复的——近十多年的 bug 都在,因为项目已经很多年了。bug 系统是在开发者和用户之间建立沟通的良好渠道。对当前请求的持续工作提供了巨大的机会。请记住,您可能需要项目经理提供的某些访问权限(通常以精英为基础)。

测试中间版本

对测试感兴趣的同学,面对开源软件可能完全不知道该如何开始,但是,要知道,绝大多数的开源项目,无论是否具有商业背景,都是非常缺乏测试人员的。发现并将 bug 排定优先级,可以大大帮助开发人员节省时间。

如果有用户作了类似的评论:“我按照文档所给出的步骤,无法工作。”测试人员就可以去检查问题,在发送给开发者之前,尝试找出为何会发生这种现象,测试人员决定那些是可再现的(以及需要那些步骤),或在特定的环境中触发了那些行为。即使测试人员并不知道这个 bug 背后究竟发生了什么,但是缩小可能原因的列表对于解决实际问题的帮助是巨大的。无论您作为测试人员查找哪些细节,将其添加到所有人都看得到的地方。

根据我个人的经验,开源项目一般都会比较缺乏资源来测试全部的功能特性,所以在主干作出重大变化之前,项目会试图发出号召,让大家尽可能多的去做测试。没有那个开源拥有充足的软、硬件配置的,正因为如此,诸如 OpenBSD、OpenVZ 才会召唤测试人员帮忙测试新的功能特性。

你可以帮助开发者测试软件在不同的平台下是如何工作的,如果你使用的是非标准的硬件的话,你的反馈是非常有价值的。如果您确认构建工作即使在这样的环境中,您也可以使项目经理更容易地评估项目当前的发布状态。

提交测试

多数项目针对代码测试都会使用软件套件,当然,也会让用户去做一些测试,使用诸如可定位 C 的源代码 LCOV 这样的工具,无法通过预设测试进行检查。然后创建自定义测试以覆盖这些代码部分。

修复 Bug、添加新功能

为开源项目做贡献,一直以来最为常见的莫过于工程师提交一个补丁,补丁要么是用来修复 bug 的,要么是用来增加一个新的特性的。Odin 的首席技术官 James Bottomley 曾经撰文:Linux 内核开发者30个星期的经历中写道:“那些不知道如何加入 Linux 项目的人们,建议去修改Bug和提交新功能。”他还专门举例说明,他自己曾经遇到 Android 下没有 SIP 客户端,然而他自己需要这个功能,于是写了补丁,并提交给了 SIPdroid 项目。

当你创建新的功能特性时,在所更改的代码中撰写相应的测试是一个非常好的行为。有一些项目要求所有错误修复都必须是有相应的测试用例的。在查看未知代码时记下笔记。即使是你无法修复的 bug,在提交的 Ticket 中尽可能的去详细的将之描述,因为这对于后面跟进的人会有很大的帮助。

帮助维护项目基础设施

你是否对 DevOps 感兴趣?一名优秀的 DevOps 工程师,是非常难求的(我之所以这么说是根据我自身的经验),一名 DevOps 可以通过开放的基础设施开发可以学习、改进其自身的技能,如维基百科、Fedora,OpenVZ 也有类似的基础设施维护,为项目组件设置持续集成、为 Linux 发行版创建组件包、开发者环境的自动配置这些统统都是 DevOps 的任务。

撰写或翻译文档

维护文档对于任何项目都是非常重要的部分,但是就这么一点却是经常性的被忽视。还有更加常见的情形:文档是针对软件非常熟悉的资深人群的,而不是面对初学者和刚入门的。阅读诸如此类的文章,你的感觉是好像我应该什么都会似的。除此之外,迅速发展项目中的文档会变得过时,所以需要定期更新。

将文档视为不重要是犯大忌的事情,所有对开源项目的贡献都是重要的。文档甚至在某种程度上超越了代码。举例来说,来自 CERN 的 Ingo Schwarze,是一名OpenBSD 的开发者,创建了项目 mandoc,现在此项目已经不至于用在OpenBSD 下,它还被广泛的应用于各个 BSD 发行版,如 FreeBSD、 NetBSD、以及 DragonFlyBSD,他还整理了项目中现有手册页的格式。

因此,如果您有兴趣为项目做一些重要的事情,请帮助改进其文档。

帮助其他社区成员

随着项目的日益成长、进化,回答日常问题,尤其是针对新手的问题,就显得越发的重要。将时间花费在这里是值得的,哪怕是已经有了完善的文档。如果你能够成功的招募一名新的、活跃的成员,那真是善莫大焉!社区的每一位成员,几乎都是这么过来的。还有,任何项目都是由众多的人所完成的!

宣传项目

如果你有自己的博客的话,而且博客是用来和大家分享你在开源项目的相关经验的,那么你应该去撰写诸如在使用开源软件时遇到的问题,以及是如何解决的。作为博主的你,可以一举两得:

  1. 能够让项目得到更多的关注。
  2. 为未来的贡献者创造了相应的背景知识。

描述你的技术成果,研究和专业知识的博客也是分享在项目中获得的实际经验的好方法,以及在技术问题上发现的解决方案。(这对于你寻找下个工作机会会非常的有帮助)。

许多项目采用贡献者博客帖子聚合器,通常称为Planet,常见的开源社区有:

  • OpenVZ:https://planet.openvz.org/
  • Linux Kernel:http://planet.kernel.org/
  • Perl:http://planet.perl.org/
  • FreeDesktop:http://planet.freedesktop.org/
  • Gnome:http://planet.gnome.org/
  • Debian:http://planet.debian.net/

来自爱好者的文章,有的时候真的很有意思,哪怕是这位爱好者本身并非是项目的贡献者。

做一些设计的工作

设计是开源项目中永远的痛!这可能是很多项目失败的最大原因。令人厌烦的web站点,毫无生气的logo,都是困扰项目的主要原因,仅仅是贡献者们都将精力集中在了项目本身的功能上了,而不在乎它的外观如何,所以开源社区是非常欢迎设计师的。

StackExchange 社区的成员尝试回答了一些问题:「作为图形设计师该如何为开源软件项目做贡献?」和「如何激励图形设计师加入开源软件项目?」,当然,观点各有不同,但是可以作为参考。

总结

如果读者您有意为开源项目贡献力量的话,正在寻找有兴趣的项目或者是帮助改进项目,都是非常受欢迎的。当然,每个项目有着不同的流程,一般情况下,项目都会设置如何参与贡献项目的指南和向导,请你仔细读一下,这里笔者为大家列出三个项目的贡献指南页面:

  • OpenStack: 如何贡献
  • OpenVZ 参与
  • 如何为FreeBSD做贡献

事实上,一个项目若是专门的撰写了相关如何参与的指南文章,就说明这个项目是开放的,欢迎所有人。

关于作者

如何在贡献开源项目的过程中提升自己的技术势力-Gitee 官方博客

Sergey Bronnikov 来自俄罗斯的首都莫斯科,个人站点:https://bronevichok.ru/,他是开源项目 OpepVZ 的管理者。

本文由作者Sergey Bronnikov 发表在Opensource.com上:How to improve tech skills while contributing to open source projects。在开源之道翻译共享。本文在Creative Commons BY-SA 4.0许可证下发布。欢迎转载!