玉伯:开源有带给我什么

简介: 在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

相关文章
|
2天前
|
开发框架 开发工具 Android开发
移动应用开发之旅:从新手到专家的蜕变之路
【10月更文挑战第15天】在数字化时代,移动应用已经成为我们生活中不可或缺的一部分。本文将带你走进移动应用开发的世界,从基础概念到高级技术,从开发工具到实战案例,一步步揭示移动应用开发的奥秘。无论你是初学者还是有一定经验的开发者,都能在这篇文章中找到有价值的信息和启示。让我们一起探索移动应用开发的精彩旅程吧!
|
1月前
|
前端开发 Java Android开发
探索移动应用开发之旅:从新手到专家的蜕变之路
【9月更文挑战第20天】在数字化时代的浪潮中,移动应用已成为我们日常生活和工作不可或缺的一部分。本文将带领读者踏上一场精彩的旅程,从移动应用开发的基础知识出发,逐步深入到高级技巧和最佳实践。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供宝贵的信息和启发,帮助你在移动应用开发领域实现自我超越。
62 12
|
2月前
|
开发工具 Android开发 开发者
移动应用开发之旅:从新手到专家的蜕变
【8月更文挑战第30天】在数字时代的浪潮中,移动应用已成为我们日常生活的一部分。本文将引导你了解移动应用开发的核心概念、操作系统的选择以及如何通过实践和学习成长为一名移动应用开发专家。无论你是编程新手还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的建议,帮助你在移动应用开发的道路上迈出坚实的一步。让我们一起探索这个充满创意和技术挑战的世界吧!
47 15
|
2月前
|
移动开发 Dart 前端开发
“移动开发新纪元!跨平台框架与原生性能激情碰撞,未来已来!一场技术融合的革命大戏,你怎能错过?”
【8月更文挑战第7天】探索移动应用开发的未来:跨平台框架与原生性能的融合
64 3
|
4月前
|
算法 前端开发 程序员
一个土木工程专业背景的开发者,讲述开源带给他的力量
**谭雪峰在TDengine Open Day分享开源经历,揭示程序员如何通过开源项目成长。自学成才的他,从土木工程转行编程,借助开源社区学习、贡献代码,参与TDengine HiveMQ挑战赛获胜,最终加入涛思数据。开源不仅提升代码质量、提供实战经验,也拓宽技术视野,助力个人品牌建立,促进开发者、项目和社区的共赢。程序员通过参与开源,能从代码编写者转变为问题解决者和工具创造者。**
55 0
|
5月前
|
算法 开发者
代码与禅意:技术实践中的悟道之旅
【2月更文挑战第23天】在技术的海洋中,我们如同行者探索未知的领域。本文透过个人的技术实践经历,探讨了编程不仅仅是一门科学或艺术,更是一种哲学和内省的过程。我们将深入分析如何通过代码实现自我超越,以及在这个过程中对技术、生活和存在的深刻理解。
|
JSON 前端开发 JavaScript
解放双手!推荐一款阿里开源的低代码工具,YYDS
之前分享过一些低代码相关的文章,发现大家还是比较感兴趣的。之前在我印象中低代码就是通过图形化界面来生成代码而已,其实真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一站式开发平台也不为过!最近体验了一把阿里开源的低代码工具LowCodeEngine,确实是一款面向企业级的低代码解决方案,推荐给大家! LowCodeEngine简介 LowCodeEngine是阿里开源的一套面向扩展设计的企业级低代码技术体系,目前在在Github上已有4.7K+Star。这个项目大概是今年2月中旬开源的,两个月不到收获这么多Star,确实非常厉害!
|
架构师 安全 Java
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
许多人在选择“程序员”这一职业的背后,或多或少都会有故事可讲。本文是我们与一名 Erda 的用户沟通时深度挖掘到的故事,征得本人同意后对其进行了整理,并设立了【开发者故事】这一栏目,旨在收纳广大同学的故事。
256 0
开发者故事|热爱代码且发量惊人,一名反“内卷”研发工程师的日常
|
Ubuntu Linux 开发者
90 后开源老司机徐亮:从大学开始全职做开源是一种怎样的体验?
  “如果你有正确的态度,有趣的事情自然会找到你。”   Eric S. Raymond 在被奉为“开源运动独立宣言”的《大教堂与集市》一文中,总结了 19 条在开源开发中非常有用的理论,上面是其中一条。开源项目总会在不经意间升级,参与者可能最初只是做一些小打小闹的贡献,后来逐步维护越来越重要、越来越多的代码,甚至是负责整个程序。在一个鼓励代码共享的软件文化中,这是一种很自然的项目演化方式。   徐亮在开源社区的经历也遵循着同样的演化路径。从一开始因为兴趣入圈、负责翻译工作,到后来成为Ubuntu、Debian资深官方开放人员,甚至把开源变成一份全职工作,今年已经是徐亮与开源结缘的第 12
423 0
|
NoSQL 程序员 应用服务中间件
如何通过开源让自己的技术水平更上一层楼
  本篇内容选自 Gitee 发起,邀请全体开源爱好者共同参与的开源百科编写项目《开源指北》。   什么是开源,相信前面的章节已经说的非常清楚了。开源作为一种贡献技术的方式,对整个技术界和开源社区的正向回馈是巨大的。近 10 年来,越来越多的项目加入了开源界。其中有许许多多的知名开源项目被人所认可和追捧。   操作系统:Linux,Android编辑器:Vim,Emacs,Atom,VSCode版本管理:SVN,Git,Fossil数据库:MySQL,MongoDB,Redis大数据平台:Hadoop,ElasticSearch,HBase容器:Apache,Nginx虚拟化软件:Dock
138 0