Hi!~
可以叫我Doho,我是一名前端开发,目前在我司负责web相关的开发工作,是个对新技术(改善现有工作效率)的狂热开源爱好者。
我做了什么:
在六个月前我发了一篇文章,总结了在工作中遇到问题并且解决后还发布开源的过程。
没记错的话当时项目的star数还只有150+,但已经感受到了非常不同的成就感,因为在那时已经收到了一波来自各国网友的建议,并且还有人开始尝试透过邮箱联系我,与我沟通项目实现的方式和他们打算发布PR的想法,这的确让我收到了很大鼓励。
现在项目已经有了700+ star,我对开源项目的看法与感受已经发生了截然不同的改变,感觉很有意思,所以打算来分享一下,尝试多写点东西,练练文笔(希望)hh。
起因:
对这个项目具体过程感兴趣的朋友可以看这里:juejin.cn/post/701821…
简单说一下这个项目,它就是用了另外一种不同的实现思路与技术栈来做的轮播图组件,改善了目前社区内近乎所(很)有(多)组件都会有的一个小问题,而且在渲染更多元素的时候也会保证较好的性能。
其实它的出现也只是源自于我为了实现设计的交互需求而研究出的结果,所以最开始并没有目前这么多的功能,但恰巧的事是最开始的功能除了能水平滑动,另一个功能便是这个RN社区内大多数组件没办法做到的——不卡顿的连续快速滑动。
过程:
这听起来其实并没什么,我一开始也这样以为,但我在这个需求上屡次delay... 中间我尝试了很多的库,直到我试遍了能搜到的切没有弃坑太久的项目,发现需要自己动手了。
过程其实没有什么好说的,大概花了一周多,大部分时间都在ipad上去算,去写伪代码。
(节选 1/10 页)
最后感觉逻辑通了,写代码大概用了两小时,然后发现可行,最后完成了设计需求,效果不错。hh
后来:
后来项目上线,下班后也有了一些时间,就打算在原有的基础上做些优化发到github,开源给到社区也算是白嫖了这么多年后,反哺给社区。在社区里经过了一阵子迭代之后,我发布了相对稳定的版本,并在Twitter发了一条消息。
还尝试@了一位youtuber,之前会看他的技术视频,想感谢他的教学,没想到他竟然帮我转发了消息。
瞬间让这个项目受到了一部分人的关注,随之而来的就是大家的建议(issues)
...
大家都十分友善,很多人在提问前都会说 “首先感谢你做了这样一个不错的项目”,这十分激励我,是一种对我而言堪称兴奋剂的正向反馈,hh。所以我花了一些时间为社区内的需求去做迭代,就这样项目的功能逐渐变多,组件越来越完善。
收获:
其实到这儿对于中间发生的事儿,基本也就说的差不多了。但我还想聊聊对于一个开源项目我中间一些感受的变化
-
我期望有生之年能有一个500+star的开源项目,这样就能面试无敌了!(中二ing)
- 并没,在项目有了500左右star时,我也恰巧开始了面试找工作这件事。它肯定不会是无敌的,但说实在的会让自己有一些自信,能多些和面试官聊的内容。对于面试官好的一点是,也能让他感受到我平时对开源的兴趣并且能直接看到过往写代码的思路与风格。这其实就隐约能给到面试一些帮助,提高了一些效率。其它的就是开源项目维护中学到的新技术,与社区网友配合和管理一个项目的一点点经验而已。
-
一个开源项目的工作流是不是会很复杂?
- 也没,项目的起始是为了猴急的发布,所以选了一个社区内还不错的template,后来发现挺好用。平时维护feature或者bug,一般就是打开项目,切出分支,开发、测试、开发、测试、开发、测试、开发、测试、开发、测试然后release,close issue,再上twitter嚷嚷一波也就结束了,整个过程没有一个环节是复杂的,因为社区的很多的方案帮我们解决了那些麻烦的问题。
-
所有feature request都会做吗?
- 不会,在这过程中其实让我有了些感触,为什么之前给别人提的feature request大多都会被关掉,现在角色调换过来也就突然理解了。举个例子,一个网友说想加A功能,他对这个A功能做了很多描述,而且也讲了有A会多方便,没有会多麻烦。 但其实当我看到这个请求时第一反应是为什么要加,他的需求是特有的吗,如果确定要加那能否通过目前api来进行组合满足这类需求,增加它后对现有api会有什么影响,类似的api该如何向用户解释他们的区别以及引导新用户让他们第一反应就能选到正确的。这其实会有很多地方需要考虑,但当我们作为一个提问者的时候,很多时候并不能完全考虑到,当然也没办法要求一个用户来明白内部产品是如何设计的。 所以也能深刻理解为什么某些我的request会被关掉,hh。
-
维护一个开源项目需要多少精力?
- 看心态,对于一开始多到爆的正向反馈,维护项目会让我觉得动力倍增,每天期待着新的issue出现,和大家讨论如何去做。但到后来有时会突然出现十几个issue,有bug的发反馈也有feature request的讨论,这时候就会有些力不从心,有时能会被维护项目这件事占据掉一整天休息时间,所以后来也会想一些办法来提高这中间的效率,比方说我只会在周六早晨开始去解决部分重要问题,弄不完的就佯装没看到[狗头]。 尝试加上issue template,对于不按照规则发布的讨论,都会关掉,这样其实就少了很多的“无效”问题,也能更快的帮我定位问题... 所以话说回来,维护一个项目需要多少精力?这其实取决于对项目的兴趣,与当时的动力,如果我们总能找到一个合适的点,来刺激自己,其实按照正常的方式我们还是可以舒适的维护一个项目的。(爆款项目没经历过,小项目还口以 hhh)
-
还做了什么有意思的事?
- 开了关于这个项目的Discord社区,会和大家直接在群里讨论一些需求与bug的问题。
- 认识了很多朋友也有一些国外的朋友,还视频面基了几次,虽然我的英语很差,但大家也都能通过表情或代码读懂对方的意思。
- 开通了github sponsor,收到过五六位伙伴的赞助,虽然并没有想通过其达到怎样的收入,但却是也是一种正向反馈。
- 开始尝试个给更多的项目贡献代码,绿墙也变得逐渐敦实。
- 与很喜欢但完全没有关联的youtuber达成了超简单联络,hh。
- 有几次版本迭代改了很多内容,但发布的内容还是旧的,时间长达一周才发现这次乌龙。
- 对github的各种功能有了实质性的了解,全部基于需求而去使用,所以也实在被github的各种功能震撼到。
- ...
最后:
最后回过头来看,貌似我的这次“开源经历”其实就起始于一次工作需求,它看起来就像是一次巧合,但仔细想想更因为是这样所以我们能很好的去参与开源。我们的每次需求,都可以被更细致的拆解,然后思考中间我们能做的事情,完善中间的缺漏,最后产生一个新的解决方案。
我称其为发布开源项目的“关键路径“,这是我的感受,但或许过阵子又会有所不同。
今年目标是成为vite.js的core team member,能不能做到先不说,先把牛皮吹出去。 hh
祝大家也能做出自己感兴趣并且有趣的项目。
Github: github.com/dohooo
Twitter:twitter.com/doho_1016
Discord:discord.com/invite/KsXR…
Email:zhaodonghao586@outlook.com
------------------------------ 编辑 ------------------------------
快来和我一起工作!~(内推)
现在我就职于美餐网北京研发部,前端开发岗,公司正处于上升期,而且WLB(Work-Life Balance)/WRH(work from home),更值得一提的是,对于更新迭代相对较快的前端岗,能多多尝试新的技术栈以及使用其解决项目工程中的问题,实在是一件令人感到兴奋的事。
比如CSS Modules的核心团队成员新开源的Vanilla Extract,CSS框架在调研后也是第一时间被我们运用到了项目用而且也有了相应的技术沉淀,新的构建工具Vite也已经被放到了我们目前的各个项目中提高我们的研发效率,还有我们组件库monorepo/pnpm/changesets... 各类较新且高效的技术都有被我们很好的调研且运用.后期我们可能还会有拥抱开源创建github美餐ORG的打算!~ 这里的leader都很Nice!
哦,还有些不是很重要的(狗头)
- 配置 Herman Miller Embody 人体工学椅、电动升降桌
- 周期性技术分享,组织参加 GopherChina、JSConf、AWS Summit 等技术会议;
- 入职即配置任意品牌电脑,每 2 年换新,旧电脑归个人所有;
- 期权分配。
- 提倡 Work-Life Balance,目标内可自由安排工作时间并以结果为导向,拒绝 996 和无效加班;
- ...
快来找我搞开源!