玉伯:开源有带给我什么

简介: 在2021年527蚂蚁技术日上,蚂蚁内源社区举办了内源专场,在专场上玉伯给大家分享了《开源有带给我什么》,以下为演讲的图文整理。
来源: Alibaba F2E
作者: Alibaba F2E
在2021年527蚂蚁技术日上,蚂蚁内源社区举办了内源专场,在专场上玉伯给大家分享了《开源有带给我什么》,以下为演讲的图文整理。

我的开源之路

image.png

我从2009年到2018年,接近十年时间,一直在做开源的一些事情,在这个过程中收获了很多东西。今天就和大家分享一下,回顾这十年,我的一些收获和感触。

我最开始注册GitHub是09年的夏天,再之前,是在Google Code上面有一些个人项目。这张图是10年7、8月之后,开始在GitHub上疯狂提交代码的时候,那时候整天沉浸在代码里面,现在回想起来还是很开心的。

这些年做过一些开源项目,最开始是模块加载器Sea.js,在淘宝时期和别人一起开发了Kissy项目,来支付宝的早期做过一个不太成功的项目Arale,做了大概两年觉得这个方面是不对的,马上切换开始去做Ant Design,再后来又开启了AntV数据可视化开源项目。当然,体验技术部还有很多做的不错的开源项目,比如egg.js和Chair,不过这些我参与不多。

我的收获之一:高效工作

这些年我一直在思考,我在参与开源的过程中真正的收获是什么。

我总结了三点。其中第一个就是养成了高效工作的习惯

高效工作里面包括几个小点,首先是文档优先

image.png

在文档方面我印象最深的一件事,就是在2010年左右参与到CommonJS开放组织里面,这是一个虚拟的组织,最主要的产出就是文档,我在里面感受到了业界这些顶尖的专家对于文档的重视。

当时,大家通过一个wiki系统以及Google Group论坛在一起,讨论什么叫模块,以及拟定它的1.0、1.1等版本的规范细则,每个规范中都有很多分支,围绕里面的很多细节,大家吵的不可开交。正是通过大家的努力产出的这些规范文档,对整个行业都起到很大的帮助。

经常参与开源的同学可能发现,在文档优先这方面,老外比我们重视太多了,有点项目可能还只是个空壳,但里面已经讨论很多了,把很多想法思路、怎么做、可能遇到什么坑这些问题,通过文档和讨论,想的比较清楚了才动手去写代码,这点和国内是很不一样的。

当你真的深度参与开源,并且以文档先行的方式去实践的话,你的收获会非常之大。

image.png

第二点就是,在开源社区非常强调异步协作。无论是GitHub上的issues,还是Google的Groups,都是异步协作的利器,后来语雀的讨论区也借鉴了这些思路,就是是因为我们发现,异步协作比线下会议高效很多。我也非常想在公司内去推行异步协作,在体验技术部有句话,与其在钉钉上找我,不如发个issue给我,你可能会更快的得到反馈。

人们通常进行交流的手段就是听说读写,其中读和写是比听和说更高维度的手段,需要更多逻辑和抽象能力,更有助于问题的及早解决。

最后一点是求同尊异。GitHub上有些项目参与人数众多,大家参与讨论很激烈,如何在有分歧的情况下达成共识,以及不仅达成共识而是让社区往前走一步,这是需要一些领导力,以及一些意见领袖做出一些牺牲的。比如当时在CommonJS社区里有一位C语言大拿,他已经实现了一版模块化代码, 比已有的一些都更优雅,但为了让社区意见保持一致往前走,他把自己的代码全删掉了。

在这里,求同尊异不是很虚的词,而是很实际的原则,影响你的很多取舍。

image.png

