卡卷网
当前位置:卡卷网 / 每日看点 / 正文

在校生如何在开源社区中成长?

作者:卡卷网发布时间:2025-01-17 00:32浏览数量:79次评论数量:0次

这个问题我来回答再合适不过了。

说句实话,自从进了开源的坑,特别后悔。

后悔没早点进来。

毕竟,大学里打游戏浪费了那么多的时间,要是那时候就开始刷社区,我估计现在的工资还能翻倍。

参与开源社区是一个完全没有门槛的事情——不看学历不看出身不看工作经验,只要一根网线就可以为这个星球上最顶级的代码仓库添砖加瓦,是不是想想还有点小激动呢?

那么,要怎么做呢?我们把这个问题分解成这样几步,包教包会,随治随走。

第一步:注册一个GitHub账号

要是这一步不会的话……那还是别往下看了。

第二步:挑一个入的了你的法眼的开源项目。

这一步很重要。你需要找一个活跃、知名、有价值、纯Java实现的开源项目。这是一个非常重要、不涉及任何技术细节的过程,你需要一些时间仔细浏览各大项目,了解它们的基本信息。不怕用力过猛的话这里有一个GitHub星星排行榜,尽管大胆正面刚。如果胆子比较小,就挑几百几千颗星的项目。它决定了你接下来几个月的工作重点,以及未来的发展方向。如果挑选得当,努力几年,成为领域专家的话,直接被该领域的公司高薪挖走也说不定。我几年前是在Groovy社区刷经验的,供参考。

活跃的意思是说,当你翻它的issue列表的时候,能够看到基本上每个issue都有人回复。每个PR都能得到快速响应。反例:阿里巴巴的诸多项目,开源了就不管了,issue没人回,PR没人理,跟骗炮的渣男有什么区别:

alibaba/fastjson

第三步:怼它。

这一步简单的就好像在说“把大象关冰箱一样“,实际情况复杂千万倍,足以把你劝退。

在一开始,你可能完全摸不到开源项目的门路,没关系,先从修typo开始。无数人的开源生涯都是从修typo开始的,我也不例外。这个过程只是为了让你熟悉开源项目的协作流程。你看这是我给现在的东家修的第一个bug,啥技术含量也没有。

在校生如何在开源社区中成长?  第1张

我给Gradle提交的第一个PR,有技术含量么?没有,你也可以。

如果你不了解协作流程,也就是说,你不知道怎么得到上图这个界面?看这个免费课程,我录了手把手教你提交PR的过程,最关键的是,有真实仓库让你练手!

前置知识 - 使用Git/GitHub/Markdown进行项目协作 - 写代码啦!

那你马上就会问了,怎么找到typo呢?这里有一个工具让你方便地找typo蹭PR?啥,你说你不会用?学啊,谁一生下来就什么都会的?

jsoref/spelling

搞笑的是这哥们拿着这个工具到处蹭PR,后来被人骂了:

在校生如何在开源社区中成长?  第2张

“你特么能不能不要老骚扰那些没主动让你检查拼写的人?”

强调一下,这个过程只是为了让你熟悉协作流程(比如提交PR,讨论,Sync a fork,Squash commits之类),千万别本末倒置爱上修typo的过程。

了解了协作流程之后,就可以开始主动找bug修了。啥,你说你不会修bug?那要你何用?开源社区最重要的能力就是修bug啊。你一定要从开源社区协作中,得到“无论什么bug,来了我就会修”的能力。要达到这个目的,一定要先学会使用调试器:

初级 - IDEA/Maven/调试器的基本使用 - 写代码啦!

挑bug修的过程也是很讲究的。除非你真的是专家,否则请挨个浏览项目的issue tracker,专门找软柿子bug修,不要碰难题。原则是:

  • 一定要有可以重现的例子。不能重现的bug别说你,项目作者都不一定能解决。
  • bug要“看上去比较重要”,也就是说,你修完之后不需要费劲向项目作者解释其必要性。

当然,如果你真是神级人物,来者不拒,什么bug都能修,那请随意挑选bug。比如说下面这哥们之前跟我一个组,后来调去隔壁组做企业级的Maven支持,就是这个:

在校生如何在开源社区中成长?  第3张

顺便打个广告,我们在做企业级的Maven构建加速业务

这哥们做Maven支持的时候不停地发现并解决Maven的bug:

在校生如何在开源社区中成长?  第4张

所以你看,Gradle对Maven才是真爱啊。

修bug的过程没办法描述,因为bug千变万化。有兴趣的话可以观看我直播修的两个bug,一个是给FastJson项目,一个是给Maven项目:

现场直播给阿里巴巴Fastjson修bug_哔哩哔哩 (゜-゜)つロ 干杯~-bilibilibilibili.com/video/av59

修过一些bug之后,你的编码水平应该有了质的提升,现在可以尝试挑战更高难度的开源协作方式了:造轮子。

造轮子有两种:帮别人造轮子和自己造轮子。

帮别人造轮子的意思是说,你翻著名开源项目的issue tracker,从里面挑选feature request并实现之。换句话说,就是有人想要一个功能但是该项目还没提供,你就帮他们实现掉。这个过程可能会被对方直接拒绝,所以请小心行事。当然,如果你的实现最终被接受,这将是更有价值、更能给你简历增光添彩的经历。

另一种方式就是自己造轮子,针对某个细分领域实现之前还没人实现过的功能。注意,在开始之前千万注意看看有没有别人已经造好了。自己造轮子是最锻炼设计实现能力的事情,没有之一。

如果你担心找不到合适的bug或者feature request,think twice。你真的有仔细翻阅过他们的issue tracker,挨个阅读其中的讨论么?没把前十页仔细的看过一遍,不要跟我说找不到。

好了,还有疑问,请阅读我的这篇文章:

blindpirate:跳出弱鸡循环2

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码