专访华为OpenTiny作者Kagol

科技趣谈有前端 2024-03-04 17:15:13

往期精彩:

hi, 大家好, 我是徐小夕. 最近在我的公众号《趣谈前端》中上线了《小夕朋友圈》栏目, 我会定期采访国内外优秀的开源作者和独立开发者, 分享他们的学习成长经验和独立产品开发经验, 让更多热爱技术的小伙伴建立技术自信和技术连接. 同时也让公众号里的5w+程序员伙伴们看到国内优质的开源项目和独立产品.

如果你也是一名独立开发者或者开源作者,欢迎自荐.

今天采访的嘉宾是华为 OpenTiny 开源项目负责人——Kagol.

这次采访主要包含如下几个部分:

嘉宾简介聊聊为什么会选择做开源项目,以及目前在做的开源项目从零做开源项目,OpenTiny遇到了哪些机遇和挑战个人或者团队开发者,如果想做好开源项目,需要做哪些准备和规划对于OpenTiny开源之路,当下和未来的一些规划和展望1. 采访嘉宾介绍

大家好, 我是 Kagol,从事前端10年多,先后经历过创业公司、腾讯、华为,目前在华为做 OpenTiny 开源项目,主要提供一套前端开发的解决方案,包括UI组件库、CLI脚手架工具、低代码引擎。

我从 2014 年就开始接触开源,早些年主要是使用开源项目,最早是用 jQuery 以及一些 jQuery 插件。15 年加入腾讯,用过一段时间 Angular.js,后面我负责广告平台搭建,开始使用 React、Antd 组件库和 ECharts,先后给 ECharts 和 Antd 提了一波 issue,现在还可以看到。在腾讯期间,我养成了写技术博客的习惯,最早是在博客园,后面是掘金,目前写了 100 多篇文章,现在回顾起来,这些博客都是满满的回忆,让我能回忆起过去 10 年努力奋斗和成长的历程。

19 年加入华为,之前写文章的经历对我帮助很大,间接地让我有机会深入开源,真正运营一个有一定影响力的开源项目,目前我已经有 4 个 Star 数超千的开源项目,最快的是只花了 3 个月多突破 1000 Star。这个阶段我从一名开源使用者成为了开源贡献者,不仅负责技术、也做开源运营。仅仅 2023 年一年,就参加了 10 多场外部技术大会,上海的 GOTC、HC大会、北京的开放原子全球技术峰会、东莞的 HDC 大会等,还参加了多场高校活动,北理、北航、上海交大等,给学生普及前端和开源知识。

除了参加活动,还做了多场直播,给开发者分享我们的OpenTiny跨框架组件库,之前还和小夕的 H5-Dooring 有过一次联合直播。

接下来我们进入正题.

2. 聊聊为什么会选择做开源项目,以及目前在做的开源项目

前期我也只是一个开源项目的使用者,最多遇到问题提提issue,并没有想过能真正给开源社区进行回馈,参与开源贡献。

也是在 2020 年初,当时我在华为云 DevUI 团队,当时主要在做一款富文本编辑器,我们主要的业务是 DevOps 项目管理相关的业务,需求管理、Wiki 知识库等很多场景都需要使用富文本编辑器。我当时基于 Quill 为底座,做了一个富文本组件,在 Quill 基础上增强了表格、图片、复制粘贴等大量模块,在做富文本编辑器过程中还写了7篇富文本编辑器相关的系列技术文章,发布在掘金,累计有6W的阅读量。

领导看我写文章还不错,当时 DevUI 组件库已经开源半年了,但一直没什么人关注,于是领导让我写点文章推广一下。

也是这个阶段才开始真正深入接触开源的。

做开源项目和之前在公司做项目还是有很多区别的,在公司做项目一般只能接触到比较固定的开发者,就是你的同事,在开源让你有更多机会接触更广泛的开发者,我也是在做开源的过程中接触到了很多前端和开源大佬。

