5

作为一个开源项目的创始人

 4 months ago
source link: https://www.ttalk.im/2024/01/be-an-open-source-leader.html?amp%3Butm_medium=Atom
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

无意中看到尤雨溪说React挖坑不填坑,只靠文档来让用户来避开这些坑,其中言辞不乏用了夸张的手法来特意强调了这些坑的严重性。甚至用了 PUA 这样的词来刻意强调自己的观点。本来无意去写文章来说什么,但是接到了一些外国友人的消息后,进一步看了尤雨溪的后续X(前twitter)上的消息后,还是写了这篇文章说说自己的看法

在开始说所有事情之前,让我先说一说自己这些年的Web开发感受吧。

始于YUI

现在提起YUI有很多前端开发者已经不知道这东西是什么了,并且我也没有大量使用过,那么就简单的说几句。

作为一个Web开发者,尤其是2008年或者更早就进入Web的开发者,不可能不接触到JQuery和传统JS。我想那时候很少会有人感觉前端开发很爽吧,浏览器标准的混乱,没有Grid网格布局,CSS表现能力不强以及没有统一的依赖加载方案。但是前端研发也从来没有放弃,一直在用各种方法解决问题,其中就有我们熟知的JQuery,它解决了很多浏览器之间的JS的兼容问题。但是在2006年8月JQuery 1.0发布之前,仅仅早了几个月的时间,Yahoo于2006年2月发布了另外一个库叫做YUI(Yahoo! User Interface Library),但是YUI并没有得到广泛的应用,但是它的变体YUI-ext确得到了发扬光大,最终发展成了我们所知道ExtJS。

为什么说始于YUI,让我们回到2005年看看,那年发生了什么。

回到2005年

2005 年是 Web 开发技术的发展元年。大部分人都应该记得单页应用(SPA)的诞生,当然这要得益于众多 JavaScript 库的支持。

  • Firefox 是 IE 6 唯一的有力竞争者。
  • 常见的调试工具(Chrome Dev Tools、firebug 等)还没有问世,开发人员主要使用 alert() 进行调试。
  • Prototype JS 和 Scriptaculous 是 JavaScript 框架中的佼佼者。
  • 基于 DOM 的动画技术也刚崭露头角,不过太耗 CPU。
  • 尽管 AJAX 已经出现了一段时间,但良好的设计模式还在形成当中。
  • Dreamweaver、Textmate 和 VI 是开发网站和应用程序的主要工具。
  • 智能手机还没有问世。

YUI带来了什么

Web 开发者第一次在一个免费的框架中看到了 Prototype+Scriptaculous 组合所能带来的功能,当然,YUI 提供了更多的特性:

  • CSS 重置
  • 丰富的 UI 组件——AutoComplete、Container、TreeView、TabView、DataTable,等等。
  • 布局管理器——这在 JavaScript 框架领域还是头一次出现。

因为YUI的这些特性,很多开发者在网站上使用 YUI。不过因为历史的限制,在SPA中使用它们并不是很直观——起码第一个版本是这样的。随着时间发展很多框架在2010年开始出现了,其中就包括了,大名鼎鼎的backbone,ember和angular。

不得不说的Angular

我早年主要用国backbone和Angular 1,对emberJS只有少量的接触。但是我个人印象最深的就是Angular,因为backbone的代码模板是写在backbone的view中的,依然很难避免JQuery的那种字符串拼接(当然如果放在2015年之后,这问题就解决了)。但是Angular是直接用html原有文件,通过对html文件使用特定的ng属性进行控制,以及作用域内(scope)的数据双向绑定。虽然我对ng的作用域设计感到非常不舒适(可能是自己每用好,或者是真的就不好)。但是不得不说Angular的设计在当时是真的耳目一新。

SPA时代

在2013年中的时候,接触了React,它给我带来了全新的前端开发感受,但是当时并为立刻成为React的使用者。其中的生命周期和JSX确实给我带来了很大的冲击,让我知道了,哦,前端还可以这样玩,但是此时我依然在使用Angular。随后在2015年年初接触到了Vue,此时Vue 1.0尚未发布,故事就从此开始了。在当时我的眼中,Vue就是降级的Angular(我想此时会有很多Vue的粉丝已经准备好开始喷我了),VueJS太像Angular 1了,数据双向绑定,使用html作为模板而非JSX这种需要编译的DSL等等,甚至有时候有种直接把ng-开头的directive换成v-开头就好的错觉。因此开开心心的用Vue做了一个项目,但是这个项目确实噩梦的开始,后面再说这是为什么。

让我们回看2013~2015年这段时间发生了什么:

  • 计算机性能大幅度的提升
  • 智能手机快速发展
  • Web逐步的标准化,Ajax和DOM动画得到了发展
  • flash开始退出历史舞台

从Vue转到React

体力负担大于心智负担

2015年开始了一个Vue项目,虽然Vue版本不到1.0,但是也不是不能用,项目也算成功,其中经历了一些小的升级,也在2015年年末升级到了Vue 1.0了。团队编写了大量的代码,并且逐步的上线应用。然而就在大家一片欢腾中,灾难到来了,2016年发布的Vue 2.0可以说完全不兼容Vue 1.0时代我们写的代码,但是业务指标又在那。团队加班加点的做了3个月,终于升级完成了,并且最重要的是,Bug不断,问题不断,季度奖金没有了,出力不赚好。而兄弟团队的React产品,却能基本平滑的完成升级,让我们当时非常羡慕。

文档的不准确

