我参与 Seata 开源项目的一些感悟

丁老师在他的知识星球邀请我回答如下一个问题:git

我以为这个问题很是有意思,姑且把它贴到公众号这里,与你们分享一下我对这个问题的一些感悟。程序员

感谢丁老师的邀请问答:github

在这里我就简单说下,我这段时间参与 Seata 开源项目的一些感悟:编程

一、如何参与到开源项目中并贡献本身的一份力量?后端

我一直都有上 GitHub 搜索一些主流开源项目的习惯,我是从去年 5 月份从 GitHub 开始关注 Seata 项目的,通过入门上手以后,我就以为它的设计理念很是棒,尽管当时还有不少地方没有完善,但并不阻碍我对它的赞美,我对它产生了浓厚的兴趣,我那个时候就萌发了我要成为这个项目的贡献者。架构

不少人说,我又不是大佬,我如今还不够优秀,我没有太多的业余时间和精力,我也不知道这个项目是否合适我,等等,也有人觉得须要成为某个领域大牛,才能够参与其中,其实这是对开源最大的误解,开源固然有大牛,不但有,并且很是多,这些大牛不少都是值得你学习的榜样,可是为开源项目作贡献须要成为某个领域大牛并非必要的,但须要你花费大量时间和精力去贡献,在这个过程当中,你一样可以学到不少。框架

我接下来继续讲讲我是如何参与 Seata 的贡献:分布式

我是先从官方文档开始了解 Seata 项目的,并根据本身的了解,写了一篇文章,同时这篇文章还被阿里巴巴中间件转载过,正如丁老师所说,为开源项目作贡献并不仅是贡献代码,为项目写文章一样是一种贡献。源码分析

在了解 Seata 的原理以后,我就着手看 Seata 源码,继续深刻研究,在这个过程当中,我是发现 Seata 源码是有不少地方须要完善的,所以我获得了代码贡献的机会,在看源码的过程当中,我参与了某些 bug 的修复,一些功能的开发,同时还对部分代码进行了优化,代码优化这点我特别有感触,由于 Seata 的 RPC 重构主要是由我完成的,因为我以前研究过一些 RocketMQ 的源码,其中就包括 remoting 模块,感受它的设计思想很是好,因而我就将这个设计思想从 RocketMQ 带到 Seata 中。学习

我这里在补充一点,不少人看源码的时候,看到某些代码写得不是很优雅,瞬间不想研究下去了,我以为这点很是不可取,咱们在看源码的同时,须要秉承一种 “不拘小节,观其大意” 的精神,由于每一个人都有本身的编码风格,若是你以为写的很差,那么这时候你的机会就来了,这时候提个 PR 优化一波会不会更加爽?并且一个开源项目都有其自己的设计理念,不要为了拘一时小节,而忽略了其总体的架构设计。

在参与开发的过程当中,至关于在玩游戏打怪升级,若是你对某个开源项目贡献了本身的代码,那么恭喜你,你成功成为了该项目的贡献者(Contributor),这时候在开源项目的贡献者名单中,就有你的大名啦,你的代码将会随着项目 run everywhere,是否是心中充满了成就感?若是你一直对项目有持续的贡献,那么成为该项目的核心开发(Committer)指日可待。但须要记住一点的是,持续贡献不只仅只是提交代码,参与 PR Code Review、输出文章、解答用户问题一样是一种贡献。

总之,参与到开源项目中并贡献本身的一份力量并无想象中的难,难的是你有没有一颗坚持的心,难的是你有没有花心思并付诸行动。

作开源,须要锲而不舍。

二、从开源项目中可以学到什么?

从以上的描述中,我花费了那么多时间和精力,我可以从中获得什么?仅仅只是让个人代码 run everywhere?那难免太过于浮躁了。

在这个过程当中,你将会和一群优秀的程序员沟通交流,可以将本职工做作好,同时还能把业余时间贡献给开源的人,自己就说明了这我的能力不赖,并且富有激情,至少对编程这件事来讲,是充满兴趣的,跟者这些优秀的人在一块儿作一个有趣的开源项目,你也会慢慢地变得优秀起来。

参与开源项目会造成给予你一种学习驱动力,比方说我在重构 Seata RPC 模块时,驱动我去学习 Netty 相关知识,在写配置同步脚本时,驱动我去学习写脚本(我真的是边学边写 Seata 配置同步脚本的),在研究 Seata 配置中心实现原理时,驱动我去研究 Seata SPI 机制,而且要了解各个配置中心框架的特性等等,人性每每是懒惰的,若是你为了学而去学,不少时候你会半途而废,不少时候你作着某件事半途而废,每每就是由于没有外界驱动力,去驱动你去坚持。学过物理的都知道,世上没有永动机,外界驱动力就是你坚持下去的动力源泉。

同时,你在研究源码或者进行 PR CodeReview 时,能够看到不少大牛的编程思想,这也是你最宝贵的经验源泉,好比 Seata RPC 模块的 Processor 处理器设计思想就是我从 RocketMQ 源码中参透而来。若是你想摆脱平常 CRUD,想增进本身的编码水平,来开源作点贡献吧!

开源项目中的大牛不少,参与开源会使本身变得更加谦卑,还会让本身的思惟变得更开阔,不会局限于自我。

以上就是我暂时想到的从开源项目中可以学到的一些东西以及感悟。

PS:怕后台有不少人问起怎么进入丁老师知识星球,我在这里提早说下,公号回复「星球」即获取进入星球二维码,一块儿交流源码,探讨架构,打造高质量的技术交流圈。

PSS:Seata 社区欢迎你,和一群优秀的人作一件有趣的事!

相关阅读:

分布式事务中间件Seata的设计原理

做者简介

做者张乘辉,擅长消息中间件技能,负责公司百万 TPS 级别 Kafka 集群的维护,做者维护的公号「后端进阶」不按期分享 Kafka、RocketMQ 系列不讲概念直接真刀真枪的实战总结以及细节上的源码分析;同时做者也是阿里开源分布式事务框架 Seata Contributor,所以也会分享关于 Seata 的相关知识;固然公号也会分享 WEB 相关知识好比 Spring 全家桶等。内容不必定面面俱到,但必定让你感觉到做者对于技术的追求是认真的!

公众号:后端进阶

技术博客:https://objcoding.com/

GitHub:https://github.com/objcoding/

公众号「后端进阶」,专一后端技术分享!

相关文章
相关标签/搜索