怎样参与到全世界优秀的开源项目中?
来源 | 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?
总结下,参与一个开源项目的过程:
- fork 一个项目
- 提交修改与变更
- 向源库发起 Pull Request
- 等待 Code Review,如果需要,再补充详细的内容
- 等待代码合并到源库
- 完成提交
找到自己感兴趣,同时有能力参与的项目,开启你的开源旅程吧。