今天的Vue文档还算不错,但是Vue早期的文档并不好,当团队碰到问题,文档上有时候并没有给出解决方法,只能依靠团队去代码里面找问题和找解决方法。

尤雨溪和大漠的论战

这件事情,我个人感觉大漠是有一些不对的地方,他文章标题叫《Vue 从 Angular 里面抄了哪些东西?》,这个标题确实有失偏颇了。但是事情的发展却超出了我(也可能是很多人)的预料。尤雨溪竟然向大漠的上司“举报”,这不得不令人侧目,让人有一种两个小学生打架,最后去告老师的感觉。并且其中的重点是“大漠”是Angular布道师的身份。

为什么转React

从Vue转向React,主要是经历了那次加班加点的工作,整个团队怨言很大,对Vue发展路线不清晰很不满意。其次是因为人员招聘的问题,人员招聘上一直存在一些莫名奇妙的问题,很多候选人特别喜欢拉踩其它框架。就这样团队就转向了React,最终和兄弟团队合并了。

React很坑

直接上截图了

react-and-vue-01.jpeg
react-and-vue-02.jpeg
react-and-vue-03.jpeg

尤雨溪一直以框架对新手友好作为一个重要的判断标准来证明一个框架是否优秀。但是扪心自问,各位前端开发们,这个判读是否正确? 先不说正确的问题,我们可以单纯的从尤雨溪的言辞中可以看出,React Hooks的坑很多,心智负担重,React因为用了Hook上手难度高。那么React Hooks坑那么多,心智负担重,那么Vue 3.0还引入Hook干什么。并且,现在看看 Vue3 的学习成本,很有可能已经高于React hooks。

Vue 3.0的破坏更新

尤雨溪讲Vue 3.0的破坏性更新,是他们团队犯的错误。但真的是决策失误吗? 仔细看看Github上Vue的贡献度,团队在那里? 是不是有一种Vue 1.0到Vue 2.0重演的感觉,完全就是一言堂,想怎么搞就怎么搞,Vue 1.0和2.0像Angular,现在的Vue 3.0和React Hooks也非常像。

Vue这种毫无路线规划和持续的兼容性远比那些看文档就能躲过去的坑还要坑,因为这很可能直接影响到团队的收入和公司的技术持续积累。路线规划难道不是更重要的吗?不应该反思下,为什么React也存在破坏性升级,但是基本能平滑升级上去了,VUE却很难做到呢。

cult文化

让我们先看下这张图,此图截图自Risingstars.js.org

react-and-vue-04.png

cult文化,本来是指一种小众文化,但是从这张图中看,谁才是小众呢?而Vue 3.0的破坏性升级是不是Vue的用户给了Vue过多的宽容和信任呢?并且现在后起之秀htmx已经开始要超越Vue了,是不是该反思下,Vue是不是自己才是cult文化?

作为一个开源项目的创始人

一个成功的开源项目创始人不亚于任何一个公众人物,说出的每句话都是有一定影响力的。会影响到文化输出,影响到使用这个开源产品使用者的切身利益,或者竞争产品用户的利益。一个公司可能会因为这些而改变招聘,技术选型,也可能因为所依赖的产品出现了重大的变化,而费用大增。因此,创始人和创始团队在表达事情上应更加谨慎,给予社区和信赖他们的人更加明确的路线图,以及可以缓冲的版本(过渡版本)。

尤雨溪作为一个知名的亚洲开源项目创始人,在和大漠对线上以及这次批评React上,表现的都非常差劲。没有做到谨言慎行,并且喜欢贬低对手的行为让人非常不舒适。在西方的世界,已经存在了很多对亚洲的偏见,请不要将这种拉扯对手的不良文化输出出去。虽然我明白尤雨溪需要靠Vue这个项目赚钱,但是我想他已经不太差钱了,毕竟在新加坡买的起豪宅和豪车了(大家可以自行查询新加坡的房地产和汽车是多么贵)。但是很多远程工作者,可能就会受到你的这番言论影响。也许有人有人会说Linus Torvalds也经常喷人,但是大家可以看到Linus每次喷完人,会拿出一个更好的解决方案和产品,而不是在那单纯的贬低。

还有一件事情,就是当初尤雨溪举报大漠的时候是说大漠是Angular布道师的身份,那么俄乌冲突时,尤雨溪2月24日在X(前twitter)符号支持乌克兰,发表的时候是什身份,什么立场?那么在外人看真的就不代表Vue的官方立场了吗?被人发现后又3月3日在微博上“以个人立场同情乌克兰”,为什么不能直接在X(twitter)上直接表明。如果这么一说就不代表Vue的官方立场,那么大漠当年完全也就是一个技术人态度说了一些框架之间的问题,做人不要太双标。

react-and-vue-05.png
react-and-vue-06.jpeg

对于文档,自己做好了,再去说别人,至少React文档中会告诉我,什么地方有坑,这个坑该如何解决。而不是碰到了坑,文档上连找都找不到,还要深入代码,查找根源。(什么,难道你不懂得最佳实践吗?那么请文档指出,对我就是伸手党。)

react-and-vue-07.webp

开源项目本身就有很多地方有竞争,但是竞争是通过更专著,更好的解决社区所关注的问题,例如稳定的产品路线,中文文档,更好的用户例子和常见的避坑指南。既然尤雨溪自己都说了自己能在框架层面解决问题,希望Vue 3.0能在后续的版本中实现的如他所说的那样框架没有坑。对我而言,我更希望是所有的开源项目都越做越好,所有的创始人都能从中获益,大家能互相借鉴其头并进,而非互相拉扯。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK