初次参与开源
我最开始接触到开源,还是因为公司的某个 H5
的项目需要一个图片预览组件,刚开始选择了 vant
,但是很不幸,并没有满足我的需求,而且还有一些bug。于是我又去网上翻了翻其他的移动端组件库,无意中发现了varlet
,这个组件库的 image preview
组件刚好能满足需求。
但是我发现这个组件也有bug,就去github上提了人生第一个issue
耗子哥的效率也很高,修复的也很快
而后在使用的过程中,也发现了这个组件的一些其他问题。一个大胆的想法从脑海中掠过,为什么我不能自己提一个pr来修复这个问题呢?于是,那天下班之后,我fork仓库,阅读贡献指南,启动项目,定位问题,修改代码,电脑调试,真机测试,反反复复确认了自己的代码没问题,也能修复这个bug,开始推代码,录制修复视频,最后创建pr。尽管我只改了一两行代码,却整整花了好几个小时
耗子哥的效率也是震惊到我了,第二天我起床发现,他是凌晨三十分回复的我,并且合并了代码
大佬的努力程度给当时懵懂无知的我带来了巨大的冲击,我这么菜,总不能菜的还那么心安理得吧,或许我能做的更多,学到更多。
良机和失业
可能是命中注定,我当时燃起了想搞开源,想进步的火花,就有了这样一个机会。好巧不巧的是,过后两天正好读到了varlet贡献者写的 最近的开源小经历与大感想,我在下面留了言,加了文章作者的微信,顺利的混进了varlet,还加了耗子哥的微信
自此,我便一发不可收拾,慢慢走进了之前望而生畏的开源世界。加特性,修bug,改文档,完善测试用例等等,除了正常上班的时间,其余的大部分时间都用来学习或者做开源了
不幸的是,国庆节的时候,我失业了,那段时间找工作并没有我想象中的那么难,一天中的大多数时间我都拿来搞开源了,大概找了两三周就有了差不多的offer,十一月初就出去上班了。顺带一提,我这份工作也是开源给的,因为一面面试官除了开源什么也没有问我,正中下怀,问题基本上都流畅地答出来了,二面也过的很轻松,之后几乎没过多少小时就约了hr面。
学习、思考和实践
俗话说的好,好记性不如烂笔头,很多东西刚开始学的时候会了,如果不加以实践巩固,很快就会忘掉。 到现在为止,我已经有了一些实践,写了自己的第一个cli,写了第一个monorepo项目,写了第一个rollup插件等,第一次参与apache的项目。
我发现我实践的越多,越发觉自己的渺小,不会的东西太多太多了。不过github上的每一个contribution也在不断激励着我,就像一个贪吃蛇,我总是渴望更多。
言归正传,我到底收获了什么呢?
源码阅读能力
之前刚毕业的时候,那个时候去看 axios
,虽然当时看明白了一点点,过段时间就又忘了。这段时间的努力和成长,也让我的源码阅读能力有了不少长进,甚至我还看了vue/reactivity包的源码,放之前肯定想都不敢想。
光是varlet的源码就够我学到很多了,到目前为止,varlet不仅仅是一个ui库了,其还包含了脚手架,发版工具,vscode插件,vite插件,演练场等等。
技术视野
最近对自己的git cli做了两次技术迁移,一次是从 cjs
迁移到了 esm
,一次是对参数功能进行了重构,支持了多参数同时生效。第一次迁移早在几个月之前我其实是尝试了的,可惜没有成功,当时自己对这些了解的太少了,虽然现在也不多,前几周又进行了一次迁移,这次很成功,还玩了下rollup的打包。
前段时间也自己尝试了下monorepo的架构,这是一个项目,里面有util,hook包,还有vitepress做的静态站点
综合能力
在维护varlet这一年多的时间里,我认识了很多大佬,在和他们的沟通交流的过程中,我学到了很多,不仅仅是技术,还有沟通能力,脾性和生活技巧。之前我总是对沟通能力不屑一顾,直到我发现有些人的沟通能力真的很强,他们总能清晰的表达清楚自己的需求和想法,而不用过多的言语。而我总是会说一堆看似有条理,实则乱糟糟的话。我学习怎么更好的,更恰当的沟通。
结语
希望大家都能努力成为更好的自己