怎样参与到全世界优秀的开源项目中?

来源 | Tomcat那些事儿 | 作者 | 侯树成

在如今的软件设计,架构及开发中,开源扮演着越来越重要的角色。

从SSM、ROR 到OpenJDK,Kafka, Tenserflow,甚至就连火遍全球,日行千里的比特币 Bitcoin 也是开源产品。这种开源产品促进了更多的币的出现与链的产生,当然还有习惯到忽视他是开源产品的 Linux。

  • 人们平时访问的各种网站的时候会无形中使用到开源,背后可能在使用Apache、Nginx这类的 Web Server,如果升级到https,那使用的SSL可能也是基于开源的产品;
  • 每一次使用安卓手机的时候,我们都在使用开源产品;
  • 你毫不犹豫的,顺手使用了SSM、ROR 的时候;
  • 为了整理多年的照片,为了按人物归类,使用PaddlePaddle、Tensorflow的时候;
  • 你买了台电脑,上面预装了 Linux;
  • 你在某些App中重要场景下通过眨眼认证「你就是你」的时候…

可以不夸张的说,开源产品一直影响着人们的「生产与生活」。

十年前,随着Github的发布,使用Git 进行版本管理越来越流行。 同时我们也可以更方便的通过Github参与到开源项目中。

使用开源,同时可以将自己的代码,想法回馈给开源社区…

所以十年间,无数优秀的开源项目通过Github进行项目托管,像 Ruby on Rails (ROR), 像Spring ,许多项目都由SVN迁移到Git。这个过程中,像SourceForge, Google Code了越来越没落了。

当然,交给Github托管 ,这样不仅使用到 Git 的特性,同时对于即使身处不同城市的开发者都可以参与其中。同时方便用户的参与,提交Issue,发起 Pull Request。

这样「众人拾柴火焰高」,众多人贡献的项目,发展的更多,也发展的更好。而且,用户在使用开源产品时,也大都会考虑该产品最近一次

更新是什么时候。对于几年不更新的产品,用起来是会有不小的些顾虑的。

一、什么是开源

说了半天开源产品如何重要,开源怎样影响我们的生活。开源到底是什么?

对于开源,最基础最直接的感受,一定是开放源码,就是可以在任何时候,看到详细的「源代码」,毕竟「源码面前,了无秘密」。

有了源码,就可以了解其内部机制,使用过程中出现问题时,可以随时上手自行分析解决,不必等待官方缓慢的动作。

当然,这只是第一层意义。开源,更重要的意义在于,围绕产品的社区发展,可以将众人的力量回馈给开源产品。众人的参与,提出意见、想法与贡献等这个良性的循环机制。

众多的人都在使用产品,过程中遇到的问题,解决问题的代码,可以再提交回产品中。一些用户在真实的项目使用中,又由于不同的场景,可以提供不同的需求,甚至可以发现在不同环境中出现的各种问题。所以,是开源使得更多的人可以参与到产品开发中,贡献力量。

这种「人人为我,我为人人」的劲头,更大的促进了社区的发展。

比如影响世界的 Linux,也是在Linus 开源后吸引到全世界的高手参与其中。

二、怎样参与开源项目

看了前面的内容,你可能会说对于这些开源的牛X项目,我真是「老虎吃天,不知从哪下口」,不知道从哪参与,我也没法贡献。

其实可以这样考虑:

我们平时开发中要高频使用的框架,组件的功能,如果发现具体的 Bug,就可以 fix 之后提交给官方。说不定你的改动就被合并到代码中,影响世界上千万开发者了。

除了代码,项目文档也是一个很重要的部分,我们接触一个新的产品时,都是从其文档开始「QuickStart」跟进从生手到进阶。

所以,看到文档中的错误内容,或者有些内容官方在每次产品发布后,文档的变更遗漏了,这些都是我们可以参与其中的地方。

前面我们说开源项目对于世界的影响。而且随着 Github的流行,参与到一个开源项目中也变的越来越容易。具体怎么参与呢?

以我前面文章里提到的 Tomcat 管理与监控工具 psi-probe(一款功能强大的Tomcat 管理监控工具)为例。

第一步:fork

首先在 Github上找到要参与的项目,点击右上方的 「Fork」。

此时,你会看到像我们常使用的扫描仪一样,当前项目的「高清扫描版」不久就会出现在你的repo中。

不久, Fork 成功后,这个项目会显示在你个人的 Repository 中。同时显示从哪Fork出来的。可以方便的进行源的跟踪。

Fork 之后,根据使用的情况,可以对其中你认为需要改进的地方提交代码,参与项目。

第二步:修改代码提交

记住,现在的这个项目,是「」的项目。位于你的Repo中。所有的 git 操作,需要先以此这基准,git clone 到本地,进行操作,然后再commit 到「你」的仓库中。

对于代码的修改,可能需要熟悉具体的内部工作原理。也可以像我们前面介绍,对于其文档进行参与贡献。

所有的修改,变更都已经提交到 git ,同时 push 到远程分支时,你的这些修改的代码在 Github上你的仓库里也就都能看到了。

第三步: 创建 Pull request

此时,在你仓库中点击「Pull Request」,会显示对于「你这个项目」,别人发起的 Pull Request。我们现在是想向「源仓库」提交代码,所以再点击右上方绿色的「New pull request」按钮。

此时,可以选择要将「你的仓库」哪个分支,提交到「源仓库」的哪个分支上。此时会显示变更的文件内容,提交人等。点击绿色的「Create pull request」按钮,输入信息,完成创建 PR。

到此为止,「源仓库」的 Pull request 列表中,会显示我们刚刚发起的PR,状态是 Open,刚开始会进行一次「代码检查」与「持续集成」。

等待上述「代码检查」与「持续集成」完成,没有问题时,图标会变成绿色。此时,「源仓库」的维护人,Commiter,就可以将你提交的内容合并到源分支中。

但是一般来说,需要我们描述本次提交变更的内容,主要实现什么功能,可以同时再提交一些截图之类的。

第四步(Optional): 增加描述等更详细的信息

然后我们根据要求,再在PR中增加详细描述,截图等内容,再次等待 review。

等待 Commiter review 没问题之后,会将本次内容,合并到源仓库的指定分支中,此时PR中会显示xxx merge commit 到什么分支,同时PR的状态是「Closed」。此时,本次参与已经完成。

我们也会出现在该仓库的 「contributors」列表中。是不是很Cool?

总结下,参与一个开源项目的过程:

  1. fork 一个项目
  2. 提交修改与变更
  3. 向源库发起 Pull Request
  4. 等待 Code Review,如果需要,再补充详细的内容
  5. 等待代码合并到源库
  6. 完成提交

找到自己感兴趣,同时有能力参与的项目,开启你的开源旅程吧。

更多Tomcat的文章请扫码关注公众号:

2