最后一点是挺有趣的,在早期GitHub做社区的可能很多都是技术,比较纯粹,后来各种追求商业化以及个人影响力的都来了。所以我最后一点就是你要知人情世故,现在GitHub上很多开源类库你一看就知道是来蹭名利的,这种情况下笑一笑就好了,不需要去较真,否则会耗费很多无谓的时间,最少也影响心情。但同时你自己不要去人情世故,保持纯粹。开源社区也是个小社会,GitHub也没有大家想象中那么纯洁,有很多故事在里面。

这些习惯和认知一直延续到我现在的工作中,真的给我带来了很多帮助。我相信在开源上,只要你参与进去,你就会获得一些感性的认识,知道它们对你的职业成长和习惯是非常有利的。

我的收获之二:学做产品

我之前做Sea.js这些开源项目的时候,是把它当做一个产品去打造的,因此肯定会遇到产品的灵魂三问:

image.png

每一个开源项目在决定要不要去做的时候,都要问自己这几个问题。这些问题其实和很多业务和产品遇到的问题很类似。你必须将这些问题回答清楚之后才能再往前走一步。

比如当初我们在做AntV的G2的时候,就要回答一个问题,当时国内外有higcharts、echarts等开源的可视化框架,也都非常成功,这时候你G2凭什么去做另一个可视化类库?后来和萧庆关于这个问题想了很久,最终得出的答案是我们要做图形语法,而不是以前业界通行的基于配置的可视化,这也正是G2的差异化竞争优势,真的做好了会带来更多的可能性。

关于第二个问题,是因为很多你想做的项目,要么在GitHub上已经有了,要么已经在文档中被人讨论过了,那为什么是你做?为什么你更有可能去做成?这个问题的一个“政治正确”的答案是和你的业务有相关性,更实际的可能是和你这个人更有关系,是你内心想不想做,愿不愿意去长期的投入。

比如Ant Design、AntV,其实当时是集团更有机会去做的,因为集团有数据产品技术部,他们有很多业务,在这些业务土壤下是更有机会去长出这些项目的,但是他们缺人。所以对这个问题我的回答是,很多情况下,人的要素是比业务更重要的。只要你对事情是笃定想要去做的,大胆去做就好了。

第三个问题其实是更难回答的,就是你的边界在哪。之前接触过的一些开源项目越做越大,或者越做越复杂,这不一定是好的。我自己心目中理想的开源产品,是做到一定阶段,就不需要再做了。比如一些命令行小工具,很多年都没有更新了,但大家都在用,因为它们各种接口很完备,已经不需要更新了。做开源项目也一样,当你花一些时间设计好了,然后写完代码,就可以对整个世界说,我做好了,你用吧。当然,这是一种理想状态。

我的收获之三:对事的热爱

image.png

我的分享最后一点是热爱。但凡你曾经经历过为开源而疯狂,你就会理解什么叫热爱。而如果你没有疯狂过,热爱对你来说只是两个字而已。

最近袁老去世,举国同悲,我也看了那个40多分钟的纪录片,看的过程中真的是非常感动。特别是里面提到袁老的禾下乘凉梦:他有一个梦,希望稻谷长的像高粱一样高,稻穗比扫把还长,结的谷粒和花生米一样大,到时候他和他的助手可以躺在下面乘凉,睡个午觉。我觉得袁老说到这段话的时候整个人都升华了,看了这段视频,你可以理解什么叫做事业,什么叫做热爱。

当你把开源当做自己的事业的时候,感受其实是一样的,即使生活上很朴素,你也可以过的很开心。当你写代码的时候想着怎么写的更好,某个内存占用怎么降低一点点,某个性能怎么提高一点点,当你满脑子在想这些的时候,一些物欲得失也就没那么重要了。

我希望同学们通过开源,去参与和主导项目,能够感受到这份热爱。持续去感受过几份热爱之后,我觉得你整个人都会不一样的,面对许多事情,你会活的更通透,更透彻。

另外前不久在推特上看到一句话让我挺有感触,他主要说的是,很多人说工作要跟对人,但其实没什么关系,跟你工作的地方和公司也没关系,跟什么人不如跟随自己的内心。真正一个人在职场生涯往前走,应该找到的是你的mission和calling,还有找到对你有意义和热爱的一些事情。

