超级访谈:对话玉伯_05_04_开源三大收获异步协同文档优先与快乐工作
希望玉博能聊聊开源,因为他和团队折腾过kissic CGS and design and v等开源项目,casss CCGS已经成为过去式,design and v还在进行中。
嗯,好起是对开开始的理解,对他触动最大的开源项目,其实是雅虎的YUI.三玉博也是在参与YUI三过程程,你对开源最开开始的快乐和思思好面是我们的访谈记录。
你好,玉博老师,你最早参与开源是什么时候?是以么么式式呢?你开开最最开始的理解是什么样的,可以聊聊吗?嗯,好的,参与开源其实时间比较早。
我谈谈我在那个阿里的时候吧,零八年入职淘宝时就比较关注开源。
就当时前端有个非常开杆的公司叫雅虎,雅虎是参端工程师的理解在里面会在那个那个牛来。
在当年的话,雅虎有一个产品叫YUI,其实是前端最早的非常著名的开源项目之一。
然后在淘宝的话,我印象中零七到零八年的时候,最早用的组件库其实就是YUI.当时我们是基于那个YUII在内部封装了一个版本叫TOAT,就是代表淘宝。
就淘宝前端很多内部开源的一个起步,我觉得是起步于那个TOR项目,然后整个TOR项目的代码是写的很不错的。
我经常会去看当时的一个那个代码的一个实现。
最早期我对开源的理解,其实就是把源代码能够放出来,然后大家能够一起去看源代码长什么样子是怎么实现的,还可以一起参与进来参与贡献。
然后这就是我对开源最初的理解。
嗯,那在参与开源社区的这个过程中,最开始是开放自己的源代码,然后往后发展,越来越深入的去参与项目,甚至是主导项目反馈给社区,这是一个更进阶的过程。
那深入参与到社区里,你的就是当时的状态是什一样的呢?嗯,更深入的参与开源的话,是到了雅虎的,是那个YAS三的项目。
然后整个YAI三也是对我触动最大的一个开源项目。
对我触动点在于,就是当时YAS三的代码,其实感觉他还没有开始写多少。
但是整个那YAS三的一个项目组就已经通过社区运作,一起在探讨。
那个YAI三整体应该如何设计,应该有哪些组建,组建的api应该怎样设计等等,这是非常有趣的。
整个它的理念是设计先行,文档先行啊,并不是说先写那个代码,就是这种设计先行和文档先行的开源写作对我的影响非常大。
然后在当年我记得有一波那个国外的那个前端大牛,也在那个YAS三的那个项目里面。
然后我最开始会看他们用那个英语在探讨,然后我当时也是会很有意愿参与进去。
就当时我感觉自己你的英语阅读和写作能力也都有了突飞猛进,基本上天天都会去看,一有时间就想去看,同时也会用英语参与回复讨论。
其实从参与文档讨论,到后来开始,逐步尝试去提交一些代码。
那y幺三里面其实有些早期代码就是我写的这整个过程,其实我觉得非常好玩,有点像那个打擂台,就是你提交了一个版本,然后对方一看啊,这是什么啊?觉得你写的其实也很一般,写的并不太好。
然后他就会提交一个版本实现,然后把你的代码给覆盖掉。
然后这个时候就有意思,就是人的斗志就会被被激发起来,内心会不服,就会想到就是有没有更好的方案去实现。
然后来个回马枪,要把别人提交的代码再修改成了自己的那代码。
就是我现在都还能够回想起来有个印象很深刻的组件,就就是那个auto conplect组件。
其实体它的实现是挺复杂杂。
当时它里面的性能优化渲染性能,其实我有做很多研究,然然后我自己其实后续对心灵优化一直很感兴趣,其实跟当时这段经历也是有关系的。
呃,这是我参与开源的第二个阶段,就是从看源代码到开始通过文档参与讨论。
对,然后同时也会开始像打擂台一样去贡献代码。
整体现在回想起来是年轻气盛,然后这个过程现在想起来都挺开心的。
然后那段时间在工作过程中的话,其实我是有点天天盼着下班的,就是白天会疯狂的在项目室闭关,疯狂的想把各种业务代码尽快尽快的写完。
然后回到家里的话也会快速吃个饭,然后就会开始疯狂的参与开源项目。
印象中那段时间我可能每天晚上都会干到凌晨两三点,嗯,很开心的一段过程也很兴奋,但同时好像觉得也不是太累,睡眠质量也挺好的。
就对我而言的话,我觉得开源其实就是开心的源泉。
现在回想起来都挺开心的。
嗯,那这种就是嗯白天疯狂写代码,然后晚上还要熬夜去搞开源这种状态。
你当时坚持了多久呢?有比较长时间那好久的,但确实后来发现熬夜对身体有影响。
有时候因为头天就是干到两三点,有时候第二天上午就会没什么精神,就就就是会有那这种状态。
甚至有时候因为因为一直在写代码,然后上午到了公司之后的话,就早上再继续写文码会感觉有点疲惫。
有时也经常就是上午会选择去开会讨论去参加PRD评审,或者那自己写文档。
然后同时在写文档过程中,可能已经在那个构思那个代码应该怎么去实现,怎么去写。
一般会等到吃完午饭之后,就整个人的精神就会好很多。
中午会就是打个盹,然后下午精神就会就会就会很好,就会又又会开始疯狂的去写那个业务代码。
就在我离开淘宝务d之前,基本上就是这一两年其实都是处于这种状态。
那有没有一种可能是这样,就是那几年时间,其实你写代码已经写的太多了,就是在写代码这件事情上找不到更多的乐趣,甚至你后面会去更多的关注产品,关注业务管理有这种可能性嘛,嗯这个肯定有这种可能性的。
但确实我觉得代码本身还是依旧非常有乐趣。
对,而且当年整个YEI三项目其实做着做着就会在中后期的时候,感觉项目有点看不到希望吧,而且后续确实发展也越来越不太好。
但是我自己是虽然是一个开源参与者,但是内心是很受挫的。
因为它整YYII项项目的一个发展不顺利。
有时候会让我开始思考,就是说写代码究竟是很了什。
因为为什YYEI三代代码,明明这优秀秀整体架构设计到代代码实践都优优秀的。
但是社区却是好像并不怎么喜欢那个YEI三,就是这块的思考会让我把经力开始转向产品上思考。
考如说呢YEI三它是一个技术产品,就它作为技术产品的话,我发现真正决定这个产品成败的往往并不是代码写淘宝那个业务的前端代码时会更有体感。
因为我会发现淘宝的核心价值大多来自于产品和运营,其代代码更多在一程程度,它只是实现工具,从代码实现到后续开始关注代码背后的这些产品设计。
就这是我参与开源的那第三个阶段就小结起来的的。
我我与与开源经历过过个阶阶段,第一个阶段是实产品的为主。
因第二个阶段的话就开始通过文档参与讨论,那同时也会参与部分核心代码的实现。
然后到第三个阶段,就更多是从产品视角去看这个开源项目。
因为我会觉得决定一个开源产品成理念会发现它往往并不是代码,而是核心。
会回到这个产品本身的设计理念和思路。
要看这些产品本身是否符合潮流,如果方向不对的话,就代码往往很容易白写。
就我会发现那个代码是实现产品的工具,就像语言是沟通的工具一样。
我们说话本质上是沟通语言,只是本通的一个工具。
曾经有段时间我我会纠结自己有老家那湖南的口音。
但是后来有段时间我就那个不再纠结了。
然后这背后也是突然会想到发现,其实我们在说话更多是为了沟通。
如果我的沟通就是大家能够听懂的话,虽然他可能会带一些湖南口音,但是他本身上还是有把沟通这件事情给比较好的那个完成掉。
那后来我就不会去纠结我我的语言要不要字正腔圆。
因为最终在沟通这一块是,那大家是可以听懂的这是一种心态上的变化。
其实这并不是否定工具,而是那个对我而言的话会更看重就是工具所做的事情。
本身OK从你参与YUI三项目,就是他对你影响这么大,加上你后面和团队一起折腾这些呃开源项目,比如说KCCJSI、 design v等等。
你觉得参与开源对你产生了哪些影响呢?或者说呃你有哪些收获可以聊一聊嘛?嗯,我第一个深度参与的开源项目是那幺幺三。
然后现在回想起来,最大的收获有三点。
第一点的话是深度感受到了,就是写代码是很快乐的,这确实是非常之快乐。
那同时还有一个收获,就是意识到了代码是工具。
其实关于代码是工具,这一点就是这个收获点。
我是很少那个对外说的。
很多时候人一定要知道自己拥有的所谓能力也好,技能也好,究竟是有什么用?看开之后,人会坦然,比如我不会再纠结某个代码风格更好,我会更关注用技术能实现的产品价值点在哪。
然后开源对我来说,收获的。
第三点是真正感受到了开源社区异步协同的美好体验是超级喜欢的。
你做与雀跟这段经历也是很有关系。
有时候我们当时做开源的时候,会开玩笑说时候我们旺旺发钉钉消息,我们回复会非常之慢。
那大家都不怎么想去看那个IM消息,但是如果通过社区给我们提一个一求,我们会立刻响应。
由于整个异步协作,文化会让我以及整个体验技术部都深受影响。
然后除掉前面这三点之外的话,我自己还有一个收获,我们开始深刻理解到文档的重要性。
就之前跟那个VI项目,整个社区的同学在写作,就靠的是文档。
其实文档跟跟微信聊天是非常不一样的。
因为整个开源社区里面,很多时候是跨时区的,就是每一次沟通都非常珍贵。
我们得把自己想说的话,尽可能一次表达清楚。
因此写文档的能力很关键,我清晰表面才能做到几个回合之间能够达成一致,否则就是漫无目的的一些闲聊。
就还有比如你要去做某个功能,甚至写了一堆那代码要提交,你得先写好注释去告诉对方我为什么要改你的代码。
我改完之后究竟好在什么地方,然后在这些层面上是一定要通过文档的方式来讲清楚的。
就文档先行的理念啊,对我自己的话是影响非常之大。
我们做很多事情其实都会养成了文档先行的习惯。
其实这和亚马亚那亚亚逊逊的的那六月纸的一个管理方法也是有异曲同工之妙的。
嗯,那在你自己后续的这些开源项目中,你是怎么把前面学到的东西都运用在这些项目上的?嗯,这个是一直在尝试,就当时做那个r上t站,之前在支付宝,我们还有一个开源项目叫那阿拉雷。
其实在做阿里的过程中的话,也是充分践行那个y幺幺三的一套理念。
就是我们要文档先行,就是我们当时印象还挺深刻。
我们说我们对外做开源了,可能很多同学打开一看就发现一行代码都没开始写。
其实这是因为我们在充分践行,就是文档先行,一定要通过文档把一些理念先讲清楚。
就当时社区里很多多都在讨论,是比较认可文档先行的一个理念。
整个那个阿拉t站的后续的一个开源社区的话,其实很多人从早期就参与了也是从文档先行。
同时很多很多同学是全程那个建成了整个过程的。
然后回到国内开源项目,我自己的一个观察就会感觉其实有一个不太好的一个做法或者心态吧。
就是往往我们做一个开源项目,就会等到代码写的差不多了才开源。
因因为在我很担心自己的代码写的太烂,就一定要整到一定阶段才到心目中,觉得比较好了,才把代码给开放出来。
但是这个时候往往别人就没有机会参与了,对别人来说就只能看看,只能用用。
就是我一直觉得这种开源的方式其实并不太好。
然后我之前有跟一些开源负责人在讨论过这个话了,就是我会觉得代码写好之后再开源,目的不太纯粹。
然后他们会说我是那个古典开源主义。
其实他们的说法我那我我也认的就就是这个做开源有时候跟做产品一样,就在产品界其实也跟那个古典产品主义者,像这波那个古典产品主义者的话,他们一开始其实不太会怎么考虑用户增长,而是更多关注的是说我作为产品经理,我想不想做这个产品。
我具体想做什么产品功能,其后根据自己的想法和设计去把这个产品给做出来,去给用户用。
就那这个叫做那个古典产品主义,其实开源也存在这种情况,就是有存在那个古典开源主义,其实是一种比较纯粹的状态,就是开源最早的理念。
我理解就是分享想法,其实并不是分享代码。
像那个w三c就最最开始的一些那个标准的一些制定和诞生。
其实就是我有一个想法能够召集一波人来讨论,那慢慢的把它变成一一个标准。
就是这是我接触的开源的最原始的一个状态,也是我最喜欢的一个开源阶段吧。
嗯嗯,最开始的这个开源,你会去考古它的这些背景和发展,包括呃和这个古典产品主义就是联起起来去看。
那现在对于开源来说,有没有什么好的资料嗯可以让大家去看的呢?嗯,这些开源其实除除了做乾隆开源,我当年接触比较早的开源社区是那linux开源社区,然后linux x orlst他本人也会比较有趣。
其实我觉得他是开源的奇迹,就对整个开源项目管控的非常之好。
而且社区里也是非常的就是百花齐放。
有很多观点就到目前为止,我觉得有些观点都是很前沿的。
就比如会探讨什么是好的开源项目。
其实我我们有时候会觉得一一个好的开源项目要影响响力,要保持活跃,还不断有人迭代。
但在当年的话,我看到过一个现在想起来都记忆很深刻的一个观点。
就是说已了的项目才是好的开源项目,也这是很有趣的一句话。
这句话是什么意思呢?就是说已经不再迭代的开源项目,才说明他已经做完了,没有任何bug了。
其实大家去看那个unix里面有很多一些底层的一些那个现有的小工具,其实他就已经做到了三无可三,然是做不可做,然后bug也没了,就不需要更新迭代了。
就是某种意义上来讲,就是这种工具这种东西确实是最好的开源果实,然后这个概念也可以延伸到产品领域。
就是我我曾经仔细看过张小龙讲微信的设计,其中讲到摇一摇,其实那个摇一摇这个产品理念跟那个link x社区的这个理念是一脉相承的。
微信的摇一摇他为什么可以做到不可超越?就是那张小龙说已经那不可超越了,我是因为已经把这个功能做到极简化,就是已经做到了三无可删,只要你往上面加功能你就输了。
所以很多开源的好多理念,其实跟做产品也是很相像的,可以互相借鉴。
好的,感谢玉博以上的回答。
玉博是开源圈里的古典开源主义,他说今天国内开源一直有一个不太好的形态,就是代码写的差不多了才开源。
很多开源项我一定要代码写到最好了才开源。
但这对社区的参与者来说呢,别人就没有参与的份了,这是不太好的。
他怀念案底,赞岸开源的时候,有部分社区的人是全程见证他的成长的。
在大教堂与集市这本书中讲到,一个点说,只要有足够多的贝塔测试者,几乎所有的问题都会很快呈现,自然就有人把它解决。
那这种笃定和相信今天是否还能大面积看到集市精神,就是社区精神。
人的价值感人与人的连接就在大大小小的社区里,开源社区就是一个庞大的意义共同体,以及个个开项目小组也是意义共同体,能够找到意义共同体的人,无疑是最幸福的。
那最后也请你一起交流对开源的理解,以及你从参与开源过程中获得的养分吧。
我们下一讲见。