【访谈】Eotalk Vol.01:Eoapi,我们希望以开源的方式构建 API 生态系统

Eotalk 是由 Eolink 发起的泛技能聊天活动,每期会邀请一些技能圈内的大牛聊聊天,聊些关于技能、创业作业、投融资等热点话题。

榜首期,由 Eoapi 的中心开发者秦圆圆和 Eolink CEO 刘昊臻来聊聊,并共享开源产品 Eoapi,以开源的办法构建 API 生态体系 。

以下为演讲内容:


刘昊臻: 简略介绍一下自己吧。

秦圆圆:咱们好我叫秦圆圆,现在在担任 Eoapi 的中心开发作业。

刘昊臻: 是否能够一句话介绍一下 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 生态。

点击此处看直播视频!