另一个价值是在公司做项目能接触到的项目和技术都很有限,一般一个公司的业务所使用的技术栈都是固定的,即使你想学习更多的技术,也只能停留在理论层面,顶多多点 demo 项目,但是做开源项目,你可以随意挑选喜欢的项目进行参与,可以选择自己喜欢的技术,而这些项目有可能被很多的业务使用,不是一个没人使用的 demo 项目,而你贡献的代码很可能能为很多业务创造价值。

总结下来, 我觉得做开源项目能给开发者带来如下的价值:

开拓自己的思维边界, 让我们的技术视野更加开阔锻炼编码能力和解决问题的能力提高个人影响力和职场竞争力实现程序员的自我价值

目前我在做 OpenTiny 开源项目,刚刚也提到包括一个跨框架的 UI 组件库、支持插件化 CLI 脚手架工具、一个去年9月份刚开源的低代码引擎。

这个项目旨在提供一整套前端应用开发的解决方案,让开发者能够更高效地搭建Web应用。

其中的UI组件库和业界相比有很大的不同,这不仅仅体现在设计规范不同、组件能力不同,更体现在设计架构的区别,我们是想做一个框架无关的面向未来的组件库,这个组件库不仅能用在 React、Vue 项目中,也能用在未来的可能流行的 Svelte、Solid.js 上,不仅能用在 PC 项目中,也能用在移动端项目中。而组件库的代码仅有一套,只维护一套组件逻辑。

这是合理的,因为未来不管前端框架如何变迁,组件交互都是相同的,只维护一套代码,能最大可能得降低开发和维护成本,并实现在框架之间平滑迁移。

现在我们已经实现了这套架构,将组件的逻辑抽离成框架无关的 TS 代码,通过开发一个适配层去兼容不同框架,目前已经实现了 Vue2 和 Vue3 的支持,正在开发 React 和 openInula 框架的适配层,已经完成了初步功能,打通了组件库构建、发布流程,后续只需要增加组件模板就行。

组件库只是 OpenTiny 社区的一个项目,我们还有配套的 CLI 脚手架工具、Admin 后台管理模板、在线主题配置系统等多个开源项目,2023年9月,我们又新开源了一个 TinyEngine 低代码引擎,也受到了广泛的关注,目前已经超过 1000 Star了.

3. 从零做开源项目,OpenTiny遇到了哪些机遇和挑战

业界组件库,大部分都是某个框架的组件库,比如 antd 是 React 组件库,elementui 是 Vue 组件库,其他框架都通过社区实现,并且和官方的组件库代码是分开的,是独立的项目,没有实现复用。

这样存在的问题就是开发和维护成本高,并且开发一套新框架的组件库基本就是从头再来。

这对于 OpenTiny 组件库来说是一个巨大的机遇,我们的目标是实现一个框架无关的组件库,能面向未来的组件库。

我们基于此实现了 renderless 设计架构。

挑战就是目前市面上的开源组件库太多了,而且有老牌的 antd 和 elementui,他们占据了大部分市场, 生态也比较丰富。

那么如何破局呢? 我这里给出几个方向.

首先就是加大宣传,让更多开发者了解跨框架组件库的优势,能给开发者带来的好处,特别是长期的收益。

第二就是加快其他框架的适配,比如React、Svelte、Solid.js 等,还有新兴的 opneInula 框架等,占领新兴市场。

第三就是积累种子用户(通过给用户赋能价值),打造企业用户标杆,获得社区开发者的信任。

第四就是打造活跃的社区,积极响应 issue 和用户问题,打造一个繁荣活跃的社区,号召社区开发者一起参与共建,一个人的力量有限,群策群力才是开源最大的魅力所在。

4. 你觉得个人或者团队开发者,如果想做好开源项目,需要做哪些准备和规划

(比如如何做技术建设,如何运营,如何可持续投入,如何建立生态等)

回顾之前做 DevUI 开源项目和 2023 年开始做新的开源项目OpenTiny,我也总结了一些经验,希望能给其他小伙伴一些参考。

