但是并不是所有的时候你都可以真正的说服别人你也知道在互联网上说服别人是多么难的一个事情所以很多时候就是说在一个 RFC 能够得到尤其是一些比较有突破性的 RFC 往往会有一些比较有争议的讨论有的时候你甚至会怀疑就是说居然有人有这么多意见我这个东西到底靠不靠谱也有这样的时候就比如说 View3 在推出所谓我们新的 composition API 的时候就
经历了很长漫长的讨论但是总的来说我我现在还是觉得是一个正确的决定吧就是定住压力还是决定这个东西要做所以所以
哈喽各位听众朋友们大家好欢迎大家收听从 0 到 1 我是翅膀强大家好我是 Bill 郑天逸
在《丛林盗月》第三季中我们寻找那些真诚有感染力的新一代行业领袖让他们的故事和见解能被更多人听到每期节目我们都会上传到微信公众号小宇宙 Apple Podcast 等平台
那么本期嘉宾游雨熙 Evan 是前端框架 View.js 的作者 View.js 是一个用于创建用户界面的开源 Web 应用框架项目目前在 GitHub 上拥有超过 18 万的新标数是目前 GitHub 有史以来排名第四多的项目而在 Web 类别排名下面应当说是排名第一的项目
Evan 是江苏无锡人在上海复旦附中毕业后他来到美国克盖德大学就读艺术与艺术历史毕业后他进入帕森斯学院就读艺术硕士两年后 Evan 毕业加入 Google Creative Lab
2014 年 Evan 创建了 Vue.js 的第一个版本并且登上了 Hacknews 等知名网站的首页之后他加入了另外一家知名的 Jawscript 框架公司 Meteor 到了 2016 年 Evan 开始全职工作在 Vue.js 上而今天 Vue.js 已经是前端开发领域中的主流和标准之一
那么本期节目中我们的主要内容包括在本科学习艺术史识的纠结在帕森斯学院接触到了真正感兴趣的东西后又做了哪些作品进入到 Google Creative Lab 的故事创建 ViuJazz 的初衷是什么为什么说框架设计就是不断地摄取还有全职做开源项目的模式收入 工作时长 团队规模是怎么样的以及在成为全球最流行的框架之一后所面对的挑战
那么本期节目的片头曲依然是嘉宾给我们推荐的他近期最喜欢的几首歌曲之一来自刘伯鑫的 Manta 片尾也有嘉宾给我们推荐的另外一首歌好的让我们一起进入本期节目
哈喽各位听众朋友们大家好欢迎大家收听从 0 到 1 我是本期的节目主持人池邦强那么本期节目呢我们邀请到的这位嘉宾真的是非常非常厉害了在 GitHub 上面坐拥 183K Star 的
大家好 我是游宇熙现在是独立开源开发工程师天天在家上班的人
哇厉害厉害了气定神闲啊很棒这最近在做点什么就是今天今天其实我们现在是正在跨时区吗就是我给我们的听众朋友们介绍一下因为大家没有看不到我们啊我在香港然后现在是晚上然后呢啊爱文明时代新泽西州就是现在是早上的十点钟没错没错没错刚在这两天正准备发布一个新的小版本三点一然后今天早上刚在那个 review 一些文档方面的东西啊
又更新了吗对这个小版本没有太多东西主要是一个帮助大家从二的这个大版本升到三的一个一些辅助性的功能 OK 那就是今天的一天其实你会做点什么呢就是星期五今天是星期五典型的一天其实就我现在的工作安排吧就完全是比较随意的就是一般来说我会我比较喜欢这种
所谓的 focus cycle 给自己大概定义一下我现阶段会有一个小目标比如说之前几周的主要的经历都是说我要发布 3.1 那发布 3.1 其实就是一个 milestone 这个 milestone 里面包含很多细小的东西就比如说修一些积累的 bug 然后完成一些原来 plan 好的功能然后发布前比如说现在就是零发布前要做好各种 logging
logistics 就是要准备好各种文档的更新先把文档的这些 pull request 先准备好然后要准备好 change log 然后可能还要准备一个 blog post 然后这些东西全准备好了然后还要跟我们比较大的一些第三方的库让他们跑一下我们的 beta 确保没有没有一些意外的 regression 等等等等就这些东西都准备好了然后才能发布这样子对对对
好的那刚才在我们的开头呢我们也已经向我们的听众朋友们简单的介绍了一下你刚才我们开场的时候提到那个 GitHub 排行榜其实在这个十点呢我看到 ViuJS 是在全球排名第四但是这个前三名当中两个是教人学编程的
另外一个是 996.SU 项目所以说如果要讲这个纯代码 open source 的话我觉得就 VLGS 是排名第一 ReactJS 其实是紧追在后面是 169K 所以都得我觉得都得直呼专业还是这样那么今天呢
就得让我们哎呀这个我不是要引赞我偏批亲一下对对对对今天这个那么今天呢就让我们走进游雨席 event 的这个开挂人生深度分享一下这个 event 在把这个 view jazz 打造成业界主流框架的八年之间这个鲜为人知的心路历程对对对好的那么第一个问题其实我想问刚才我们提到就是说你是无锡人但是你在上海读了高中复旦副总就是你当时是一个人去那边读书的吗是什么情况就是对就是
复旦复中当时有一个所谓的外地生项目就是它面向全国可以任何地方的学生你都可以去考只要考得上就可以去然后当时大概一千多个人去考然后他取了五十个人然后这个好像只有大概他们只做了大概三四届的样子就是后来就没有这个项目
对 OK 就是当时大概每一届我们有 50 个左右的所谓外地生就是然后是一个人去的然后就是住校可能你当时的那个生活是怎么样子的福代附中其实过得特别开心因为福代附中是属于还虽然号称是上海四大但是就是因为可能生源本身就很强所以它对于应试逼的不是那么就是不是那种特别 hardcore 的那种学校会有很多课外的这种东西然后我当时就
高一高二基本上都在搞一些什么学生会啊什么当时有什么广电部辩论社什么英语社什么乱七八糟这种东西就是其实挺有一种大学校园生活的这种感觉就不是特别硬式的那种状态所以整个回想起来其实我可能就我初中是上在无锡上了一个特别硬式的初中特别 hardcore 然后到了高中我就一下觉得特别解放特别开心他可能是不是有点像伯亚教育那样子
对对对没错甚至就是博雅到后来听说还就是有些家长还不高兴就说你们不够硬是高考分数这个你们还是得抓这样子那后面这个就是到了高三之后然后就是你们要选择就是自己的未来一个出路你上次跟我提到说这个就是上大学的时候其实你家里面是有另外一个想法
他们可能想让你去学金融什么之类的然后但是你执意想要去学艺术是这样对这个只是一个专业方面的选择因为当时升了美本之后美国的大学的好处就是对吧你升的时候不需要订专业去了以后
然后一般是到大二最迟可以到大二下在 declare major 我刚去的时候我就说我就不不想决定我先学什么我先去各种课都上一上这本身就是所谓 liberal arts 的这个一个他的他的意愿就是希望你进去先前两年做通识教育对吧就是因为像像 cogate 他作为一个 liberal arts college 他的 curriculum 他有个所谓的 core curriculum 就是你在 natural science 啊
social science 还有这个 arts 这些领域每个领域至少要上两门课就是会有一些这样的硬性的就是强制你每个领域都要去接触的这样一些要求但是虽然是这样但是整个就是当时很多去美本的因为当时就是我们这些一起申请去美国的这些小伙伴也有一个 community 就是 CUUS
然后再加上本身 Cogate 在金融界也是有一些这个传统的就是
我们在业界也有不少校友再加上就是本身我们这些美本留学生你有这个毕业就业的这个压力你需要希望能找一个这种比较会 traditionally 比较可以更高的概率给你发 H1B 的这种行业当时的主流大家都是会说学这个金融 math econ 然后大家然后去
去投行就这典型的就是大家毕业去一些这种像我当时有很多小伙伴有的最惨的当时就去了黎伊门 brothers 哈哈
然后结果他还实习然后实习完了拿到了 offer 结果在毕业前 Levon Brothers 就垮了然后他就特别郁闷然后但是就我自己上了一些 e-con 的课以后就觉得说我对这个东西不是特别感兴趣就是或者说我对于成为一个华尔街之狼并不是就觉得那并不是我这样的人去适合的一个这种生活方式而且我也不太
就我不是一个特别怎么讲特别 driven 的人就是就对我不感兴趣的事情我就特别没有动力就是
那我感觉到就是学习后面你决定去学习艺术但我就感觉学习艺术这也算不算是在当时算是一个比较偏的一个选择呢因为我感觉这个学一来吧这个我对艺术的这个就业我可能也比较了解比较少就我也挺想问说那当时如果你们读了这个专业一来毕业之后大家都是怎么就业你是怎么考虑的呢还有一个就是就读艺术我感觉读艺术的人感觉都挺有个性的你觉得自己是一个非常有个性的人吗
我觉得我属于就是比正常人可能稍微有那么点个性但也不算是特别有个性的人我整个的
大部分的选择还是处在一个循规蹈矩的这个范围里面我其实是一个比较 risk averse 的人整体上来说但是就是我人生中最大的几个决定反而都是比较的反主流的这种选择其实也挺矛盾的你那个时候的性格跟现在这个性格你觉得自己变化大吗
我觉得一直都没什么变化吧对我的一个最高的原则就是说不要强迫自己去处在一个每天都需要做自己不想做的事情的这样一个状态里面
当时有什么让你特别 struggle 的事情吗就是特别是在做这样的选择的时候还是其实是你比较随道去程的一个东西虽然家里人在阻止你但是你觉得还是可以自己做决定对当时的 struggle 就是还是有压力吧因为我家庭也不算是特别有钱虽然就是说我去美国也拿了这个 financial aid 就是但是怎么说就是我的父母还是有很大的希望希望我可以在美国留下来然后找个工作
这样子所以就是说再加上本身就是说去美国读书然后还是希望能够在毕业之后在美国的这种不管是做什么行业因为希望可以就是在美国的行业至少有一些经验对吧这个不然就觉得你读完书就回去那肯定是很亏的一件事情就觉得至少当时是这么想的所以当时还是有很强的一个一种压力就是
来自家人的这种期望还有本身就是对于说希望能够在美国多学一些东西吧就是不光是学校里的东西更多的是就是你在就是进入一个行业去学习一些美国的这些东西这样的一种期望等于说我在这个 Math, Econ, 金融这些领域还是就是说在前两年还是做了一些努力
但是最终就是发现我没有办法强迫自己去喜欢这个东西所以当时最大的一个考虑就是说我是跟随主流去
去做一个就是说大概率能够拿到 H1B 大概率这个行业还不错但是我自己不喜欢的这样的一个事情还是说我选一个就是说更符合我自己的兴趣但是可能会带来一些就业上的风险的这样的一个选择主要就是这样的一个纠结但是你还是选择了这个后者
对当时为了这个跟我爸还争执了很久或者其实我觉得能不能借这个机会就是你能不能给我们介绍一下就是艺术史其实专业学的是什么对其实怎么说艺术史当时学艺术的艺术史也算是曲线救国因为我真正最感兴趣的还是在真正感兴趣的可能更是我后来在 Parsons 学的那些东西
那个是就是跟我的兴趣是 100%重合的东西那在 Cogate 作为一个 Liberal Arts College 它没有这些特别业界的东西它没有这种设计或者是说 Interactive Media Arts 这些比较前沿然后也比较更贴合这种数字化的这些新浪潮的这些东西它更多的还是一个比较
academic 的艺术的方向就是更多的有一些艺术理论艺术评论艺术史艺术史的话就是你会去需要学习历史所以就是真的就是从历史上每一个阶段有过些怎么样的这种艺术的浪潮然后这个浪潮里面有哪些代表人物他们有什么代表作这些代表作背后的艺术理论的这个一脉相承的这些以及它的体系是怎么发展出来的就是学的这些东西相当理论化的东西然后
然后你要说毕业之后的话这些人毕业之后可能有些会去做文艺评论专门给杂志写稿的或者说策展人
就是这些 gallery 里面去做策展去做这些类似于艺术品的前客那真正的能真正能自己出来做这个独立的艺术家的人那是凤毛领奖就是我当时所有的同学里面大概只有现在只有一个人真正是现在在做独立艺术家的真的很难怎么讲就跟你去选秀当歌手一样就是一千个人里面可能成那么一两个
还有就是一些就是说有没有 gallery 愿意捧你
就是你可能需要有一个伯乐就是有一个这种 gallery 的 owner 他看到你的潜力然后他愿意去帮你做 promotion
这个就跟这些就是 artist 为什么音乐家也是 artist 你看这些艺人也叫 artist 就是你需要有人去 discover 你需要有伯乐愿意去就是发现你这块普遇然后他愿意给你投入资源去推你就其实就是现在在 fine art 也是有这样的这个就是你得有赏识你的 gallery 的这些人愿意给你投入资源去把你给捧起来最后你才会可能成为一个就是所谓的这种
当红的艺术家慢慢地就发现这个真的走纯艺术这个路线也不是我想做的事情因为我一开始其实还是比较明确我真正的兴趣还是在数字跟艺术创造这一块交界的这一块地方其实我个人也非常非常喜欢这个东西但能不能这样说就是你还是喜欢艺术的
只不过可能就是说不是说喜欢做纯艺对对对那你这两年下来就学习了这些这个东西之后就是自己有本身比较喜欢的一些什么就是艺术理念或者创作理念可以说我到后面慢慢的兴趣还是像这种现代的 media art
怎么讲因为艺术也是结合时代的就是到后面我对这些古典的绘画这些东西雕塑这些东西就更多的是当做历史去看了我后来比较感兴趣就是这些 new media art 到后面艺术跟尤其是到了数字艺术这一块它数字艺术跟设计以及编程这些领域的这个界限变得很模糊就有一些这种比较
接近于数字行为艺术的就比如说有人创造了一个网站然后这个网站它整个网站是一个 HTML 的文件然后但是这个服务器在 serve 它的时候每隔一段时间就会抠掉一个字节随机抠掉一个字节所以你这个网站就等于是它是在 deteriorate 它有一个一个折在慢慢的越变越一个溃变的过程然后这个
这个服务等于说这个网站到了一定时间之后他就没有办法正常的方式你会得到一个 broke file 他设定到一个一定的时间之后这个网站就彻底消失了对还有另一个我印象比较深刻的作品就是因为我们现在对于 img 这些文件的定义就是一个一个像素排出来的他就做了一个正方形然后比如说 1000 乘 1000 个像素他就开始便利每一个点每一个像素
黑或是白然后就是这样遍历过去遍历所有的可能性然后这个网站就是这是一个作品这个作品就是它就是每一秒进行一次遍历每一秒进行一次遍历它会永远地这么跑下去那你 1000x1000 个像素这个遍历的可能性可能要跑好多年但是从理论的角度上来说
你这个一千乘一千的 combination 可能在这个整个历史的过程中理论上任何一幅你可以用一千乘一千像素表达的这个图像都可能在这个历程里面被它便利出来比如说我们把一幅历史名作扫描成一个一千乘一千的这个像素的一个图片文件
那理论上这个作品在某一个时间点未来的某一个时间点他会把这幅历史名作一个像素不差的还原出来就是他就等于探讨了一个就是说我们对于一幅作品的这个定义是否可以由就是说精确的这些像素排列来来定义这个作品就是一幅绘画作品
就是我们现在很多作品都已经数字化了那数字化了之后这些数字的像素能否就是说它其实是没有办法去精确地还原这些一个原作的这些每一个笔触甚至是每一笔油画这些颜料的这些堆叠因为你说去做传统绘画的话其实很多细节都在就是说你对笔触的控制以及对你颜料的这些层次层次感等等的这些东西
你像素化之后它是没有办法体现出来的但是从另一个角度来说如果我们只从像素的角度去考虑这个东西我光靠便利我就可以保证说只要给我足够长的时间我可以自动的生成是历史上所有存在过的名画这是
这个项目现在还在运行所以就是当时我对这一类的这种就是用数字的从数字的角度去对艺术的本质进行一些思考的这样的这些作品特别感兴趣你后来在帕森斯设计学院的时候就你自己参与过比较印象深刻的作品是什么
怎么讲说实话在帕特斯更多的还是在一个学习的状态中就是因为当时接触的新东西实在太多当时在自学 JavaScript 然后我们那个项目里面有一个很厉害的老师叫 Zack Lieberman 他是创造了一个框架叫 Open Frameworks 是用 C++做这个 Creative Coding 的一个
对 简称 OF 等于说它是最早一批开始用程序去做一些就是用 creativity 相关的东西那这些其实它涉及到很多东西比如说图像就是 computer vision 里面就是等于说当时你其实我们需要学一些挺基础的一些这种方式
物理啊这种计算就是计算机的这些物理模拟啊还有一些这个 CV 的基本的这个视觉处理啊一些就这里面有很多东西你如果说让一个设计师来学这些东西是很难的
但是就是 OpenFrames 它做的就是说我帮你把一些业界的比较成熟的库比如说 OpenCV 是一个业界的一个业界标准的这种 Computer Vision 的库它给你包一层然后给你一个用比较能够简单的设计师也可以调用的方式让你可以做出这样的东西来然后
通过这些东西你可以做出一些很有意思的东西就是你需要有一些基础的这些技术方面的 building blocks 然后你才可以解锁一些你的想象力就简单的来说你一个整个 category 就是通过这个对于人的图像识别来做一些艺术的东西因为有了图像识别之后你的艺术品可以开始跟你的观众产生互动
这个是传统的静态的艺术是完全没有的一种能力就听起来有点像装置艺术那些装置艺术对对对装置艺术其实很多现代的你看装置艺术能够跟人互动的它要么是通过图像识别或者是通过这种深感或者是 motion
或者是这种甚至是做温度就是各种 sensor 当时我们也有一些这种所谓的现在好像叫 ubiquitous computing 还是什么就是比如说用 ArduinoArduino 是一块小的这种电路集成的这种控制板然后通过这个 Arduino 你可以接入各种 sensor 可以测温度可以测湿度可以测光可以接摄像头等等的 accelerometer 测你的加速度或者是你的 tilting 的这些东西
就是各种 sensor 接到这块板子上,Arduino 可以再给你一个比较好用的一个编程的这个入口,你可以写一个比较简单的一个类似于 Java 的一个 subset 的这个语言,然后就可以很简单的去跟这些各种 sensor interface,然后你通过这个你还可以再接到你其他的东西,比如接到一个用 JavaScript 写的一个 interface 上面,然后你可以再进行控制,
但是就很好玩就是各种标准 block 你可以发挥你的想象力把它全部拼在一起做出各种各样有意思的东西对我觉得这个好像是有点像是感觉有点像是什么第三只手第四只手那种感觉就是无形中给你增加了很多那种就是跟世界交互的方式那种可选项你发现就是你可以通过编程对就是到最后你就会发现编就是说编程是一以贯之的就是说嗯
它拓展了你因为很多时候最后我你对于艺术品的定义创造者的定义就是说你创造一个东西之后这个东西它跟你脱离了关系它成为一个自己处在一个运行状态中的东西那这个东西它通过编程以及这些各种就是拓展到现实中的这些 sensor 的这个东西你可以赋予它一定程度上的这种所谓
所谓 autonomy 它成为了一个你赋予它一个运行的逻辑然后它就可以执行出一些有意义的结果出来就是说从这个角度来说编程你创造一个程序跟你创造一个艺术品在这一点上我觉得本质上是有很相似的地方就是
对其实你讲的这个东西刚刚就是本来可能想问就是你为什么接触 JavaScript 这样听下来其实接触 JavaScript 或者是 anyway 或者甚至可能是接触 C++还是什么其他语言之前都是非常就是在这段就是你在做的这个事情当中其实是非常自然的一个事情因为它只是你去实现你的创意的一个工具对对对没错然后其实你刚讲那个就是有相似那一点的那个东西就是你的背景也让我想到了就是这个黑客与画家就是现在这本书已经讲烂了我觉得大家讲到这本书就觉得可能
是因为我就感觉就是说大家现在可能已经普遍的意识到了其实艺术和程序他们其实都还挺共通的就是他们都是在一份就是非常有创造力的一个行为那么就是在我们现在这个时点上就是从你现在回过头来看着那一件事情就是你觉得在你又做艺术然后又做程序你有什么经验吗就有没有什么就是 take away 可以分享其实就是我大概刚才讲的那些感就是说嗯
怎么说我是我现在是越来越觉得就是说在做出作品创造这一点上就是说创造的冲动是没有办法后天去形成的后天去强行把它给弄出来的我们作为人的创造冲动都是先天的就是每个人应该都有一种创造的一种欲望当然每个人创造的欲望强烈程度不一样就是关键在于你是否能找到一个你自己又可以有一定的 expertise 有这样的手段去把你创造的欲望去
用一种你自己觉得满意的方式去把它给表达出来但是就是我是觉得说每个人创造的欲望都是与生俱来的看你是否能找到一个最适合的方式最适合的途径把你那种创造的这种东西给表达出来找到最衬手的那个方式我觉得是比较重要的
呃像我来说的话就是我其实一直都是觉得说我是一个很想去创造东西的人但是等于说我从小到大这个过程就是我一直在摸索说哪一个表达手段是最适合我的一开始我以为是艺术后来我觉得说哎会不会是设计就是有一段时间我想做平面设计师但是后来慢慢的发现就是呃
写程序给我带来的这种创造输出的这种感觉是最强烈而且也是最顺畅最自然我在写程序用程序去创造一个东西的时候我可以很自然地进入那个 zone
我不需要去逼自己进入这个棕我自然而然就会进入那个棕那我觉得我找到了这样的一个东西然后我再往这个方向去发展就是比较自然而然的事情如果我要强迫我自己去做个平面设计师其实我也做一些平面设计也做过但是我就发现我在做平面设计的时候的状态跟我写程序时候的状态是不一样的写平面设计做平面设计的时候我会
我自认我也有一定的天赋,但是我发现我跟那些,就是我在 Google,比如说 Google 的一些同事那些设计师做的时候,我就发现我们的状态完全不一样,我在做的时候就是很纠结的那种状态,就是虽然可能他们做的时候也会有纠结的时候,但是就是,就是我会发现这里面有一些本质的区别,就是我在做设计的时候,就是始终是一种有点水流不畅的感觉,
虽然最终有的时候也可以做出一些我觉得还不错的东西但是跟我写程序的时候状态完全不一样写程序的时候就是我我写着写着突然水管子就开了然后就那个 flow 就是会有那种 flow 的感觉我觉得我可能可以想象一下那种感觉我觉得我可能也有过那种感觉
对就是有个叫中文叫心流如果你在做一件东西的时候可以进入到心流的状态我觉得这个就是你就找到了一个跟你的创造欲望契合的表达手段我觉得这个是如果你想要成为一个创造者你需要找到这样的一个状态我想到这个东西我突然想到就有些人可能会靠一些物理的就是外界的手段去帮助自己达到这个状态吧
比如说这个我知道有些人这个达力不是说他嗑药吗对吧就是我音乐家也有这样的对然后我最近就是发现这个我最近的一个手段就是喝红牛就是要喝很多红牛然后让自己心跳加速加的特别快加特别快之后我就会就是我们公司有一个小房间我就把自己关在小房间里面然后那一天就感觉自己效率特别高然后呢到了下午六点钟就脸红通通的走出来
然后呢就是特别满意的就下班了对每个人可能有一点这样的手段对像你刚刚提到就是其实就是哎你自己心其实最好的状态就是你自己心理的状态达到那其实是最最开心的一个事情对对对本身也是一个就是说嗯很多时候你这些技术手段也是需要去磨练的嘛那你需要大量的时间投入就如果你这个大量的时间投入是需要靠意志力去强迫自己的这个过程也会越来越难但是如果说你可以经常现在进入这种
flow 的状态那么你这个时间投入就不一定变成了不一定是折磨甚至反过来是给你一种愉悦感的这种状态的话那你这个自然而然长时间投入也就更简单就是我其实还想问一下就是你那个毕业作品做的是什么东西你还有印象吗当时毕业作品其实做的不太满意当时是怎么讲有点走偏了因为当时有点受这个呃
因为我们那个项目当时还有一些往创业这方面的一些这个当时会有当时我们还有一个纽约有一个 incubator 叫 techstar 然后他们还有一个 partner 过来到我们这边来做客座教授还讲了一个就是
等于说有一节课就是专门讲这种技术创业的这种东西当时就等于说有点那个觉得说我要把我的这个地设做一个就是这种类似于做成一个说不定可以做成一个商业项目的这样的东西
结果做了一个有点偏产品的东西就有点像一个 personal 的这种数据的 dashboard 这样的一个东西那个时候还没有这样的手段现在你看有 Apple WatchApple Watch 它给你一个你的人的身体状态的一个这些数据你看你在 Google 你的浏览记录你的这些我们现在其实每天所有的这些你交互的这些数字的东西都会给你产生数据这些数据在广义上来讲等于说我们现在是把数据卖给了这些大公司
这些大公司在利用我们的数据去做各种各样的深度学习然后去研究我们的行为然后去找出怎么样从我们这边赚更多钱的这种手段所以当时的想法就是说我希望有这么一个东西就是说首先你要 own your data 其次怎么样把你自己的这些 person data make sense 所以当时做了这样的一个东西就是
假设我可以收集到关于把我所有的这些被收集的数据都拿回来然后我可以用怎么样的方式去表现它就做了这样的一个 dashboard 嗯
然后就比如说我今天的这个心跳啊我今天心情如何啊然后就然后说比如说我这个这个月我在什么东西上面花了多少时间就是然后做成了一个可以 configure 的就是你可以我可以选择说我想要把这个数据用这个表的形式放在我的 dashboard 上
就举例来说我可以在这个 deskbook 上说我要创建一个表然后显示说我这个月在每个网站上花的时间做成一个 pie chart 等等差不多就是这样的一个东西我觉得现在这个数据不属于自己确实是一个大问题没错
你可能我不知道你在美国有没有这么一个情况就是你的手机里面会收到很多垃圾短信因为我内地的号码就是每天收到一大堆拼多多然后这个国内这个手机号的隐私是个很严重的问题就国内几乎所有的服务都要手机号在美国其实这里还好一些就是美国因为大部分账号注册都不会问你要手机号
但是美国可能换了一个方式叫垃圾邮件垃圾 call 就是会收到很多莫名其妙的这种给你推销什么保险这种特别多我回过头去想问一问刚刚我觉得漏了一个想问的事就是说那你这个在本科毕业之后你学完艺术史之后这个当时有什么选择就是怎么就到了这个帕森斯设计学院当然你前面已经提到了就是说你后面知道在帕森斯就是你学的这个东西是你非常感兴趣的一个点但是当时你是一个怎么样的选择
当时对我来说就是很简单就是纯艺术这一块这个领域找不到工作的在美国或者说很难当时可以怎么说呢就是你纯艺术的话你毕业你说去做给杂志做文艺评论的吧这种一般都是你对吧他不可能给你工作签证的策展这些就是说整个这个领域他对于国际学生是没有一个传统需求的
这本身就是一个很少有国际学生会去涉足的一个领域不像这个就是计算机行业以及金融行业这两个行业由于他们就是传统一直是大量的吸收这些国际的留学生人才的
就是说他们对于整个给你招你这些国际学生给你 H1B 这个是非常成熟的一套东西所以说在纯艺术这个领域再加上本身我发现就是说我感觉就当时我也等于说在做 B 社的时候做了一番又做了一番思考就是说很显然我并不想去做一个纯艺术家
我还是希望就是说做的东西可以稍微接点底气但是又带一点创造性然后我就去把所有的这些设计学院的 program 全看了一遍就是这些 master program 然后就发现还有一个叫做 master of fine arts 的东西而且有不少 program 他们就是在 focus 在这个设计跟技术的这个交界的地方
其实这样的项目有不少除了 Person 之外 MIT 有个 Media Lab 也很酷而且 Media Lab 超难进当时还有 Casadena 的 Design School 好多名字都已经快忘了然后 School of Visual Arts 然后 Pract 然后加州那边还有好几个当时上了一圈其实拿了不少 offer 然后最后还是觉得说还是去纽约吧大城市去感受一下提到这个其实后来还挺
中间有一件挺得意的事情就是我当时去 Parsons 之后进入数字设计这一块之后当时有一个等于说这块的先驱叫 John Maeda 他是一个著名的设计师也是最早开始搞一些这种数字跟设计之间的这些理论的研究的一些人
一个人他当时 MIT Media Lab 后来去了那个 Rode Island School of Design 如果说设计学院排名第一可能 Rode Island 是公认的第一对就是他后来是 RISD 就是 Rode Island Institution of Design 的这个校长
Risky 的校长然后就当时等于说属于是我在读研究生的时候经常看他的一些这种以前很久以前写的文章然后说哇这个是先驱后来他在推特上面有一次他在推特上面居然还公开说评论说他在学 VJS 然后还还吓死了我
然后说 good job 之类的所以当时就特别激动我以前看他写的书的这个人居然就是也在用我写的东西当时还挺激动的真的是这个是就是 14 年之后的事情了吗对不对对这是后来 VJC 已经比较流行之后的事情你现在走在街上有人会为你要签名吗那不至于除非是在 VU 康复之类的场合不然路上当然是不会有人认识我
还有另外有意思一点就是我们的同学大家进入这个项目的人大家的各自的背景也都不一样有些人是平面设计师他说我想要去更多的学一些技术方面的东西有些是我有有些同学是这种以前是已经非常有经验的这种工程软件工程师他说我写工业软件写写写腻了我想搞点艺术方面的东西
有不同的这个 spectrum 的不同的这种极端的人背景的人进来然后也有一些甚至是就是说是个创业者他说我就是想学点技能然后我自己可以做 prototype
大家各种各样不同的想法不同背景然后你要跟这些人组队去做不同的 project 怎么讲就是有点像这种一切都很混乱一切都很未知每一个下一个学期会发生什么事情完全不知道就是这种感觉那真的感觉每天都很刺激就怪不得你说很开心但也很累所以你后面这个毕业就是什么时候慢慢清楚就是自己觉得就是未来要干什么就毕业之后你是加入了 Google 的 Creative Lab 吗
这是你当时的唯一选择吗可以说是这样就是说我一开始快毕业的时候我比较倾向于是去一个这种 creative agency 还是严格来说是属于广告行业但是会偏向于用一些比较尖端的技术手段去做一些比较 unconventional 的这种
商业广告的这些团队有一个网站叫做 creativeapplications.net 对就是你去看一下这个网站上面的案例的话你大概就可以理解我当时感兴趣的这个业界是一些什么东西整体上来讲就是处在于纯艺术跟商业化广告中间的这样的一个
范畴但是又结合通过用技术手段去作为他们的表达方式然后 creative lab 这个事情其实是 creative lab 是他们来找的我他们的 recruiter 直接来找的我当时我都还没有开始想就是申请申请工作的事情
就是等于说正在我想要开始找工作的时候 CreditLab 直接就找上门来了你当时是不是做了一件什么事情对对对我当时做了一个叫 Clear 就是 HTML5 Clear 当时有一个叫 Clear 的应用最早的在 iPhone 上面用手势进行这个 To Do 的处理的应用等于说它开启了这个用左滑右滑这些手势来一个新的交互的一种范式当时我看到这个之后觉得哇这个交互好酷啊
但是我当时又不会写 iOS 应用我当时只会写 JavaScript 正好那个时候又是 Google 它当时在推很多叫 Chrome ExperimentsChrome Experiments 就是很多就是说在很久以前大家就觉得网网浏览器就只是渲染 Document 的一个东西大家印象里网页就是网页就是一堆字一堆 box 那 Chrome Experiments 就等于说我
Google 说我要颠覆大家对于浏览器能做什么这样的一个固有的成见所以 Chrome experiments 就有好多这种什么直接在浏览器里做一个 3D 的这种互动的 MV 还有什么做这种 3D 的 webGL 的地球的这个 visualization 还有做这种把你整个网页上所有的东西全部变成 physical 的然后可以掉下来互相碰撞的这些各种各样很酷的这种实验大家就等于当时就觉得 what
浏览器还可以做这种事情所以我当时就看了这些就觉得哇真的其实 JavaScript 潜力很大呀所以也是等于说我当时就决定说嗯我应该认真学一学 JavaScript 所以当时就自学了 JavaScript 然后又看到这 Clear 然后就觉得说哎这个很酷我来试试看能不能把它的这个交互
在浏览器里面给它复现出来所以当时就做了这么一个小 demo 做了这个 demo 之后结果这个 demo 它上了 Hacker News 的首页也是很多人就说没想到浏览器里也可以做出这样的交互来
所以这个东西其实还引起了一些大公司的注意的当时还 Facebook 那边还还等于说来问我有没有兴趣过去实习然后我还特意飞去了 Facebook 总部去面试结果去面试之后发现我当时的 JavaScript 还是太菜了当时我 JavaScript 就是野路子的 JavaScript 然后我印象特别深刻的就是中间那个一个一次一个白板面试然后他叫我说
叫我手写 JavaScript 那个 prototype inheritance 然后我当时就懵了然后就搞了半天没搞出来然后很理所当然那次面试就没过然后没有拿到 Facebook 的实习不过我当时其实也没觉得是个损失这次标题就写上 Facebook 后悔莫及什么什么之类的那倒也不至于开个玩笑
有一点是我特别想讲的一点就是你说 JavaScript 就是说你刚说自己野路子其实我觉得这个可能就是所谓 JavaScript PHP 或者什么之类的语言他们非常包括 View.js 我觉得非常厉害的地方因为做了一个工具有些人觉得就是说
我学会了一个非常难的工具他觉得我特牛但是做出一门让所有人十分钟就能上手的工具我觉得更厉害就像你刚说的要找到一个称首的工具去表达自己的意愿然后这个东西很容易的去表达自己的东西我觉得就是 Josh Cope 做到了 ViuJS 在他的领域也做到了
还有包括 PHP 在 web 的领域那些地方也做到了所以我觉得就是说其实我觉得这个是一个这个东西非常厉害的原因之一对可以说其实这一点说的还挺符合我做 view 的一个一部分的这个初衷就是说为什么我要把 view 的一个设计重点放在就是说容易上手这一块就是因为我自己是一个非科班出身然后去做编程做前端的这样的一个
一个路径然后我希望说我在做 view 的时候我也希望说一个像我这样就是说可能没有从很传统的 CS 背景过来的人
也可以通过前端 JavaScript 通过浏览器去很快的可以把我的一些有创造性的想法把它实现出来其实是有这样的设计的想法在里面所以当时后来他们就是 Facebook 找了你然后 Google 也找了你当时对除了 Facebook 还有一些等于说一些面试的但是后来就是 Creative Lab 这边等于说他们是有一个项目叫做 The Five
现在不知道还在不在跑这项目但是就有好几年就是每年会有会招他们会招五个 new grad 就是五个刚毕业的新人然后这五个人是组成一个类似于理论上是组成一个团队了会有一个 copywriter 就是写文案的一个文案一个 creative director 就是创意总监一个 graphic designer
一个平面设计师然后一个 strategyist 就是所谓叫策略师就是一个万金油然后再加一个 creative technologist 那一届的 creative technologist 就是我等于说这个小团队大家一起做一个创意项目然后如果涉及技术方面的就由这个 creative technologist 来负责实现这样子所以当时就等于说去他们问我说你有没有兴趣来做这一届的这个 five 这个东西
然后对于我来说当时就是 dream job 就是完全是百分之一百符合我想要找的工作就是哇做的东西的领域是我感兴趣就具体做的事情是我擅长的事情是我感兴趣的事情同时又是怎么说 google 大公司对吧然后可以给我 h1b 然后这些后面的确实大公司也有大公司的好处尤其是对于职场新人来说所以当时就说我靠这实在是运气太好了就是
就是一个最感觉就是最完美的一个 dream job 就直接自己跑过来了谁能拒绝这样的事情呢对真的是我现在想都觉得自己运气特别好这个听了一下就是哦终于明白了原来我是插在这就是哎呀原来我是插在这个就是首先我就不会上推特
开个玩笑开个玩笑对现在回想起来的话还是对于就是说可能我当时就是在找工作这方面 self promotion 还是做的还是有一些成功就是做了做了个小 demo 然后我当时很多代码都放 Github 然后
等于说现在大家慢慢的也很多程序员也开始意识到就是说这种 personal brand building 就是对于你找工作是很有帮助的一件事情其实当时我也没有很刻意的去往这方面去想所以当时就是说你作为一个这种 creative technologies 的话有一个 portfolio 去展示你自己的东西是一个很长的
正常的就是艺术家也要有个 portfolio 当时就是因为我是从设计这个方向过来所以我很自然的会想要去给自己 build 一个 portfolio 来展示自己我觉得这个比一个简历更有说服力大家看你做过什么是最直接了当的尤其是在创意行业对我非常赞同这一点我觉得在 CS 和这个设计方面我讲得粗暴一点拿纸笔你就能创作了然后
你说我们程序员就拿一个就是拿个笔记本电脑 2000 块钱你也可以写是吧不需要真的写很重的东西但是有一些人职业我觉得真的可能就是比较稍微比较难表达出自己在里面那些洞见就是他真的需要很强的机遇可以先拼他给你拉上去
编程语言,我们现在这个就是以前人创作雕塑,要用石头和这个什么就是那个钉子,然后去凿去弄,然后编程语言反而也就是我们的锤子,但是这个是最容易拿到的一个锤子,就是你只要说它就行了,你就在那边就手也不需要磨破,你就写一写,然后说你创造了一个雕塑什么之类的,我觉得这个很酷,对。
某种程度上来讲我现在听回就是那个帮大家设计锤子的人对你是什么时候开始写这个就是 view.js 的就是当时是什么原因促使你就是开始去做这么一个事情我看到网上说当时是你是接触了这个 angular.js 然后写的写的你感觉当时因为我在 creative lab 我们当时就要做好多这种交互原型然后需要做得很快所以
其实很长一段时间我都是等于说手写就是全是 vanilla javascript 当然这个手写慢慢写着写着自己也等于说会抽一些这种常用的这种工具啊小小库啊出来
但是就没有正经的说把它设计成一个框架后来有一次我一个同事他我接手了一个同事的项目他里面用了 AngularJS 旧版的那个 Angular1 然后我当时用了一下就觉得说哎这里面有一部分还是挺酷的其他有一部分就感觉这对我来说没啥用
后来其实最早的初衷就是说因为其实很长一段时间那个时候大部分人除了 Angler 之外当时就是最多用的就是 Backbone 加 JQueryBackbone 它不涉及任何就是说所谓的数据和界面的同步所谓是 model 和 view 之间的同步它根本就不管这事你怎么同步是你自己的事所谓模板引擎也好用 JQuery 去手动操作这个 DOM 也好
当然就是其实那个时候等于说前端还是在一个几乎就是石器时代吧跟现在比起来那石器时代的这个人们就是等于说打个比方的话就是
你打个链你还得先拿块石头自己凿出一个箭头来然后才能去打链那就是等于说工具都很原始而且最大的问题就是说所以说我当时只是单纯的想解决一个说我现在有一个对象这个对象是代表了我的数据我的状态然后这边我想要描述我最终生成的这个
界面是从这个完全是从这个状态去映射过去的那具体最后这个界面是怎么渲染成这样子我不想管我要交给我的框架去解决就是我只想说我声明了状态然后我修改状态界面就自动更新就是这样一个
这样一个最初的诉求那 Angular 其实当时就已经解决了这个问题它有一个模板的语法然后你照着这个模板语法写然后塞给它一堆数据然后你去修改数据它自动就把这个界面给更新了但是 Angular 除此之外还给你好多好多其他的东西甚至是你需要把你的整个应用按照 Angular 想要你去设计的方式去写当时我就觉得说这个有点难
我想把里面我感兴趣的东西抽出来同时呢又作为一个练手的项目又我又可以自己去等于说挑战一下怎么实现它就是差不多就是这样的一个初衷而且同时就是当时也有一些技术上的手痒吧就是因为我研究了 Angle 的实现他这个东西居然是这样实现的那为什么我不能这样实现呢我可以换一个方式去实现就是一开始就完全出于手痒然后就自己去尝试去实现这样一个类似的东西
所以也可以看到就是比如说在模板语法方面是受了 Angler 的一些这个影响但是就是说内部实现可以说是完全是可以说我当时就是觉得说 Angler 的所谓的它的内部实验用的叫脏检查我当时就说这个 JavaScript 现在有一个当时的所谓的新功能
这其实也挺有意思因为当时大家都还要支持 IE6IE6 支持的 JavaScript 这个功能是非常的鼓救了所以你当时也要 coverIE6 甚至 IE8 什么之类的不当时我就是等于说当时做一个最初的决定就是说我就不支持 IE8
这样我就可以用一些新的语言功能了反正我做给我自己用当时我们在 Google 内部做的东西全都是只要支持 Chrome 就行了而且 Chrome 当时永远是最新最好的这些功能只要 Chrome 出了一个新功能我们立刻就能用因为我们全都是内部的 demo 我们当时玩各种什么 WebGL 啊什么 CSS 的 3D Transform 还有什么 Web Speech API 这些东西都是当时在 Chrome Canary 里面甚至是这个
刚在 Chromium 里面刚 set,然后我们内部就直接用上了,就是特别爽。
哇确实确实这个听起来就棒多了到什么时间点你是觉得就是真的觉得你怎么就把它发布到外面去了呢是你的同事开始用了吗还是怎么的还是那种习惯嘛就是说我自己做了一个东西想把它等于说作为我一个作品还是希望能够你投入心里的东西总希望可以得到大家的这个认可我觉得作为创造者你都有这样的一个你创造出来的东西如果没有被人去
没有被人去评价那你这个创造的整个过程是不完整的甚至可以说某种程度上来讲因为我们在 Creative Lab 做的很多东西我们做的这些原型很多就是说做在内部的 Evaluation 会议里面给这些高管看然后高管看的时候这个好我们把它做成一个真的产品然后转手之后就丢给这个 Engineering Team 去处理了我不是最后实现这个真正给用户做的东西的人
我是等于说这个东西被内部已经被消化掉了这个是个取舍吧我们的好处就是我们不需要考虑维护成本我们不需要考虑最终的兼容性而且我们想法来得非常的快想到一个想法立刻就做做出来了做的酷炫只要效果酷炫就行就不需要那么多工程上的考量就是完全是追求快速的把创意可以做到感知的程度就等于说我们整个部门就是
针对这样的场景去优化 CreditLab 就是一个快速地把想法转变成一个可以摸得到的原型的这样的一个地方听起来这是一个非常快乐的事情对 是很快乐的事情当你做这样的事情重复做了两年之后你慢慢也会有时候想什么时候我可以做一个最终就是用户手里能用的东西呢
所以 Vue.js 我希望就是说除了这些内部的而且很多东西都是 confidential 其实我在 Credit.com 做的大部分的项目都是 confidential 不能放到 portfolio 里面所以当时就觉得说我还是希望有一些可以拿出去公开的就是给大家看这是一个东西然后最终会有人用的这样一个东西
所以 VGS 就提供了这样的一个出口就是你具体是什么时候就是放到那个 GitHub 上我在网上看到一个学习点是 14 年的时候就是登上了 Hacknews 登上了 Reddit 还登上了 Echo.js 三个就是非常知名的这个就是圈内的一个网站 14 年 2 月是等于说是公开发布就是等于说我写好了文档有了网站然后等于说公开宣布说这个东西能用了
其实最早的 committing 应该是 13 年的下半年就开始段段续续的写了吧但是也就像我说的一开始完全就是没想过要做成什么东西完全就是
想想说我能不能做这样一个东西然后断断续续的写了到 14 年 2 月的时候就觉得说这个东西还真差不多能用了那我就给他写个文档把它来看看能不能推广一下这个推广的动机也是很朴素吧就是单纯的就是说既然我都做都做出来了那就还是希望能给大家用一用至少得有人用这个东西才算是完成了我这个创造的这个过程嘛
对我就非常赞同这一点这有点像是就是你必须要跟人互动嘛就是到最后就是互动的这一点才是一个就是一个才是一个作品生命力的一个开始我觉得应该这样说你当时就是这个东西我觉得就是整个写完我是觉得还挺复杂的就是我没有用过 Vue 的最早的那个版本但是你当时里面肯定有涉及到一些这个语法什么 tokenizer 分词器啦什么之类的还有模板这些都是要自己就是你当时也是属于边学边做吗嗯
对其实最早的那个版本是属于偷懒就是那个 HTML parser 我是直接拿了一个现成的然后 fork 了一下拿了一个轻量的 HTML parser 然后在它上面来做 view 的特有的语法的这些处理因为 view 的语法是跟 HTML 是兼容的它可以是它是基于 HTML 的这个词法上面再多一些这个 extension 所以可以基于一个基本的 HTML 的 parser 在上面去做 view 特定的一些这个处理就行
那对于这样的东西来说当时你学这个东西会是否会让你觉得非常 struggle 呢从你的这个经验来看是不是这意味着就是大家这样东西其实并没有想象的那么困难当你真的想做的时候都是可以一个这个就是都是可以创造出来的是啊编译原理这块东西其实我也真的是边做边学的可以说我在写第一版的 view 之后当时我是编译原理几乎就是可以说是个小白就是
对于什么这个 tokenizing 还有这 AST 还有这些等等我当时就是完全就是说我也不懂我就看看能不能瞎捣鼓能不能捣鼓出来这样一个东西你如果去看 View2 的这个编译器的实现其实是非常糙的就是非常简陋的一个东西
我们在 View3 里面现在稍微正经一点了我们有自己的 Parser 然后有 Transform 有 ASTCodeGen 等等就更像一个正经的编译器当然就是从更严谨的角度来说跟真正的工业级别的编译器还是就是真正的工业级别语言的这些编译器还是完全不是一个性质
就是因为我们也是要追求清亮的我们的编译其实可以跑在浏览器里面所以有不同的这些 constraint 也有一些不同的设计上的一些取舍明白了你当在做 view1 的时候就是还是属于全权是自己一个人在做什么对完全是最早版本因为完全就是个 personal 的一个 hobby project 我知道你后面就是后面去了另外一家当时其实是非常火的一个 javascript 的团队啊
叫做 Meteor 然后我也想然后我这边想问的可能是说就是其实创建框架这个东西特别是这样的一个怎么去解释一个怎么说呢就是让大家说你要按照我的想法去创造一个应用就像 Angle 一样就像 React 一样说你要这样写这样这个视图会这样的会被解释创造这个东西其实是在重新思考一个
事物怎么被表现怎么被维护然后呢怎么又持续发展一个过程我觉得会不会有很多这个非常难受的部分就觉得就是你因为你你我觉得可能会那种感觉就是我想表达的说呃
你想要追求完美但是事情就是事实是有摩擦力的觉得这样做也不太好然后那样做也不太好你想要这个东西在这里漂亮一点什么之类的就是对就是一种取舍对对而且你加入了 Meteor 之后就是同时你又面对了两个框架你是我觉得这边可能问题太多我们一个一个来对所以我想说这个你当时在设计这个东西的时候有没有什么让你自己非常难受的一些过程或者是让你最后自己比如说自己跟自己和解了甚至
可以说慢慢的也是觉得说框架设计这种东西到最后都是一些取舍而且就比如说最早的 View 设计出来之后然后后来大家老拿 View 跟 React 去比较了
然后就是可以说我们在设计的时候也会意识到说有一些 react 具有的一些能力确实 view1 是没有的就比如说灵活的用 javascript 去表达你想要表达的视图的这个结构
这就是 Virtual DOM 的一个定义 Virtual DOM 就是说我用一堆 JavaScript 对象来表达我最终想要生成的状态最终想要生成的界面那 View 的话只能用模板来表达
那而 react 由于它这个东西是一个数据结构所以你可以怎么讲自由的去生成它而不需要一定要用一个模板字符串来表达那就是说我们会整个在框框架设计即使是到今天为什么说会 react 有 react 的市场 view 有 view 的市场然后现在还有一些比如说 angular 依然其实还有很大的存量嗯
然后现在还有一些新兴的框架比如说像 Svelte 等等这些不同的框架其实里面都存在着在不同的层面比如在数据层面
如何组合逻辑在渲染层面是选择模板还是选择 Virtual DOM 还是说在中间做一个平衡折中每一个框架其实都做了做出了不同的取舍那这些不同的取舍就决定了他们所适合的这个用力以及最终他们面向的吸引的人群可能会有所区别这个慢慢我领悟到的一个东西就是说在工业是在设计一个面向
大量的用户的这个东西的时候就是你没有办法让所有人都满意更多的还是明确说你要你的这个 happy path 你的用户的 happy path 在哪里然后你去针对这个 happy path 去做优化可以说是 find your niche 然后 play your strength 这样的一种感觉但这也是一个相对的就是说所以我说这里面的平衡还是一个很有挑战性的东西就是说
当然你也不希望你 niche 到最后根本就没人用对吧所以你还是要相对的去
灵活去尽可能的去兼容更多人的口味但是呢你又不希望说你兼容到说为了兼容所有人的口味最后弄出了一个所有人都不太不是那么喜欢的一个东西所以这个度在哪里就需要去这个东西就只能通过你很长时间的具体一个一个问题去思考去琢磨最后最后你自然而然的去去找到你这个边界
这个东西是一个很难说你从一开始设计一个框架的时候就去明确的一个东西你让我看到了一个事情就是你的因为你现在这个用户量已经特别特别大百万级用户量就是这样就是里面无论如何总是有几拨人是在打架的所以如果你要让他们都喜欢就等于他们都不怎么喜欢
没错没错所以就是你让一拨人喜欢的等于是永远就会有另外一拨人不喜欢这个跟编程语言其实也是一样就是你看这个我们还在不停的就是发明新的编程语言你看当年这个 Ruby 跟 Python
现在又是 Rust 跟 Go 又真啊真啊真就是你永远没有办法说一个语言去满足所有人的口味因为大家都在用这些语言做不同的事情你觉得你是一个像 Linux 那样仁慈的独裁者吗你想成为那样的人吗
可以说事实上我们现在就是这样的模式了但是我觉得 BDFL 就是仁慈独裁者这个模式它并不是说我可以想怎么样就怎么样 BDFL 的根本定义还是在于说有这么一个人他拥有对于这些有争议的决策有最终拍板的权利这个不代表 BDFL 不需要对社区负任何责任
因为根本原因是这样的对吧社区大了一百多万人的社区我们出一个新的一个设计然后有些人喜欢有些人不喜欢社区内部如果意见不一致你需要有一个人可以最终说 OK 我来决定就是说这个平衡应该怎么做这个取舍如果没有一个人能够做这样的决策就会陷入无尽的扯皮当中那你这个社区也就没有办法就没有办法获得实际的进展
所以我个人是觉得就是说对于大型的开源项目你需要有一个这样的怎么讲就是有些项目他们采用这种所谓的 committee 机制就是 technical steering committee 就是一个六到七个人的这个技术委员会大家投票
对吧这也是可以的但是呢投票也有投票的问题你的 governance overhead 会大很多这个就是看项目而定了看你项目本身就是说是否有足够这样多对于项目的这个整个的技术的这个 context 有足够把握的人有资格来来做这样 committee level 的决定
以及就是说你要去定义怎么样来 elect 这些人定义这些人的任期这些人的这个如果这些人之间出现了一些个人的恩怨意见不合怎么处理都有取舍就是会带来很多潜在问题比如说 no js 其实就是也有各种 drama 你一旦这个变成了这个 community 制了你的整个效率必然降低
你就看这个 JavaScript 的这个语言现在是一个 Committed 制的语言了它是所有的决定都是 TC39 来决定的那 TC39 里面这个当时为了通过一个
一个设计要花多长时间这个怎么讲呢就是一个取舍吧就是有些新特性可能要花几年都还没定稿就比如说 java script 里面这个装饰器 decorators 已经反复修改了好几版了至今都没有定稿像在 pythonpython 里面就是说 pythongito 也是 bdsl 他也是 bdsl 但是你看他即使是 bdsl 他也有很大的压力就是
他当时搞 Python3 也是受了好多的这个非议然后他自己推一些这个 Python 的语言 Python 他们那个叫 PEP 就是跟 RFC 是差不多的东西
他自己推一些 PPP 也会被社区给怼的就是他最后就放弃之类的事情也不是没有这些都对于这个 BDFL 本身的这个怎么讲很多时候你想要去推进一件事情并不是说我就是要这样就可以了因为如果社区的反对意见特别强烈你还是一意孤行的话那你会慢慢的你会失去社区对你的一种信任就是你还是要表现出就是说你愿意去听社区的声音
说我是对社区负责你要表现出这样一个态度如果你没有这个态度那社区就会慢慢的觉得说你并不是以社区的这个利益作为你的一个根本的考量那可能慢慢的社区就会开始分裂会有人搞 fork 可是聊到这边我觉得有时候你越做越大然后呢身上的重量越来越多有时候会不会有一点点这个就是感觉丧失了 creative 的那些乐趣嗯
会有啦这个是很现实的问题就是现在的话 VJS 更多的是就是很多是责任你当你刚开始写一个新项目的时候因为你只需要考虑自己你有一个觉得很酷的点子你可能一个下午就把它 hack 出来了现在的话就是我想要来个新功能我得先写个内部稿
团队内部先评价一下然后再来个 public 的 RFC 然后下面就有人评论你说这个人不会写 view 学不动了这个人是谁这个人应该先去看看 view 的源码再过来发这些 RFC 这个都是玩梗了这个其实无所谓但有些有争议的 RFC 也会需要非常非常耗费精力的讨论就有的时候
社区里面会有一些用户他会有很强烈的意见然后他会跟你在一个 RFC 下面纠结一些细节纠结很久当然就是其实某种程度上来讲有这样的人也是有价值的因为他会给你提供一些你在最初设计的时候你没有考虑到的一些 perspective
他们的意见很大程度上是有价值的但是呢也有很多时候这些讨论会陷入一些莫知细节的这些僵持这些东西里面对而且怎么讲呢因为你大家在进行技术讨论的时候你还是会要想去说服别人希望你能够 convince 别人说 OK 这是一个很好的 idea 是的就是所以但是并不是所有的时候你都可以真正的说服别人你也知道在互联网上说服别人是多么难的一个事情
现在已经开始杠起来了对所以所以很多时候就是说在一个 RFC 能够得到尤其是一些比较有突破性的 RFC 往往会有一些比较有争议的讨论那这个就需要你很多时候去有的时候你甚至会怀疑就是说这个哇居然有人有这么多意见我这个东西到底靠不靠谱也有这样的怀疑自己对对对就比如说 View3 这个在推出所谓我们新的 Composition API 的时候就
经历了很长漫长的讨论但是总的来说我现在还是觉得是一个正确的决定就是定住压力还是决定这个东西要做所以当你最终 OKRFC 完成了甚至有的时候你可能需要说虽然有些人不喜欢但是我们这个东西还是要 ship 这个时候就需要你 BDFL 去拍板一下因为事实上就比如说 Composition API 它不是一个对所有人口味的东西
有些人不喜欢有些人觉得说 OK 他确实解决了我的问题这个时候你就需要有一个能够拍板的人说 OK 这个东西我们要选具体这个里面的取舍就比如说你要不能影响
现有的 API 的使用体验你要考虑到各种对于现有生态的影响等等你要把所有的这些问题全想清楚了 OKRFC 终于可以通过了通过之后实现反而变成了比较简单相对简单的事情但实现完了如果涉及一些内部的改动那你还需要保证稳定性所以你这个时候就需要去不停地发 Beta 发 RC 然后去测试稳定性
然后写文档写文档其实也是花很长很长时间的事情往往一个有时候一个新功能可能他写文档的时间跟你写代码的时间差不多等于说到今天 view 要添加一个新功能中间要耗费的整个精力和时间可以说比起刚开始做一个个人项目的这个不可同日而语就是这也是为什么现在
我把它作为我的全职工作就是因为因为如果我还是以当年的那种心态需要说我一个下午就可以出一个新功能
就不太现实了已经我们刚刚讲到就是说你这个是在 Meteor 那段时间 14 年到 16 年对 14 年到 16 年你在 Meteor 那个时候你同时面对了两个框架两种思想的话会不会有让你这个就是非常折腾的地方就是非常不想打架的地方其实还是好因为 View 是一个纯前端框架在当时还是一个纯前端框架
然后 Meteor 它是不矛盾对 Meteor 是一个全站框架而且 Meteor 当时出名的地方它就是最早的提出了 JavaScript 全站的这样的一个思想
甚至说可以是有点超前 Meteor 可以说现在其实我们 JavaScript 社区兜兜转转回来又开始终于又在做 JavaScript 全站了但是 Meteor 当时等于说它是自己有自己的它基于 MongoDB 做了自己的一套实时追踪然后前后端通讯然后包含它自己的包管理包含它自己的构建工具整个 CLI 全做了就整个一套完整的 JavaScript 全站给你全做好
然后让你可以前后端实时同步数据现在看来其实是真的是有点太超前了以至于当时可以说 Meteor Reinvent 或者甚至不是 Reinvent 而是它平行的自己做了很多现在 JavaScript 现在生态已经成为事实标准的一些东西比如说 NPM 的包管理这个 Webpack 这种打包构建
还有这种前后端 socket 的 IO 提供你 websocket 的这种处理以及现在 graphql 对于这个数据库层面的这个抽象还有现在这个前端这种 reactive update 它自己有自己的一套前端渲染引擎叫 blaze 所以说 Meteor 其实就是以当时的角度来看是真的技术层面是非常非常牛的一个东西我也学到很多东西但是它最大的问题就在于说
他是变做成了一个商业公司他要有商业方面的他拿了投资他是他要他要想办法去赚钱啊然后等于说可以说当时他们的这个公司也是比较理想化吧拿了一千多万的这个 a 轮就是说哎呀我们钱够多咱们就招最好的人然后都这个把框架搞得特别牛然后
甚至是我当时就觉得整个有点自大他们或者说也不是自大就是他们的战略上赌的就是说 Meteor 可以定义甚至垄断 JavaScript 做权战这样的一个整个的一套生态他是赌的是这个
所以它会有这么庞大的投资额以及估值但没想到的就是说你这种所谓我们现在可以理解为它是一个 monolithic 的框架就是一体化框架它甚至等于说强制你要用 mongodb 那
这个问题就大大的限制了它的受众可以 adopt 它的这些受众首先你得用王公 DB 如果我有个现有的数据库或者说我是 SQL 的数据库我就不能用 Meteor 那这个对吧你然后其次当时 JavaScript 全站是还就 JavaScript 现在不像现在这么火现在的 Node.js 火了大家是个 JavaScript 程序员都会写写点 Node.js
而且现在怎么说这个 NPM 也等于说这个生态也起来了那当时很多这些东西都不在推 Meteor 就很难就是说愿意 adoptMeteor 的公司都是一些新的创业公司
直接用 Meteor 做全站产品但是这些公司往往不是赚钱的大头 Enterprise 才是就是做这种软件吧赚钱往往是 Enterprise 才是大头但是 Meteor 恰恰就是一个不太实很难在 Enterprise 里落地的一个形态因为它对整个站的这个限制要求太多了当时 Meteor 的整个 adoption 就是很商业化前景很很
很不明朗就是我当时就看到这个问题所以我当时也提出了一些我的想法就是说首先要打开我们的包管理对接 MPM 的生态等于说当时 Meteor 自己他是想挖个护城河我自己做我自己的一个包系统 Meteor 自己的包管理器等于说一开始他觉得这是个护城河最后发现护城河把自己围在了里面出不去了外面的生态越来越发展他自己在自己的护城河里面反而是
就是等于说这个护城河非但没起到护城河效应反而成为了限制自己的一个这个东西就当时有很多这样的一些具体的这些商业上的这些技术上的一些东西就让我怎么说呢我虽然被招进去了但是我这个人微言轻就是我还只是一个基层工程师没有办法参与整个这种
公司方向决策层面的东西所以当时就是主要后期就是比较纠结就是觉得说我已经看到说 Meteor 这个最终肯定是成不了了
然后我自己这个手边这个 Vue.js 反而又蓬勃发展所以就所以就后来就觉得说嗯是不是考虑这个他们当时知道你是在做 Vue.js 的吧而且那个东西可能越来越火知道但是就怎么说就当时虽然说是用户多了但是也没有火到你现在你说我有一个开源项目有这么几千个甚至一万个 star 嗯
这也并不代表你这个东西就真的能产生商业利益这样的项目太多了换句话说就当时 VGNC 虽然开始慢慢的火了但是还没有火到说可以对一个创业公司的决策路线产生影响的程度对于我个人是已经产生足够了但是对于公司来说不够对于他来说可能是 yet another something 对对他来说他有他既定的这个做好的策略虽然我当时做出判断说这个策略肯定是成不了了但他们未必这么想对吧
等于说我试图去表达这样的看法但是没有能够起到影响整个公司方向的这个决定那最后事实也证明就是 Meteor 现在原公司已经 pivot 去做别的东西了现在去做 GraphQL 的这些数据层面的东西 Meteor 这框架已经被卖给了另一个公司事实上已经一主了我
我现在今天我还去看了一下就他东西还在但是我觉得就是属于一个比如说你说现在来的这个前端工程师应该不会知道这个东西了严格来说还活着吧但是你说都已经卖给别的人去维护了这个东西
就只能说它已经不是当年的 Meteor 了更有意思的是现在其实一些新的兜兜转转过了这么多年现在你会看见有一些新的社区里出来的东西它其实就是在慢慢实现 Meteor 当年的愿景只不过他们是用一些现在更成熟我们社区里的一些东西基于 GraphQL Prisma 然后现在更方便的这个 Deployment Platform
以及 react 以及这个服务端渲染同构这些东西这些东西各种 Meteor 当年想做的事情一个一个部件现在社区都慢慢开始有成熟的方案了最后拼在一起大家终于开始就是做出了一个能够比较
简单的 adopt 同时又可以大致实现 Meteor 当业愿景的东西真的是 ahead of the sun 绕了一圈最终又开始往这个方向在做我觉得这个东西说起来也有点悲壮是吧就是它其实很超前然后呢想法很棒然后它也就像你刚说的技术也很牛但是有点生不逢时的感觉到最后这个兜兜转转然后身上的各个零件在另外的地方一个一个丢起来
但是对可能从这个角度说也是一种就是在框架设计方面你做的越 monolithic 你的这个 risk 就越大因为因为你一个是 monolithic 一个是 opinionated 就是你的功能越多然后你意见越强那你最终就是说
你可能潜在的这个 adoption 就是潜在愿意用你这个可以试用的场景就越窄
所以这是一个还是比较有 risky 的一个东西对我觉得 view 在这方面就是可能又回到我们刚刚讲的那个 view 那块就是先从小出发然后呢你可以就是把这一块做得很好很简单然后呢上手也很简单但其实有点像做大做全我觉得 angular 其实说到那一方面有点这个是对 angular 就是大而全对对是的然后所以在这个情况下面你后来跑出来做这个就是 view 的就是决定权制做 view 的这个决定听起来也像是这个自然而然的一个过程
还是说其实你有一件非常难受的点我觉得我第一个最想问的问题就是你全职做出来不考虑赚钱了吗当然要考虑赚钱了这个是要生活的当时我是这样的就是首先已经看到说有人已经在做这个所谓的就是通过捐助做开源就是开源可以有人来做捐赠所以我当时就开了一个 PatreonPatreon 就是这个可以
就是 creator 在这个平台上面然后大家捐钱然后等于说是个众筹嘛就是
定期的这种这种 recurring 的众筹就是所以所以当时我就先开了个这个然后再加上当时我国内有一个创业公司的朋友叫 strikingly 他们是一个华人的公司拿但是他们是 yc 那边出来的然后然后搬回国搬回国然后总之他们的 cto 跟我是个朋友然后他他们公司还是很有很很有情怀的那种然后他们就说我们有一个
开源的 fund 就是等于说我们会每个月给一个开源项目资助一笔钱他们等于说每个月给了我 2000 还是 3000 美元然后资助了我大概半年左右就等于说一个然后这笔钱就等于说给了我一点点定心丸就是说 OK 我们可以可以试试就然后我
当时在离职之前我已经把 Patreon 开起来了到离职的时候差不多一个月有 4000 美元左右吧所以当时怎么说呢就是也没还还还没生完超时快生完了但是还没生但是就觉得说哎呀再加上有点存款当时就觉得说哎不管怎么样这点钱过日子还是够你说小孩出生吗还是说什么小孩当时快做全职的时候还没有孩子还没生快生了当时
所以当时的想法就是说对我来说全职做 view 并不是一个说我一全职就永远没有办法再回去的状态我知道说因为 view 已经有足够的知名度即使我全职可能做了一段时间发现这个收入没有办法 sustain 下去大不了就回大公司嘛
就是我有信心说我一定可以再重新找一份大公司的工作所以说养家糊口这不是个问题那么就剩下来的就是说我要不要做这个选择那做这个选择的核心考虑的就是说首先我全职做 view 带来的这个最大的收益我是可以真正的把所有的时间都用来做我感兴趣想做的事情
对我来说这是一个巨大的 utility 因为当时我在 Meteor 的状态已经很煎熬了我觉得说这个东西我已经不再 believe in it
所以要我再去天天把去去做这个东西我就觉得很没有意义然后我也说了就是我是一个就是这种对于我不感兴趣的事情我其实我的这种强迫自己去做自己不想做的事情的能力很差所以我就当时觉得说如果我全职做 view 我可以根本上的改变这种状态从一个每天做不想做的事情变成真正去做我想做的事情那即使我少赚点钱但是我觉得说这个这个 pay cut 我
就是我首先我相信说这个还是可以做到能够基本 sustainable 即使比我当时在 Meteor 赚的少一点那问题也不大因为我觉得说我宁可做我自己开心的事情少赚点钱也无所谓那如果最终连赚够生活的钱都不够的话那 worst case 我回大公司去再回去打工就是了当时就是这样的一个思想过程
哦 明白了在我听下其实对我是有一些启发的因为我现在工作也好几年了机会成本这个事情其实我也是最近该考虑的事情希望我老板没有听这一期这样我就走掉了那你当时就成立了公司了吗还是怎么回事没有吧你说你先开了 Patreon 然后到了后面可能你可能做了几个月才成立公司像是这样子吗
技术技术 IoC 只是就出于报税需求还有开 invoice 等等把这个商业上的这个钱的跟我个人的钱分开来的一个完全是出于这种需求需要合法是吧就是需要总报税对就是一个 legality 的问题
那其实就是说你们核心团队的这上面的人就是不一定是真的是挂在 review technology LLC 上还是说这个不不不并没有其实我们这个并不是一个商业化的运作了严格意义上来说核心团队的话现在全职的其实就只有我跟国内的一个 soda 就是蒋豪群蒋豪群呢他是我我自己套腰包付他除此之外所有的其他的
团队成员基本上都有自己的全职工作有些是 freelance 大家基本上都是业余时间愿意贡献就贡献所以说我们的团队是一个很松散的团队就不是这种说我会给你布置任务这个季度你要完成这个任务你要做什么做那个很多时候就是说
我只是起到一个在 roadmap 层面做一些思考然后我们每两周会有个会嘛然后会上等于说我们大家同步一下这这两周你做了些啥我做了些啥很多时候都是自发的然后
然后有的时候我会说我希望我们今年可以大大体上会是这样的一个目标这样一个方向那要达成这个目标我们这个项目我们可能需要做些这样的事情那个项目需要在做些那样的事情那最后如果他们有时间的话他们就会去做如果他们没时间有可能有些事情我就得自己做就是这样对然后
根据他们活跃程度的不同我也个人在 Github 上面对他们会有一些 sponsorship 明白了那像现在核心团队可以有大概是一个什么样的人数核心团队的话大概十几个人吧就是我们每次开会大概六七个人 active 的这种状态那
那你现在比如说假设你有这个 PR 和 MR 的这个流程的话你质量是怎么控制的因为你现在已经成为世界上最流行的空架之一的话那么应该会有很多人提一群很多人提一巴掌提 PR 吧你难道真的要一个一个都看吗必须一个一个看基本上只有我看过的才能 merge 然后当然会分优先级就没有办法做到说所有的 PR 都进来一定保证会被 merge 也没有办法保证说你进来第二天一定会 merge
这个是没有办法的所以会分优先进来的 PR 我们团队的成员会帮忙先做一个叫 TriageTriage 就是做一些基本的 code review 看一下你这边是不是要补个测试是不是这个写法有问题或者说测试没过要 fix 这些基本的事情志愿者或者团队成员都可以来做那
最终 merge 拍板有两种一种是比较简单的 PR 然后团队成员看完他们可以 approve 如果有两到三个我比较信任的人 approve 了然后我大概看一下没问题那就可以 merge 这种的话其实花不了多少时间但是比较头疼的就是一些比较
复杂的 PR 但是又很重要的那我就必须得自己看更复杂的一些我得先把它 pull 下来到本地试着跑一下然后可能要跑一些 PR 里面没有 cover 的测试用力我自己补一些测试然后要 validate 一些东西一些可能比较复杂的东西我会需要自己去动手改改完了然后再 think 回去然后再 merge
听起来其实是一个非常漫长的流程万一比如说中间有人别人不愿意改了你可能就也就卡纳了所以是这样的有些 PR 是要别人去改有些 PR 呢其实我现在经常做的一件事情就是 GitHub 它其实是可以它现在的一个默认的就是说别人给你开 PR 它开 PR 的那个 branch 我是有修改权限的
所以为了提高效率默认来说大家觉得 PR 的过程是人家开了个 PR 然后我说你这里得改这里得改这里得改然后等对方改完我再 review 来回回最后 merge 这样也是很常见的但有的时候我希望他怎么改
我表达出来等他改再来回反馈可能要花很久但是如果我打个字还不如我自己直接就把它给改了来的快我自己改可能只要几分钟我跟他来来回回扯可能要要几天
所以有的时候我如果我在状态的话我通常比如说我 merge PR 都是批量也是批量性的就是我喜欢同一个类型的任务我进入那个 focus 的状态然后我一下做一批那可能我有一天一天会 merge 十几个 PR 那我为了能够尽快的 merge 这些 PR 我有的时候我就直接跳过这个小的改动我就直接跳过这个交流的步骤我可以把它的 branch 直接 pull 到本地我自己改完 push 到它的 branch 上给
GitHub 是现在等于说默认是让你可以这样做的所以很多时候我就直接这样了这样的话可能一些需要改动的 PR 我自己 po 下来改一改十分钟改完搞定了如果说我正常的 review 然后等它改再回来再 review 这可能就是拖一个星期的事情
而且很多尤其是 first time 的这种所谓的叫 walk by PR 他就顺手发了一个他根本就没打算想要继续接这个摊子然后你可能跟他 review 了之后他鸟都不鸟你就消失了这种也有很多还有很多就是也有一些挺坑爹的就比如说一些人他就是为了混一个说我给这个项目开过 PR 这样一个成就他就给你各种找
你哪里有 type 哪里漏了个空格哪里的 formatting 有问题就给你找这些非常计较嘎啦的东西给你发个 PR 当然 type 也不是说没有意义简单的东西就直接 merge 吧有的时候这些 PR 你也没有办法因为严格来说
如果是纯粹的这种 formatting 的这种 stylistic 一般我是不 merge 因为这种没有太大意义如果他真是改了个 type 那没办法我们也就 merge 有的时候你会发现就是说这个人他就是专门给你找这些东西他就是只是为了混这个 contribution 而已这样的人也不少
但这也是一个很矛盾的问题毕竟人家也是确实是试图在给你 contribute 因为尤其是像 GitHub 它会鼓励大家说不要怕你的第一次的 contribution 就可以是这样的 contribution 理论上也是的因为很多人他从来没有发过 PR 他很害怕那最简单的就是你发一个完全无害的对于这个代码本身的行为没有任何影响的 PR 这个是最保险的
很多人的第一个 PR 可能就是这样的 PR 所以说从怎么讲鼓励参与的角度而言也是有一点意义的所以这样的 PR 我们还是会 merge 对其实我觉得这个可能就是你这样开源的话就要面对这样可能各种各样的一种情况对
一说到这个其实我觉得在社区维护和管理上我个人感觉你是非常活跃的在 GitHub 上面在知乎上面我看到你回答了很多很多网友的问题就是非常有耐心让我感觉这个距离感其实是非常近的正因为距离感近所以我觉得除了这个赞扬支持之外呢其实也不少的拉财和黑你的人是吧甚至把你做成了表情包什么什么之类的对
你应该有看到吧自己的表情帽你会用自己的表情帽吗
基本不用所以我觉得就是说在社区维护管理上面你自己是一个什么态度呢比如说你是否会讨厌网友老把这个 view 和 react 比较然后呢或者有很多人就是觉得 view 就是不好啦什么什么之类的有没有什么特别让你生气的问题就刚开始的时候还是就看到有人比较 view 跟 react 我就会还是会挺挺那个然后就想要去说服别人想要去跟人解释之类的但是后来怎么
怎么说发展到一定程度以后慢慢的就觉得这些东西意义就没那么大了吧慢慢的就意识到就是说一个东西它适时的发展跟你在社交媒体上接触到的这些东西它并不是完全一对一的对等的社交媒体只是一个失真的信号因为我们作为开源开发者当你有这么庞大用户群体的时候很多时候我们接收到的信号都是失真的比如说我每天起来可能收到 email 里面十封里面有九封是有人报 bug
那这是否就意味着说十个用户里面有九个都是用的不开心的呢显然不是对吧因为有十万个人用了 view 今天但是可能只有九个人遇到了 bug 那从这个角度讲来讲其实我们的东西还是挺靠谱的所以很多时候都是 perspective 所以说我偶尔在知乎上看到有个人黑我
或者说有个人说哎呀 Viu 就是垃圾 React 才牛逼那是否代表着所有的人都这样想呢显然也不是其实这个 Paul Graham 就是 Y Combinator 的创始人他有一篇文章叫 About Haters 关于这个黑子当你做了一个足够流行的东西当你的知名度足够高的时候不可避免的会出现想要黑你的人
因为这个就是一个固定的概率有些人会非理性的爱你有些人会非理性的恨你一百个人里面固定的会出现一两个特别特别爱你的人也会出现这么一两个特别特别恨你的人因为人的这个差异性足够大大到以至于同样一个东西会有人爱到极致也会有人恨到极致当你的受众的样本足够大就不可避免的会出现这样的问题
我最近看 NBA 你看对你看 LeBron 你说他牛逼吗确实很牛逼但是他黑他的人那是排山倒海的对不对又反过来想你说这些黑他的人真的能够影响到他什么吗他依然是当代最成功的球星所以这就完全是一个心态上的问题 apply 到我自己身上就是说
只要我想要只要我能够选择说告诉我自己说去无视这些黑偶的人那他们就对我不会产生任何的影响没有办法改变任何事实 view 是当代最流行的框架之一没有办法改变任何事实我现在的生活状态是我自己非常满意的一个生活状态对吧所以根本没有理由要让他们来影响我的这种心情就是
当然这也是说的容易有的时候怎么讲刷知乎的时候就很多时候就是一种心理上的就是我刷知乎更多的是就是我无聊的时候顺手想休闲一下偏偏就他给我推送了一个跟我有关的东西这就很不爽就是
有的时候并不是对这个人很不爽有的时候就是很不爽这个知乎我现在的就是我只是想要刷一些东西解解闷而已你偏要给我推送一个跟我自己有关的东西就很不爽有的时候那句话就是刺激到你是啊我后来就是觉得说真正的低端黑到现在就是低端黑我已经真的就是可以做到完全没有感觉了
有的时候怎么说呢真正能够刺痛你的黑还是那些对你进行人格攻击的人怎么讲就是有些有些人他会看了你几个知乎回答就觉得说我要给你这个人定性啊之类的这种知乎上特别喜欢什么如何评价啥啥啥然后这些评价下面的人呢往往都是通过一些很片面的信息源完全就是只是想要寻找存在感表达一下说我觉得这个事情
是这样的基于我这些片面的理解这个事情是这样的其实就是大家都只是在寻找一下存在感表达一下他想表达的东西但有的时候就很不爽啊就是觉得说你根本就不知道我是怎么样的一个人你还要对我来说三道四的当然最终就是这些事情也就是
属于就是本来心情挺好的就觉得像吃了个苍蝇一样但是也不会说到今天这种程度已经很难会产生就是说让我真的是不开心到抑郁的那种程度其实在初期本身经济压力有一点然后同时又是这个还在比如说遇到一些比较有挑战性的技术问题还没解决那种状态下再看到这样的东西这些东西加在一起会造成很大的这种负面的心理影响
但现在的话状态就好多了我觉得这个心情的情绪真的很重要会影响看待别人跟你讲的话发的那些文字有时候那个文字你感觉不到语气或者什么之类的像你刚提到就是有时候自己正在不停地思考一些 bug 上的东西好几件东西没有解决那确实完全给出来的感觉是不一样的
接下来这个问题是我在技术上面非常非常感兴趣的一个问题也是我觉得相对来说比较轻松的一个问题你现在 View 3 已经出来了能不能畅想一下你认为的未来的前端和你想做的甚至可能说是 View 你未来想发展成的样子故意会变成什么样 Web 变成什么样你自己是否有畅想因为我现在真的认为这个 Web App 的性能已经不差有很多东西全部都可以移到 Web App 上面了
怎么说呢其实 web 的前景就是 web 的这个界面的可能性还是比较受制于它的历史包袱因为基于 DOM 的这个模型它最终能够发展的这个前景还是受限于这个 DOM 的模型的这个就是基于 DOM 然后基于 CSS 去做 layout 因为 web 是一个设计的一开始就是 you can never break the web 你不可以有任何不向后兼容的东西
所以它的历史包袱只会越来越重所以从这个角度来讲呢我认为它会永远存在永远承担这样一个角色但是它在界面的可能性上日常通用的界面是绝对也是够了但是如果你要说真的是超未来的那种就比如说虚拟现实啊 AR 或者说是 3D 的东西啊之类的那可能 web 更多的就只是作为一个承载的窗口
基于 AR VR 和未来的如果是要考虑三维的或者说是空间互动的这些东西那可能这个范式是需要有根本性的改变那个时候的话我觉得类似于 Vue 和 React 这样的故意开发范式还是有相当多的东西可以传承过去
肯定是需要有一些做整体的思维模式上的改变但是基本的一个就是说声明式的去声明你的界面结构以及数据和状态同步以及逻辑组织这些东西都是可以存载过去的具体的实现肯定会完全不一样因为我们在 Google 的时候其实做了很多在浏览器里做一些比较偏未来的界面
限定在 web 的话在一个显示器里面套一个浏览器浏览器里面是一个平面的界面然后你跟它交互就是要么就是触控要么就是鼠标键盘这个方向它会能既然能够承载 90%甚至是可以更多比如说你看现在像什么 Figma 之类的已经基本上以传统需要用桌面软件去实现的东西也都可以在浏览器里做了就是说从这个角度来讲单纯的这种 utility 和生产力我觉得 web 完全没有问题
而且现有的开发范式可以承载这些使命那再往前看的话真正的未来的以外可能会需要往 ARDR 这一块去想那这个时候的开发范式可能会需要一些根本性的改变但是这个东西离我们还是比较遥远的说实话我
我可能刚刚就想了两个东西一个就是因为你提到 FigmaFigma 他们已经开始用 WebSimply 了去提升他们在那个就是因为他们要做那个什么绘制的那一部分这个说实话我是非常吃惊的就已经用到工业上而且很多公司都在用已经非常成熟了所以我当然觉得很吃心然后另外一个就是像 Autodesk 然后他们也 launch 了关于将 C++代码展望成 WebSimply 然后在 Web 去运行了这么一个项目
我看了他们的演讲所以我觉得很不错另外一个还有你刚才提到的 DOM 就是 D-O-M 那个东西曾经 Flipboard 的那个平台在大概五年前六年前就是全部做在 Canvas 之上所以我就想说有没有想过比如说 Vue 因为你们在做 Virtual DOM 对不对那能不能直接写在 Canvas 上面那这样的话性能会不会更快呢
其实不一定 Canvas 的最大的问题是什么呢你如果用 Canvas 去绘制等于说你要自己实现一整套的渲染引擎你要实现自己的 layout 你等于说没有了 CSS 帮你做 layout 等于说你要 shape 一个 layout 引擎你要自己做你的渲染绘制的机制而且关键是你没有办法 leverage 浏览器本身做了大量的这个 internationalization 和 accessibility 方面的这些东西
就比如说 screen reader 你一个网页只要做好 accessibility 方面的标准是可以让盲人甚至是让这些用 screen reader 的人也可以用你的应用这个是一个是 accessibility 方面问题另一个是这个 internationalization 就是很多什么文字的排版你在 canvas 里面文字的这个排版几乎都要你自己来做这些东西其实浏览器投入了大量大量大量大量的投入成本有
浏览器引擎很大一部分价值就在这两个东西里面你如果用 Keyboard 去做你等于说抛开这些东西自己去做 LayoutInternationalization 和 Accessibility 这三块就是这个工作量非常非常的夸张所以说抛开了 DOM 这个负担但是同时你又要自己去担上很多其他的东西这个 Tradeoff 并不靠谱因为你看 Flipboard 现在它那个 ReactKeyboard 项目已经弃坑了它就五年前锈了一下然后现在就根本不用了
事实就是这条路其实很难走反而是 Canvas 里面用 WebGL 可能还靠谱一点因为性能确实是跟 DOM 是一个量级的提升那问题就还是一样你还是得基于 WebGL 你等于说要自己构建一套渲染引擎就有点像 FlutterFlutter 它等于就是说
我就跳开 iOS 的原生的渲染跳开 Android 原生渲染我自己做一个渲染引擎但是这个东西的工作量就跟一个前端框架的工作量就完全不一样了当然这不排除有人会去做吧但是那个东西就跟 web 可以说是就更多的就只是拿浏览器当做一个 custom stack 的一个承载的一个窗口而已了
就其实跟传统的 web 就不是一个性质的东西那么在我们 move on 到下一个快答环节之前呢还有最后一个问题其实上次你提到说你做 view 的时候你特别不想让工作充满你生活的全部然后你也提到了说也是有机构想要去投资你但是你目前为止都拒绝了所以我当时想问一下你不想要赚到很多钱吗
如果你不想的话那你期望的美好人生是什么当然还是想赚钱的了但是这个东西怎么说呢因为我也认识有赚到大钱的人我也看到赚大钱的所谓的投入和成本的比较比如说可能你拿投资的这些拿 VC 的这些创业公司 100 个里面你乘一个
100 个里面有一个人赚到了大钱但这每 100 个人几乎都是付出了他们两年三年四年甚至更多年的 7×24 无休止的投入等于说他们人生的这几年就是完全投入在这样的一个豪赌里面最终可能有那么一两个人到上市公司能够拿到一个 exit
之前我也说了我在这个方面其实我是一个非常 risk averse 的人我会考虑说我是否想要抛弃我现在这样的生活状态去进行这样的一场豪赌换来说我可能赚到
Exponentially more money 但是问题就在于说我现在这个生活状态首先我在做自己很喜欢的事情然后我对自己的时间支配非常非常的自由同时我赚的钱也并不少我也不想透露说我到底赚多少钱但是对标比如说 L6 L7 在那个 levels FIOI 上面也有对比一下假如说我在大公司这么多年爬到这样的级别其实我赚的钱也不比那种级别少
所以就是我觉得以我现在生活状态能赚这么多钱是一个非常非常非常非常划算的一个状态所以就在这样的前提下你要我去说拿投资创业这个 upside 就绝对我来说就不够这个风险的成本当然我也希望能在现代基础上赚更多的钱以至于钱多到我都可以根本就不用工作了但是从这个角度上来讲当你完全不需要工作的时候又会有另一种类型的空虚感
所以我觉得现在这个状态真的还挺好的当然也是有一定的压力的这个压力主要来自于就是说这个项目它的 relevance 如果说哪一天比如说 web 领域出现了重大的变革所有的前端框架都一下子突然 out of fashion 了那我可能就要重新考虑一下我要去做些别的什么事情但是在现在这样的状态下就是说可以说我的收入来源是相当的 passive 我从一开始做 view 注重的就是去在
增长我的被动收入因为我意识到怎么样才能让你可以真正做你自己想做的事情呢就是让你的收入跟你想做的事情尽可能地挂钩虽然他们在 long term 是挂钩的我需要把 view 做得更好才能确保我有持续的收入但是在 short term 里面我不会因为说我今天没有加班我第二天就被老板开除
我就没有这样的压力我也不会说因为我今天状态不好或者说这个礼拜状态不好写的代码比较少就导致我这个季度 review 不行然后奖金少拿就不太会有这样的事情所以说这样的话我把我每天做的事情更多的是因为我想做去做而不是因为说我不得不去做而做对我觉得这个精神状态非常是不一样就是特别是在公司里面对
非常感谢就是在这一块个人经历上面和职业上面大家的分享那么接下来是我们最后一个环节快问快答那么如果没有问题的话我现在第一个问题是最喜欢的家乡食物是什么红烧排骨糖醋排骨这个是无锡的一些什么就是对对对无锡酱排骨嘛无锡酱排骨也是挺代表性的你在中国美国两个地方都待过的话能不能分别讲一个就是你最喜欢的城市呢
最喜欢中国城市应该还是上海吧说实话就是我除了上海跟无锡之外没在别的城市待过所以也没太多好选了美国的话我可能相对最喜欢的是 Boston 还挺喜欢 Boston 就是 Cambridge 那块大学城那一块那种有河啊然后整个城市感觉给人的感觉是比较开阔但是又有些历史的这样的感觉
纽约呢有点以现在我的年龄而言纽约有点太挤太乱节奏太快然后旧金山的话呢怎么说就是有一些这种街头有好多这种不是让人那么 pleasant 的东西就是明白对
但这都是很片面的印象说实话因为我并没有在旧金山或是 Boston 常住过就是我现在在美国我在美国十几年绝大部分的在纽约大概有住过大概两年左右然后在 Colgate 是在一个这种非常偏远的这种山村里的这种 Laborers College 然后现在我的房子是在郊区的这种
所以怎么说呢其实我还是很期待想要回到一个这种上海这样的大城市的氛围里面明白但是因为养娃所以选择也不是那么简单就是不过至少现在在郊区的话应该房子也大所以比较放松一点对对对就是很典型的这种这种比较 chill 的状态
有没有最近非常关注的一些技术呢可以分享一下比如说一些框架或者你现在看的一些东西最近的话其实前段时间今年前段时间我们还是做了一个新的前端构建工具叫 VIT
这个是我自己做的但是它里面用到了一些现在还比较前端比较新的一些东西比如说用构写的一个构建器叫 ESBuild 然后同时还有一个用 Rust 写的一个编译器叫做 SWC 这两个都是用编译到原生的语言去写处理 JavaScript 的编译器所以就是
就是这两个东西他们的性能比用 java script 自己写的编译 java script 编译器要性能要快好多好多这个东西其实还是一个挺挺明显的趋势就是说因为 java script 现在是一个使用量越来越大那
大家的开发效率很多时间都耗费在了这种 JavaScript 自己去处理 JavaScript 比如说像 BabelTypeScript 他们编译的速度都相当的慢但是如果用这个 ESBuild 或者 SWC 的话就可以快二三十倍甚至上百倍就是这种性能级别的差异
所以还是我是觉得这是一个趋势吧应该会将来会有越来越多的工具做这个事情所以 VIT 是我们等于说把这个东西作为一个底层的优化然后在上面再去包一层然后去提供一个比较贴近于我们现在现代开发者比较习惯的这样的一个开发体验一个方案
在采访之前我也特地去用了 Vite 速度真的很棒太快了然后 OK 我们接下来准备的是来自于重的一个快门快达第一个是来自 Duke University 的杨 Z 然后他提到说由于是智学编程的程序员也不是科班出身但是能写出 UJS 这样就是有百万使用者的开源框架能否给我们现在这个学习编程的人给一些这个实用的一些建议或者方法或者一些 tips 或者你的 tag away
Tagway 我是觉得学习一个语言最好的方法就是在实践中去掌握吧就是很多时候我是我的自己的学习的过程基本上都是说我先有一个目标我说我要做一个这样的东西然后我再去一步一步的摸索说 OK 我要实现这个东西我首先需要做这几步那我要做到这几步我再需要学这些东西把它一步一步分解到最终你可以
真正第一步迈出去的比较实际的这一步去先定一个让你自己很有动力的目标然后把这个目标去一步步的分解分解到你最终可以迈出去的第一步这样子然后来自 MIT 的 SoHi 他提到说在推进开发 WEEX 的时候 WEEX 的时候
是有遇到什么问题吗因为感觉最近好像没有人用还是怎么的就感觉好像被放弃了是不是这样呢也想问问你对 WASMWebAssembly 还有 Google 的就是那个新的系统 Pusha 你会对它有什么憧憬吗其实 Wix 这边我澄清一下 Wix 呢当时他们在刚开始做 Wix 之后当时负责 Wix 的是赵景江是我一个朋友他在阿里然后
Wix 当时是做了一个可以用 View 来做上层的 DSL 的这样的一个实现所以我们当时有一些合作所以当时是签了一个顾问合同等于说我会在 Wix 的开发过程中在 View 这边提供一定的这些技术咨询以及协助
但是这个顾问合同结束之后呢我就没有再参与 Wix 的开发了然后 Wix 捐给 Apache 那边这个事情已经是在我退出之后很久的事情了所以后面事情我基本上都没有再参与那 Wix 丢给 Apache 最后现在 incubator 这个失败了等于没 incubator 成这个
这个东西呢其实也就是大公司搞开源的这个一种常见的后果吧其实当时景江做这个东西的愿景还是很好的但是后来他也被调离这个项目了就是这个项目在大公司内部就等于说也是被 transfer 来去然后内部架构如果有变动最终这个东西应用的场景不够
或者说另一个方面就是大公司对于开源它内部和外部利益的平衡其实这个东西对它来说因为想要在 Apache 作为一个开源项目长期的做下去其实成本是挺高的就是你要对外部的这些它有 evaluateincubate 有需要对你的维护的质量对于外部的这些东西维护的速度质量各种 activity 都有 evaluation 都有标准的所以对于大厂来说
它很实际的就说我觉得说 OK 我维护这样的一个高标准对我意义不大可能我宁可让它对我内部更有用这也是就大厂的开源就是很常见会有这样的问题比如说 Facebook 最近 Flow 也是这样他们也是 Flow 就等于其实已经这样很久了就是 Flow 它是一个 Facebook 的一个基于 JavaScript 的一个类型系统嘛
他也是其实 View2 还用了 Flow 但是后来我们就发现他对于社区的需求基本上就是不管不问的就是心情好他可能修一两个 bug 但是他的主要还是只是针对 Facebook 内部的需求他对于他的所谓的开源仅仅是代码开源而已他并不是真的说我会去听取社区的意见来做改动之类的
所以这就是对就是大厂的开源有时候就是会会变成这样这是一个很现实的问题
最终就是看这个东西的开源是否跟大厂本身的利益能够有交集就比如说 react 为什么开源做的比较积极 react 的开源是因为它产生了强大的这种在前端产生了强大的这种一个是 Facebook 在前端影响力的一个品牌效应另一个就是对它招人有很大的好处明白就是它招的人基本上都已经会 react 了它进去根本不用培训就能上手了
深感同意那关于 web assembly 和 fusion 呢其实 web assembly 还是我觉得前景挺宽广的吧就是最近刚出了一个新的有个公司叫 stackblitz 他们刚做了一个新的东西叫做 web container 这 web container 实际上就是他们用 rust 写了一个轻量的模拟的操作系统然后编译到了 web assembly 然后跑在浏览器里面然后这个模拟操作系统可以跑起 node.js
所以他们把 Node.js 整个跑在了浏览器里面这个很酷就是他们把 WebAssembly 现在好像都当做这种就是虚拟化技术来用了就虚拟机然后呢做这一层上去对对对就是对就是大大的拓展了这可以可以做的事情的范围对 Foxia 其实我了解的不多所以我也就不多说了
在这个快门快答的最后一个呢是在书籍上书籍上能否给我们这个听众朋友们推荐两本其实我可以推荐一本就是因为我们这个聊了很多开源嘛有一本书叫做叫 Working in Public 这本书它是对它就是讲的这个这个作者他之前在 GitHub 工作然后我还跟他有做过一些 interview 然后他就是
他对于整个新一波的开源浪潮还比较理解的比较透彻就是我现在定义就是说旧一波的开源就比如说像 Linux Red Hat 然后就是这些 Chrome 这种大公司的这种 Foundation Based Open Source 跟现在新一波的 Next Gen 的这些 Open Source 就是这种 Indie Open Source 小团队或者个人
就是在 GitHub 上完全是草根发起的这种开源项目然后最后慢慢成长为团队什么之类的这种他对这一波现象的分析还有现在这样的这种类型个人或者小团队开源如何进行 financially sustainable 的开发有很多的这种
也不能说给出解决方案但是就是如果你想要了解这个领域这本书是很好的一个信息我觉得非常棒最近也挺想看到一个这种事情因为我觉得好像最近有很多人开始关注到比如说我们这个应该不能忽视以前开源社区的力量那我们在我们今天最后的一个问题就是能够跟我们分享一下在工作上或者是生活上遇到的最暖心的事情最暖心的工作上最暖心的事情一般就是有用户他比如说在
推特上面 at 我啊或者是其实其实很暖心的就是有时候会收到一些 paypal 上面会收到一些小额捐赠然后
然后小额捐赠的这个他会留一个留言嘛然后他的留言通常都是什么哎呀非常谢谢你这个创造了这个创造了 VGS 然后帮到我很多啊之类的就这种小额捐赠上面下面的留言其实都挺挺挺让人开心的就是哇我觉得这是 double happiness 双重快乐对就因为怎么讲就我之前说的我们日常的维护者日常接收的信息都是又出 bug 了又出 bug 了又出 bug 了
所以就是偶尔接收到一点这种正面信息其实还是很好平衡一点好的那非常感谢 Evan 给我们今天给我们带来非常非常精彩的分享我感觉就是在这个过程当中我也学到很多我也非常期待 VivoJS 在接下来的发展和给开发者社区带来的更棒的一些开发体验谢谢好 谢谢
节目最后如果大家觉得本期内容不错希望可以多多点赞转发也可以加入我们的听友群在这里你可以和节目制作人主持人直接沟通和听友们交流结识在不同行业的精英欢迎大家添加我们的小助手微信号 goto 下滑线 helpergoto 下滑线 helper 好的那我们下期再见拜拜
DM 加一個立場愛玩下空就是真心的 MACHO MAN