最近看到了 Rich 发了一篇关于 《未来Svelte》的推文。

af12412530ac82b9e45d4134fcb7c16c.png

非常激动的点开看了,这个视频我看了两遍,感觉质量还是非常高的,从如何构建开源库  到 如何运营开源库  再到 开源库的核心库规划  一系列话题。虽然视频是针对 Svelte 这个框架的,但是我认为同样适用于任何一个框架。

接下来我把个人觉得一些重要的点做了一个总结归纳,如果想看完整版内容请看原视频(https://www.youtube.com/watch?v=uQntFkK8Z54)

整个视频都是以问答的方式进行的,因此每个标题我都归纳了主持人对 Rich的提问,如果只想要看 Svelte 未来的规划,可以直接跳到第四块内容。每块内容最下方有笔者自己的个人理解(不认同可以跳过),非对话中的内容。

1.构建的第一个流行的开源库是什么?如何改变在开源道路上的进程?

7a42026ceb88f8fee9d69e817f7aa3ab.png
img

Rich 提到,他做的第一个比较流行的开源库是 Ractive. 这个库可能对大家来说有些陌生. 可当时它也是风靡一时的,他可以说是 MVVM 的鼻祖

以下为 Ractive 的示例:

7ececb43be0e4eb08c14d0142e942920.png

是不是 Vue 和它很像,因为在早年,Vue 也是借鉴了 Ractive 的相关用法,从Vue 的历史 Issues 中也可以发现这些。

c008966aacdf50fd29eecca1a1893c02.png

但是 Ractive 推出的同时,React 也被推出了,Rich 心想:完蛋了,自己白费时间了。(毕竟 React 可是有公司作为背书的),但是 Rich 最终还是推出 Ractive,并且社区反响还不错,让 Rich 觉得可以和 React 竞争。

因此Rich 为 Ractive投入了大量的心血,花光了他所有的周末和晚上的空余时间去开发项目。这也是他第一次为开源投入了大量的经历,为今后的开源事业奠定了很好的基础。

e28c60372d8160ade76530448bf412eb.png

但是随着项目的维护任务繁重,对于 Rich 来说以业余时间去开发项目令他非常精疲力尽,这也是他第一次介绍作为开源维护者的现实状况。但是这次经历教会了他如何获取用户,处理如何让用户参与贡献、统一开展项目、如何拒绝 PR 等问题。

随后 Rich 在开源的道路上一直前行,还推出了另外两个比较有名的库 Rollup、Svelte 。

Tip(笔者自己总结,非官方态度):在初期的时候认定目标应该朝着一个方向去努力,有助于我们的知识积累以及踏入开源的队列中。

2.如何创造一个现在市面上不存在且有价值的工具?

Rich 认为创造工具大部分源于“个人之痒”(大意可以理解为个人的技术探索,市面上某些工具不好用就自己造一个)。由于他本身处于新闻编辑部工作,常常有大量的繁重、迭代快的工作,因此利用好开源项目十分重要,正是在这种繁杂的任务中,促使Rich想让开发过程足够简单,因此造就了 Svelte.

11b46cd9c9e581f6d80baade434428d8.png

Tip: 这其实也是一个老生常谈的问题,多与实际业务结合,才能创造出一个优秀的开源项目。

3.加入 Vercel ,对 Svelte 的未来意味着什么?

1.Rich也是直言,进入 Vercel 可以与厉害的人打交道,毕竟例如之前 Webpack 作者 Tobias  和 SWC 作者 Donny 都加入了 Vercel。(还有最近 React 灵魂人物 Sebastian 也加入了 Vercel)

2.还有一个重要的点,Rich加入Vercel,意味着自己只要打一份工。(在 Vercel 的工作就是搞开源,这真是令人眼红啊)

88d59671d60040d8e6488e7c6004ac82.png

3.打一份工的好处就是可以拥有更多的时间投入开源事业,Rich 也明确表示,之前的兼职状态维护Ractive就让他精疲力尽,他不希望同样的情况发生在 Svelte 身上。

28ff6426d63d6d1fe9d234a58b01956c.png

4.消除人们的担心,一个没有资金支持的开源项目,会随时消失。但是现在有一名全职工程师,并且Vercel向Svelte 投入资源,投入的不仅仅是 Rich本人,还聘请了 steph Dietz 处理开发者关系团队的工作。

后面 Lee 还和 Rich 讨论如何能让 Svelte 进入到下一个级别的发展速度。(当你拥有一个快速发展的开源项目后,后面这一点真的非常重要)

Lee认为利用工作和招聘对于 Svelte 是非常重要的。拿React 举例,也许有一些开源爱好者正在研究 React,如果公司招聘中要求会React,这对于爱好者将会有一个正向的反馈,这个反馈也会使得 React 社区快速发展,整个是一个积极的循环。

bab28c093ec4c718c041d6a6091062ed.png

Lee 也表示Facebook (Meta)也在他们一个的网站使用了 Svelte,即使他们创造了 React,但仍然喜欢尝试,这是他们一个非常好的品质。

19b52a2d4338be34cdb91fb26194cab2.png

Rich 也表示对 Svelte 非常有信心

2f5d251b0a6671acde3a92961ae52dfc.png

Tip(笔者自己总结,非官方态度):  开源维护者真的需要衡量好本职工作和副业,也许未来会有新的解决方案,能够帮助开源工作者拥有好的时间分配方案以及资金收入。(不然就会像最近的 Log4j 一样... )

4.关于Svelte 的未来总体规划,明年或者未来几年对如何推进框架的看法?

198070f6051957378636dfd6a62a5d68.png

从时间线来看Rich 表示确实即将会推出一个新的主要版本。

5ea21eea76b335371ae68e2b36309e31.png

现在距离 Svelte3 发布已经过去两年半之久了。

Rich 对 Svelte4 有非常多的想法,但是他现在有点犹豫要不要提前来挖坑,哈哈哈哈。(还有点可爱,知道自己老是挖坑,但是不埋坑)

a0a7aeb746a56e9f78c54afd0cd5ecd3.png

但是他还是谈论了一些目前正在着手做的事情,利用 Rust 重写很多工具链,来提高编译速度。

2f29e053866c4dd3265ab1d49554bd6d.png

还提到重要的一点,很多人批评/担心 Svelte 是因为Svelte编异输出代码的时候,Svelte 的体积随着组件数量增长曲线会比其他框架更加陡峭。

这张图反应的问题,一直是Svelte 所被诟病的...

详细的 Issues 可以看 https://github.com/sveltejs/svelte/issues/2546

84c302f3b3fa12cfc49f73da137eb00a.png

虽然 Rich 认为这个在现实中并不是问题,因为 Code Splitting 和拐点足够远一般不会发生这样的情况,但是这依然是一个隐患。

54d333103622580cb66b2763a1b8a5c9.png

因此 Rich 说已经有了一种新的编译方案,能够使得编译后的代码小于输入代码,真实令人期待~

还谈论到目前正在考虑类似 Error boundaries、Suspense、React Server Component 一些新玩意。

Tip: 个人通过 Lee 的对话中感受到的,最好有一个地方记录项目的整体规划,有助于大家对这个项目充满信心。关于这一点我觉得 Vue 做的还很好的,每次有什么相关大的改动就会先提出一个 RFC 进行讨论,以及 最近大伙的 Notion 开源替代品 AppFlowy

5.是如何规划核心库中的内容,例如 React 核心库是得自己选择状态管理库、路由等等?如何划定核心库和生态库的界限?

Rich 认为React 的定义核心库的形式可扩展性很强,但是你也被迫需要去创造一些周边生态库(路由管理、状态管理以及如何去管理你的 CSS)

这确实造就了关于 React 中非常多的 CSS 以及 JS 库的创新,但是同时带来的问题就是选择困难症,就像  Rich 提到的关于 如何将 CSS 添加到 React 中 这件简单的事情,都没有一个答案。

eb8ddae146d3032b598a559c091e1498.png

关于核心库的划分,Rich 给出了一个答案,他认为 React 是一个 JS 框架,但是 Svelte 是一个 Web 框架,因此他尽可能地提供给人们方便,例如快速写动画啊、快速写过渡等等。

f4493636997ec44dbf375dd7cc9df864.png

Tip: 核心库的划分确实很重要,个人确实还是比较喜欢官方统一生态比较好,这样减少用户的选择成本,当然官网也可以提供接口来拥抱其他竞品。

6.如何解决开源资助问题的看法?认为像 vercel 有风险投资的公司可以做什么?

357ec21ae53f6d6fd9a029601b8d3e63.png

Rich 表示这对他而言很难,这件事也是他正在学习的事情。

033004e26b461946ec1fcc9873abdb58.png

Lee 也跟随着 Rich 的回答,认为也许为开源项目投入数百万的资金,并一定能够解决问题。

8b6948bc851b966bfa2de8cf0a200f24.png

有时候开源项目可能希望赞助商能够提供类似 PM 一样的角色,能够帮助开源项目更好的管理时间,从而能够释放核心开发者的处理杂事的时间。

db6adc8a08ab2b2dc713b9b3c8ad5d54.png

Rich 认为很多项目可以从 PM 中受益,也许有一种模型能够让某个人充当各种项目的PM,认为 OpenJS 基金会有一些方案。

他认为一些开源项目有一个最大问题,就是需要对Issues和PR进行分类,如果有一个不负责写代码的人说可以帮助这些,他认为可能会带来很很多帮助,当然不是绝对的,也许有些开源项目只允许让核心开发者来进行管理。

Lee 认为许多很成功的开源项目,在有公司支持支持之前,创始人和主要维护者像一个初创公司一样运作,需要做很多工作,产品、营销、工程、技术领导、PM,并不断扩展自己身的技能,将不同的部分委派给核心团队或者开源社区。

Tip: 在项目初期的时候个人确实需要花费非常多的时间,这管理难度比公司难多了,非常看重领导人的个人能力,尤其是核心团队的选择。

总结

采访虽然是以 Svelte 贯穿整个过程,但是我觉得本次讨论不仅限于 Svelte ,适合任何开源项目的流程,从如何构建一个市面上没有且有价值的项目 ,再到设计开源项目的时候如何划分核心库(项目定位) 再到如何推广开源项目(招聘/工作是一个非常重要的方向) 然后到关于开源赞助我们应该如何一起塑造这个项目 ,最后项目的未来规划最好有一个文档的沉淀

2142c11ba8a1c3050966d08da96bff58.png

往期推荐

2022年如何成为一名优秀的大前端Leader

4143ba05f34e7497ad169b6160f758ff.png

大漠老师:2022 年的 CSS,到底有哪些特性

0a6d25b9c92ca50ffaac4006692dc00c.png

升级Yarn 2,大规模瘦身node_modules

52dcafe9d8b3e7970605c8c0e4336c97.png


内推社群

我组建了一个氛围特别好的腾讯内推社群,如果你对加入腾讯感兴趣的话(后续有计划也可以),我们可以一起进行面试相关的答疑、聊聊面试的故事、并且在你准备好的时候随时帮你内推。下方加 winty 好友回复「面试」即可。

0c495379fe3990773a814d28aae75b83.png

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