Eotalk 是由 Eolink 发动的泛技术聊天流动,每期会邀请一些技术圈内的大牛聊聊天,聊些对于技术、守业工作、投融资等热点话题
第一期,由 Eoapi 的外围开发者秦圆圆和 Eolink CEO 刘昊臻来聊聊,并分享开源产品 Eoapi,以开源的形式构建 API 生态系统。
刘昊臻:是否可能一句话介绍一下 Eoapi 是做什么的?他目前实现的性能有哪些?什么样的用户会适宜应用 Eoapi?
秦圆圆:Eoapi 是一个 API 生态系统。 目前它反对根底的 API 文档治理和 API 调试,以及插件零碎,用户能够通过插件简化和 API 相干的各种工作。当然当初的性能还比拟弱,我的项目刚起步,从立项到明天 8 个月,正式公布才 3 个月。即便是将来也不会无限度地加性能,Eoapi 的重点会放在生态建设上,所以咱们会花比拟多工夫在拓展上,零碎只做根底的外围性能,通过减少零碎的可拓展点来让插件零碎越来越强。总之就是就是保障外围根底性能的易用性,通过插件零碎和社区一起共建生态。
刘昊臻:开发者能通过 Eoapi 做些什么事件?
秦圆圆 : 用户能够在 Eoapi 上托管本人平台的 API,并对 API 进行调试,研发团队日常工作和 API 相干的工作都能够在 Eoapi 上进行。 咱们还会去通过拓展插件,像应用其余的 API 的网关或者像 JMeter 之类的工具进行测试时,咱们会公布一些插件,帮忙用户把 API 信息间接同步到网关,就不须要用户在网关上手写一些 API 信息,从而实现用户在 Eoapi 中托管的信息与其余平台信息之间的联通。
刘昊臻:所以,它其实是一个偏 API 的治理和测试的工具,是吗?
秦圆圆:是的,它的根底性能是这样的,也有其余与插件相干性能,还会有一些和其余产品单干的一些周边的性能的生态。
刘昊臻:所以咱们从用户的角度来了解,Eoapi 是一款带有文档治理,API 测试等外围性能的工具外,用户还能够通过插件去拓展 Eoapi 的性能。比方咱们能够把在 Eoapi 上治理好的 API 信息间接公布到 API 网关来实现公布工作,是这样子吗?
秦圆圆 :是,而后比方当初很风行的低代码平台,咱们在低代码平台中利落拽组件的时候,它尽管是一些 UI 上的工作,但实际上背地还是须要调用 API。所以这时候低代码平台就须要获取一些 API 信息,再造成整个页面对接的过程。低代码平台的这些 API 信息就能够从咱们平台获取,并通过插件来实现。咱们甚至能够通过一条信息再加一个生成代码的插件,测试人员就能通过 API 生成测试代码来缩小他们写测试代码的老本。 基本上你能想到的市面上的与 API 相干的性能,只有咱们的拓展足够强,它都能够集成在咱们 Eoapi 上。
刘昊臻:目前市面上有许多收费或开源的 API 治理或者测试产品,比方咱们公司 Eolink 也是提供了 API 的治理和测试性能,还有像 Postman、Swagger、Jmeter、YAPI、RAP 等,为什么圆圆你还想要做一个 API 产 品呢?从产品定位、性能个性上会有什么不一样的么?Eoapi 有什么亮点能吸引用户?
秦圆圆 : 首先用户群体不一样,Eolink 自身性能是很强,但同时也比较复杂,反对简单的权限和各种深度性能,不适宜集体开发者,也不适宜轻量级团队,比方 3-5 集体的开发团队,其实他们用不到那么深的性能,所以开源产品能够满足这部分开发人员的需要。
再加上思考到 API 信息在很多团队是属于比拟机密信息,有 安全性要求。所以蛮多团队是要求不能将 API 托管在 SasS 产品上,心愿本人部署 API 工具,咱们凋谢了源码,同时数据托管在本人的平台,所以应用开源能够本人治理 API 数据,同时源码齐全凋谢不会放心安全性。
Postman、Swagger 偏单点垂直的工具,咱们心愿以 API 信息为外围,可能通过插件的形式把整个流程多种工具串联起来,和其余产品相比的话,目前性能确实比拟弱,然而也能笼罩根本的,像文档、疾速测试的产品,而且自身轻量级产品用不了很深的性能,这个性能强度还是足够的,当然咱们会一直地强化性能。
当然,最重要的区别是 Eoapi 目前是以插件生态为主的,咱们会更加心愿构建生态,Eolink 后续也会有这种生态,开源下面的插件也能够拓展到 Eolink 上,所以这个是定位上的区别。
性能上,咱们心愿将体验、易用性做到极致,像 Postman、Swagger 性能越来越多,而且越来越简单了,这也是用户次要吐槽的点。
刘昊臻:Eoapi 和 Eolink 的产品之间是什么关系呢(或定位有什么差别)?是否会放心 Eoapi 会抢走局部 Eolink 的用户?
秦圆圆:我感觉是一个互补的关系,Eolink 自身笼罩了需要更深的企业,Eoapi 满足小微型团队的需要。首先指标用户定位是不同的。其次抢走也是失常的事件,而且将来所有都说不准,我感觉咱们会更加关注怎么为用户提供更大的用户价值,所以将来是竞争关系也说不准,团队外面有竞争也是好事件,会让产品更加有生命力。
刘昊臻:Eoapi 在开发过程中是否有一些技术难点?(比方插件零碎)你们是怎么解决的?
秦圆圆:其实蛮多的,从一开始咱们外部的技术栈和开源用的技术栈是不一样的,所以会波及到技术栈与架构降级的货色,而后 API 调试的性能须要分析整个 HTTP 协定调用层面的流程和细节,是一些库没有方法提供的,扎实的又上了一门计算机网络课。
不过印象中最难的次要是两点:
- 插件零碎的设计和实现;
- 数据库代码对立。
先说插件零碎的难点在哪。说一下概念,插件是一种运行在特定平台拓展平台原有性能的程序,就像游戏世界里的游戏配备,进步额定的力量属性之类的加成,然而必须要穿在你身上才有用。
那我穿个配备把人穿没了,是不是很不合理?所以插件零碎可能就会有这样的问题,因为退出了插件零碎其实是退出了一种新的角色,插件开发者,可能是官网、也可能是企业,所以代码你没有方法齐全掌控。
如果你插件零碎隔离做得不好,装个插件导致利用崩或者拖慢利用速度的状况亘古未有,就算是 windows 零碎迭代演变那么多年了,有些程序卡了你电脑还是会崩,所以做好插件和主零碎的隔离是一个难点。
若隔离零碎隔离得太好了,那么用户能拓展的一些工具或者性能就会受限,若隔离不好则会影响到原有的外围零碎得运行。所以这里也须要有一个均衡,针对不同的需要和利用零碎来提供不同的性能点。除此之外还有要思考设计那些 hook,插件 API 的权限管制,依据不同的运行环境比方 Web、桌面端或者是 Node 这些运行环境提供不同的 API,插件的生命周期与界面的 UI 怎么对立,以及插件之间复用的资源滥加载等等问题。
第二个问题就是 数据库代码的对立。数据库代码对立是因为开源既反对单机数据库也就是本地数据源 indexeddb,也反对近程数据源 Mysql,所以为了兼容不同的数据库语法,同一个逻辑咱们可能要写两种模式的代码,咱们不想在反复的工作上浪费时间。
所以 咱们是通过本人定义了一套 DSL,而后通过编译伎俩将 DSL 生成两套数据库 API,这个次要不是我负责实现的,所以感兴趣能够在 Github 的 Discussion 和咱们交换。
刘昊臻:怎么解决?
秦圆圆:在退出这个我的项目之前,我就有好几年的浏览器插件开发教训,所以站在使用者的角度对插件零碎的因素还是比拟理解的,相干设计的需要制订首先没有问题,其余成员也有插件开发的教训。
咱们用的语言是 Javascript 嘛,所以能够参考的是市面上成熟的插件零碎设计,比方用 Electron 开发的 VSCode 插件零碎,Web 技术实现插件的 Chrome 浏览器,能够通过浏览源码、官网文档排汇他们的设计教训,再衡量后联合咱们的需要交融到咱们插件零碎的设计中。
除此之外咱们还参考了 qiankun 的微前端设计,插件零碎中遇到的一些问题微前端也会遇到,例如代码隔离简略粗犷用 iframe 还是 electron 的 browserview,多利用 / 多插件的怎么加载等等。
目前咱们花了半年工夫去钻研它,但还有很多问题咱们是还在解决的,比方代码隔离,咱们并没有隔离得很好,插件之间的通信形式等等都是还要持续欠缺的。
刘昊臻:Eoapi 接下来半年的迭代打算是什么?
秦圆圆 :咱们会退出一些 前后置脚本 能够让 API 测试这个性能更强,同时咱们会 反对 API 多协定 , 后续咱们会支 Websocket、TCP、UDP、GraphQL 等等,让咱们后续能够更好地对接各个平台或者利用。打磨外围性能,进步易用性。
第二个 迭代方向是国际化,咱们心愿面向全世界所有的开发者,扩充用户群体,这样有利于共建生态,在这个波及到文化、翻新、技术、经济、政治等等诸多的因素,之前次要做国内的产品,所以国际化是一个尝试也是一个挑战。
最重要的当然是 逐步欠缺插件生态,一个是通过裸露更多的外围零碎 API,提供官网插件。最初是寻找用户迫切的需要和一些痛点,买通利用,和其余厂商合作开发插件。
刘昊臻:你对 Eoapi 将来的瞻望是什么?比方咱们别离设想 1 年后、3 年后、5 年后的 Eoapi,它能够为大家带来什么价值?
秦圆圆:咱们发现市面上很多和 API 相干产品是没法间接对接的,咱们心愿可能让比如说:研发团队的 API 信息能够和测试团队买通,和你的网关买通或者说你的防火墙,或者说你的利落拽的低代码平台的组件的对接来自咱们平台的 API 信息,或者说间接通过 API 能够生成调用代码、测试代码等等。
在这个 API 工具的上下游能够做很多货色,然而咱们不可能在一个产品外面汇合所有性能,所以这个货色在目前市面上比拟少见或者说压根没有。
咱们心愿有种独特的语言,独特的环境可能把零碎外部任意两个或多个利用连接起来,让他们连接起来的载体就是 API 信息,站在这个角度来看,咱们能不能做一个 API 信息这种开源产品,同时又能造成一个生态系统,基于这样咱们发散开来会感觉说 咱们做一个领有比拟弱小插件性能同时又治理根底 API 信息的货色就可能实现这个,因而咱们感觉做这样的尝试是无益的。
而且咱们会发现技术,尤其是计算机相关的都是集众家之长,通过凋谢一直倒退而来的,在这个畛域里放弃关闭的那些,都没有通过市场的洗礼,就隐没在了历史的舞台上。
有人说你只是一个软件我的项目,只是一个工具,为什么能够称之为生态?工具只是一个生态的载体,生态不只是产品的代码,还包含用户、开发者、社区等等为这个产品源源不断发明价值的实体,都是生态的一环。
所以无论是 1 年、3 年、还是 5 年,咱们的终极目标就要打造一个 API 生态系统,你让我看到很远的货色,我说实话我看不到,只能置信判断,置信凋谢是将来的趋势,置信单干而不是关闭可能发明更大的用户价值;
3、5 年后,我心愿 Eoapi 可能成为一个生态系统,下面有各式各样的插件,买通所有和 API 无关的工具链,不再寄希望于一个产品解决所有问题,而这一切都是由前端的业务代码 Javascript 实现的;
3、5 年后,我心愿 Eoapi 不只是咱们团队在保护,会遇到互联网各行各业的用户、各个国家的贡献者、与不同的团队合作开发插件,心愿有没有咱们,生态都依然可继续。生态系统传递的是能量,我心愿 API 信息就是咱们 API 工具生态系统中的能量。
刘昊臻:如果社区和第三方开发者能够参加进来,你感觉大家能够提供的帮忙有什么?以及他们怎么参加进来?
秦圆圆:开源其实就是一种公开通明的合作形式,对于为开源做奉献常见的误会就是:为开源做奉献必须得提交代码。事实上,但一个开源我的项目可能运行施展大价值素来就不仅仅只有代码,代码当然重要,但我的项目中有很多不须要编码的重要局部,做这些也一样是超棒的奉献,集本人的短处帮忙社区。
如果你是咱们的用户,对产品有独到的见解,那你能够 提 Issue 反馈 Bug 或者提产品的倡议,这里提一下我的理念。在 Issue 上有个 label 叫 good first issue,能够先从这个标签关联的 Issue 开启你的第一次 代码奉献。
开发插件当然也算是一种代码奉献,比方之前有用户就提了他的场景是心愿能够导入 Curl 变成 API 文档,咱们没多久就反对用户能够本人开发导入插件。
如果你酷爱写作,还能够在欠缺官网文档,在社区形容产品以及产品的性能等等,还有一些社区推广,这些都是咱们心愿失去的奉献,我感觉为开源贡献力量失去的回报就是可能学习到很多、受教很多、且可能锤炼任何你可能想到的教训。
刘昊臻:是否介绍一下 Eoapi 开源产品的历程,帮忙其余想要做开源产品的团队理解如何从零到一逐渐做起来,其中又有什么值得特地关注的点?
秦圆圆:
对于立项:
- 产品定位 / 解决哪些用户的问题;
- 定项目名称,最好不要反复,公司的我的项目还不能侵权他人的商标;
- 你想要在国内还是国内公布,提前准备域名建设官网,当然间接应用 Github pages 也是能够的;
- 我的项目选什么 License,Apache 还是 GPL 还是超灵便的 MIT;
- 在哪个平台开源 Github 还是 Gitee。
对于组建团队:
- 招聘:技术过硬是根本需要,有凋谢的心态、有肯定文字功底会更好地胜任开源工作;
- 组建开发者关系部(布道师,文字工作者等);
- 选合作工具,定合作的流程,开源团队的气氛绝对业务团队来说决策会比拟自在、凋谢。
对于代码流程上思考:
- 补充社区标准;
- 代码合规;
- 公布频率 / 公布策略,例如版本号用什么标准,公布版本须要 beta;
- CI/CD 流程。
对于怎么经营:
有时候咱们会有种观点,感觉酒香不怕巷子深,这是没问题的,然而你如果能做到巷子不那么深,酒不就能让更多人喝到了吗?
不是说我为了经营我就不弄产品了,经营和做产品一样重要,相辅相成,只是咱们在不同的阶段经营的侧重点不一样。开源因为面向的是开发者,所以他的伎俩可能和 C 端的不一样,我这里不说具体的办法,因为我也不算业余的,所以就讲两个小故事,来表白我对开源经营的认识。
- 就是说某个开源我的项目 A(不点名怕得罪人哈哈)在线下举办活动的时候拉了微信群,加入流动的人进群后,我的项目经营的小伙伴通知大家点个 star 就能够支付奖品,被骂惨了;
- 又有某个开源我的项目发动了一个叫灭虫打算的流动,就是将我的项目外面某些简略的 Bug 释放出来让大家修复,其实我一开始听的时候也没什么感觉,就像 Github 自身也有 good first issue,但还是引起争议了,因为有人发现这个流动其实对于软件品质、贡献者程度晋升的收益不大,目标指向了 Issue 和贡献者的数量,为了谋求数量刷进去的 Issue 甚至升高了开发效率,比拟形式主义。
这两件事让我感觉咱们在做经营的时候,首先要理解开发者团队,不要功利地刷数据,不要打动本人,做影响力而不是应用营销伎俩做经营,更多是传递咱们的产品能帮忙用户解决什么样的问题,关注产品价值和用户价值。
刘昊臻:因为开源团队里还有蛮多其余成员,能够麻烦你介绍一下目前的开源团队成员么?他们各自在团队内的分工,他们的特质,以及你最观赏大家的点是什么?
秦圆圆:其实咱们开源团队次要有三个人,我 github scarqin,kungfuboy 豪杰,buqiyuan 小缘。
Scarqin 次要负责开发、经营和产品设计,并重产品设计。
Kungfuboy 豪杰 次要负责的是技术架构、插件外围零碎开发、官网插件开发,在技术上他会常常从零碎的角度给咱们分享如何划分逻辑,以及善用工具解决工程系问题。他的座右铭是将机器编程进行到底,卷死人类,日常喜爱用编译伎俩开发小工具提效,基本上每次团队分享他人都是讲和前端、工程无关的内容,而他的主题不是机器编程,就是在机器编程的路上。我最观赏他对于技术的激情以及对于解放人类手动编程事业的执着谋求,对了,还做得一手好 ppt。
buqiyuan 小源 次要负责组件库、业务性能开发,他是咱们中最年老的人,也是最晚退出团队的贡献者,面试时我就晓得他有个开源我的项目比目前 Eoapi star 数还要多的组件库我的项目。他是属于除了沟通技术之外就基本上很少谈话的人,一开始闭口的时候也会缓和,咱们刚开始交换还放心表白有问题,直到我看到了他的第一份文档,逻辑非常清晰,我置信能写这样一份的人表白和了解必定是没有问题的,就是不爱谈话罢了。
我自认在他这个年纪,并没有在业余时间那么踊跃地加入开源我的项目,所以我最观赏对奉献社区的激情,是个心田有本人的小宇宙的人。因为我是技术转产品嘛,所以也有很多货色在学习中,其实他们给了我很大的反对,原型图画的不好全靠脑补。之前是近程当初咱们在同一个小办公室,常常探讨技术、用户场景、产品等等,咱们还会一起写官网文档,回复 issue 和用户交换等等。
感觉就像是一个并肩作战的突击小队,我喜爱和他们交换技术,分享产品设计心得,办公室还会堆很多小零食饿了就一起吃,我十分享受这样的气氛。
刘昊臻:开源团队最开始是齐全近程合作的,直到最近才见面,因为其实可能真正实现近程办公的的近程合作团队并不多,是否介绍一下你们是如何进行近程合作的,并且其中踩过什么坑、如何解决等?
秦圆圆:我感觉其实近程办公和线下合作的很多问题都是共通的,只是近程办公将问题放大了。所以我置信如果能做好近程,也肯定能够做好线下的工作的。
首先要提前布局好 Roadmap,产品打算 。让大家都晓得咱们这个阶段最重要的事件是什么。因为每个人都有很多工作在做,开源里不只是要做代码开发,可能还要写文档回复客户问题等等,所以咱们每个阶段会有一个很重要的内容工夫点,只有在那个工夫点内实现相应的工作,其余的工作本人去安顿施展,提前布局好 Roadmap 和产品打算。咱们还须要以各种文档为根底的合作,提前写技术计划预估工夫,实现后归档相干文档以便其余成员了解。放弃凋谢,有问题及时沟通,以及每周固定工夫周会,明确 Roadmap,沟通进度等等。 公开通明是良好合作的基石。
刘昊臻:你从一个跟着产品需要来做迭代的工程师角色,转变成一个既要负责思考产品,又要做开发,还须要率领团队的角色,在这个过程中,你感觉从工作内容、心态、能力等方面有什么扭转么?
秦圆圆:之前做开发次要是依照需要的迭代走,其实大部分工作是本人能够本人独立实现,进度能本人管制。带团队后你会做很多协调大家更好地工作的事件,比方任务分配、跟进和其余团队沟通协调资源、团队成长等等。
其实有些事件蛮琐碎的,然而可能不得不做,从一开始的慌手慌脚,到当初起码在我心目中是及格了。在工作内容上的最大变动是写代码的工夫变少了,其实我本人真的很享受写代码的工夫,我很喜爱一部电影叫心灵奇旅,外面提到一个心理学概念叫心流,心灵的心流水的流,进入心流模式的人就进入了本人的沉迷世界,极度专一。
本人集体技能多了很多,学会了原型设计、如何写文案、经营的常识、和各种团队的人协调单干等等,感觉做产品就是要成为一个全能的人,所以将来还有很多常识要学习~
刘昊臻:在这个转变过程中,你感觉遇到最大的问题是什么?是怎么解决的?
秦圆圆:之前是工作导向,当初变成指标导向。所以一开始会做很多不是本人善于的问题,所以第一反馈是为什么是我,太难了,我做不了,回绝、排挤、丧气。
当初想的是我到底要怎么做能力实现,要找谁做,缺什么,我怎么能力取得这些资源。这种变动不是一时之间的,而是渐进的,可能过来容易沉溺在舒服区,其实只有走出第一步建设自信,后续的工作都会容易很多。不再被动的判断一个工作是否正当,能做才做,而且感觉本人有主动权能够去解决这个工作。
当然也不要示弱,明明做不好还要硬着头皮接,接了就尽全力去做就好了,的确不行,及时抵赖本人做不到也是一种勇气。
刘昊臻:最初,麻烦对 eotalk 的敌人做个寄语吧。
秦圆圆 :感激大家加入明天的分享,我感觉开源就是一种合作形式,让你随时随地地参加你感兴趣并违心为之投入的我的项目,遇见那些和你志趣相投之人,从帮忙别人中播种成就感和高兴,我始终感觉我从开源我的项目中失去的播种的远大于我的奉献。 心愿将来可能在开源世界里与再次与大家相遇,一起共建 API 生态。
视频回看地址:https://www.bilibili.com/vide…