在编程的世界中,开源贡献是一种令人兴奋的体验。它不仅能够提升编程技能,还能让成为社区的一部分,与世界各地的开发者一起工作。最近,决定尝试为一个开源项目做出贡献。
为什么选择现在呢?这是一个关于时机的问题。两周前,在为博文解决一个Advent of Code问题时,遇到了一个挑战。使用的工具Cppcheck在对代码进行静态分析时,给出了一些警告,这些警告来自于使用的库——JSON for ModernC++。面对这些警告,可以选择忽略,或者报告它们。决定采取更积极的行动,前往该库的GitHub仓库,创建了一个issue。但是,当审视这些警告时,对自己说,为什么不尝试修复它们呢?就这样,设定了一个目标,准备去实现它。
在开源世界中,贡献不仅仅是编写代码那么简单。实际上,需要使代码适应开源项目的指南,并遵循特定的流程。
由于JSON for ModernC++库托管在GitHub上,将描述在GitHub上进行贡献的过程。
是否曾经好奇过,在仓库界面上点击Fork按钮有什么用?当点击它时,将得到当前所在仓库的副本,这样就可以在不影响原始项目仓库的情况下,对项目的代码进行实验。
这是为GitHub上的开源项目做出任何贡献的第一步。正是这样做的,fork了JSON for Modern C++库的仓库。
现在,有了库仓库的副本,并开始对代码进行一些修改。但决定从小处着手。
事实上,从Cppcheck得到了29个警告,但决定只处理其中的两个:一个不必要的测试和一个使用算法std::accumulate而不是原始循环的情况。
想从未在写代码时如此紧张,就像做这两个提交时一样。但这很好,它让对代码进行了深思熟虑。
这一步可能是最具挑战性的。实际上,在创建Pull Request之前,没有人会看到工作。但一旦创建了Pull Request,工作就公之于众,人们可以看到并评论工作。
创建Pull Request很简单!推送分支,然后前往GitHub,点击建议创建Pull Request的按钮,将分支与库仓库关联起来。
困难的部分在于让维护者接受它。要让它通过所有测试,尤其是当它们是一个体面的测试套件时,这是另一个挑战,但至少,更确定没有破坏库。
可能会问,创建的Pull Request怎么样了?嗯,在创建它时不得不进行几次修复。实际上,在JSON for ModernC++中,需要运行并提交他们的命令make amalgame的结果,这个命令会做很多事情,比如格式化代码和生成一些文件。在运行这个命令并推送修改之后,测试就不再通过了,所以修复了写的代码,并使其遵循C++11标准,因为使用了C++14的特性。在所有这些更正之后,测试终于再次通过了。
最后,Pull Request被批准并合并了!
发现,每当做了一件好事,一件想再次做的事情时,庆祝是很重要的。庆祝并不意味着仅仅为了洗个盘子就举办一个大型派对,当然不是!但是给自己一个奖励,这将有助于再次去做,这样大脑就会理解,即使这并不容易,看起来像是艰苦的工作,但确实发生了一件好事。
这是一次很好的经历!与另一个代码库互动。看到它的测试设置和工作流程,觉得这非常有趣。