总结一下,如果说开源带给我什么,首先第一个就是高效工作的习惯,让我受益终身;第二个是在这个过程中,学会了怎么去做产品;第三个是非常感谢自己有兴趣参与一些开源项目之后,从中感受到什么叫热爱,从而改变了我对人生的很多看法。

f441bb4cf20944bda66ddae869a2c488.png

相关文章
|
1月前
|
JavaScript Java 数据挖掘
如何成为一名独立开发者
【1月更文挑战第10天】如何成为一名独立开发者
|
Web App开发 存储 缓存
共码未来 | 助力实现事半功倍的前端开发体验
共码未来 | 助力实现事半功倍的前端开发体验
209 0
共码未来 | 助力实现事半功倍的前端开发体验
|
人工智能 前端开发 JavaScript
精益求精,体验创心|第十六届 D2 前端技术论坛「精心」而至
金秋十月,度过了年度最长假期国庆节,作为程序员的我们,最期待的,当然要数 1024 程序员的节日啦~
310 0
精益求精,体验创心|第十六届 D2 前端技术论坛「精心」而至
|
Ubuntu Linux 开发者
90 后开源老司机徐亮:从大学开始全职做开源是一种怎样的体验?
  “如果你有正确的态度,有趣的事情自然会找到你。”   Eric S. Raymond 在被奉为“开源运动独立宣言”的《大教堂与集市》一文中,总结了 19 条在开源开发中非常有用的理论,上面是其中一条。开源项目总会在不经意间升级,参与者可能最初只是做一些小打小闹的贡献,后来逐步维护越来越重要、越来越多的代码,甚至是负责整个程序。在一个鼓励代码共享的软件文化中,这是一种很自然的项目演化方式。   徐亮在开源社区的经历也遵循着同样的演化路径。从一开始因为兴趣入圈、负责翻译工作,到后来成为Ubuntu、Debian资深官方开放人员,甚至把开源变成一份全职工作,今年已经是徐亮与开源结缘的第 12
382 0
|
NoSQL 程序员 应用服务中间件
如何通过开源让自己的技术水平更上一层楼
  本篇内容选自 Gitee 发起,邀请全体开源爱好者共同参与的开源百科编写项目《开源指北》。   什么是开源,相信前面的章节已经说的非常清楚了。开源作为一种贡献技术的方式,对整个技术界和开源社区的正向回馈是巨大的。近 10 年来,越来越多的项目加入了开源界。其中有许许多多的知名开源项目被人所认可和追捧。   操作系统:Linux,Android编辑器:Vim,Emacs,Atom,VSCode版本管理:SVN,Git,Fossil数据库:MySQL,MongoDB,Redis大数据平台:Hadoop,ElasticSearch,HBase容器:Apache,Nginx虚拟化软件:Dock
110 0
|
云计算 程序员 云栖大会
懂技术,写博文,混圈子 就能变现? 云计算布道虚位以待,现在加入!
云计算布道者虚位以待,照亮属于我的那片星辰大海!
68093 0
|
存储 程序员 网络安全
这款“万金油”治好了我多年的职场焦虑症
有了TA,产品、运营还需跪求程序员吗?
2098 0
这款“万金油”治好了我多年的职场焦虑症
|
开发者 网络安全 Python
技术人的“灵魂三问”,阿里工程师如何解答? | 开发者必读(052期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
1638 0
开发速度之我见
     有了闲暇时间,才会考虑更多(比如提高软件的品质)!那么如何“增加”闲暇时间呢?      记得我上初中的时候,有一件事情对我影响比较大。一次在学校作数学作业,老师在旁边看着我和另一位同学做数学题,过了一段时间老师说了一句话,他说,你这速度也太慢了,人家三道题都做完了,你两道还没做完呢!你比人家少做多少练习呀!      确实,这句话也太对了。
1033 0
|
物联网 Android开发 开发者