经验一:第一就是想清楚项目的独特价值点,你打算做的开源项目一定是和现有开源项目不一样的,能解决未曾解决的用户痛点的。比如 Webpack 冷启动速度慢,所以有了 Vite。

另外就是要行动起来,我有一个好的点子,这时可以立马写一个 POC 进行验证,验证没问题的话,就可以创建一个开源项目,不一定要多么完善才开源,有最核心的能力,并把流程打通就够了,后续就是不断地完善。除了功能上的完善之外,尽量引入新的流行的技术,这样更容易吸引到开发者,创建活跃的社区。另外就是需要注意文档的建设,不要吝啬写项目描述、写README、写贡献指南的时间。

还有就是规范和质量保障,前期可以宽松一些,吸引更多贡献者参与共建,后续随着贡献者的增多,需要通过一些工具保障统一的提交规范和代码风格,完善单元测试确保项目质量,增加构建和单测的PR门禁等。 (可以参考 前端规范实践)

经验二:Star数不是唯一,制定多维度的衡量指标。

有多少人知道和尝试了解: PV/UV有多少人感兴趣和体验:Star 数、 NPM 下载量有多少人使用和反馈: NPM 下载量、 Issue 数有多少人喜欢和推荐:Star 数有多少人参与贡献和活跃:贡献者数量、PR数

经验三:有人用的开源项目才能长久,通过找到合适的用户,帮助开源项目成长。

经验四:酒香也怕巷子深,积极推广你的开源项目,让更多社区开发者看到你的努力。

写文章、做直播、参加活动。

经验五:凝聚人心才能造就伟大,打造活跃的社区。

下面给大家分享一下我之前研究的用户参与开源的动机分析, 以便大家更好的维护开源项目.

参与开源的动机

2008年神经科学家大卫·洛克提出围巾模型,帮助我们理解人类的社会行为动机。

SCARF 模型:

地位感 —— 我很重要

确定感 —— 这边走

自主感 —— 我自己选择

连接感 —— 我们一起

公平感 —— 我们都觉得公平公正

与社区成员互动的10大黄金法则:

你的社区成员为社区工作,而不是为你工作他们是你的朋友,朋友会坦诚相待如果你向社区成员寻求帮助,他们通常会施以援手社区成员追求个人认可和满足感社区成员不是公司的免费劳动力 使成员和社区互惠互利社区成员不是销售对象社区成员拥有的信息和背景知识与你不同社区成员可能和你有相同的愿景,但有不同的行事方法社区成员的承诺和贡献程度会有所不同安静的人通常是你的秘密武器

社区参与框架:

社区入门模型:参与动机、前期准备、技能培养、切实参与、问题解决、正向反馈社区参与模型:访客、常客、核心成员

总结:

想清楚项目价值,有了一个点子就立马做POC验证,创建一个初始的项目,行动起来做开源运营之前,应该树立正确的开源价值观,制定多维度的衡量指标用户声音是驱动产品发挥价值的源动力,持续解决用户痛点,项目才能长久大胆地宣传你的开源项目,让所有人知道你的努力,写文章、做直播、参加活动都可以

社区由人组成,社区繁荣依赖于成员的贡献,将社区成员凝聚在一起,才能创造出更好的开源项目.

5. 对于OpenTiny开源之路,当下正在做的以及未来的一些规划

其实在前面我也聊了一些 OpenTiny 正在做的事情, 我们目前也在做一些技术上的规划, 具体大家可以参考opentiny - discussions, 比如:

新特性:

新组件补齐表格组件功能增强和优化富文本组件功能增强和优化

工程优化:

文档优化E2E测试用例TypeScript类型补充

生态扩展:

React、openInula框架适配移动端组件完善并部署官网文档TinyPro 中后台模板功能完善

同时我们也会与时俱进, 和AI能力相结合, 做出更加职能的前端解决方案, 如果你有好的建议, 也欢迎随着在 github 提 issue.

0 阅读:0

科技趣谈有前端

简介:感谢大家的关注