查看原文
其他

Knife4j v5.0 产品规划分享

八一菜刀 Knife4j 2023-09-20

大家好,这是我第二次和大家分享Knife4j在未来大版本的一个迭代规划。

我在之前4.0的时候,也尝试这么做过,这一次依然是践行之前的策略,先和大家分享一下我对未来版本的一个想法,希望碰到一群志同道合的人来一起共建该项目。我不确定这种方式是否合理,但我觉得,这是我自开源这个项目以来,一种尝试,一次学习的过程,希望能够真正的学习到如何做好一个开源项目。

Knife4j 在5.0版本,我会从以下几个方面,分享我的看法:

  • 一、期望和定位
  • 二、用户需求
  • 二、产品矩阵
  • 四、优先级&进度表
  • 五、最后

一、期望和定位

在软件行业日益成熟的今天,传统软件经过互联网、大数据、AI、人工智能等多个时代的发展,很多好的软件,依然热度不减,活跃在人们的眼前。

这其中必然有我们值得深思的部分,我们需要思考的

而今天,Knife4j经历了大小5年的迭代发展,虽然只是在Java行业逐渐形成了一定的影响力,但受众范围依然很小,局限在很多开发人员的使用上,从软件的角度来看,他依然是存在使用门槛的。

未来,我们应该怎么去发展呢?我们的下一个路口在哪里?

首先,我们需要思考我们最终对该软件的定义,为以后的发展奠定基调,我们究竟想把他发展成什么样子?一个精而美的,带有使用门槛的独立中间件?或者是抽象成服务,通过软件Saas的方式发展拓客,降低使用成本?又或是做成那种大而全,涵盖功能更广的企业级协同软件?等等

要做的方向真的太多了!!!但是时间和精力,会为我们大脑做决策,告诉我们,应该做什么?

但到目前为之,我对Knife4j的期望和定位:做一个更加纯粹的开源工具

希望Knife4j在未来,能够达到CURL这类工具的高度,这是我的目标。

在做工具的前提下,我想为Knife4j的未来产品迭代开发,确定三个方向及理念,主要如下:

  • Adapter(适配解析):基于当下流行的、成熟的规范体系、工具等,提供核心解析服务,例如:Swagger2、OpenAPI3、curl、AsyncAPI等等
  • Data(数据转换服务):统一适配转换后的数据格式,提供不同的需求服务,例如:格式互转、调试、低代码
  • Ui(界面呈现):基于当前最流行的前端开发框架React、Vue等Ui工具包,重构用户界面,驱动用户需求。

其实三个方向,核心最重的可能依然是前端的任务,服务端加以辅助实现具体的功能。

Adapter适配:适配解析是我们的核心以及基础,只有先兼容的标准的规范,上层的应用,才是我们发挥的广阔空间。

Data(数据转换服务):数据部分是企业的重要资产,虽然我们是专注于API领域,但是数据会是未来Knife4j发展和突破的重要生命力

Ui(界面呈现):界面是人们看得见摸得着的地方,重写的意义在于,不管是开发者或者企业用户,都可以定制个性化的需求,最终达到目的

这三个方面会指引Knife4j在未来的版本迭代中进行体现,也是我们更新的动力。

二、用户需求

我们在开发Knife4j的过程中,接触到了很多开发者,同时也会有一些企业需求。虽然目前仅仅局限在Java领域中,但在Knife4j 接下来的5.0版本中,我们需要找到破局的办法。

用户的需求很多,例如:

  • 提供企业级的个性化支撑,在Ui界面中能够呈现
  • 支持更多的语言、框架,让Knife4j从Java领域中走出来
  • 降低用户使用门槛,提供更人性化的产品或者服务
  • 提高性能与安全性
  • 更可靠以及更全面的单测用例,保证稳定性
  • 代码混乱,扩展困难
  • more….

但我们的用户需求越来越多的情况下,说明Knife4j的发展已经到了一个不破不立的局面,这是我们本次提出Knife4j 5.0大版本的前提。

三、产品矩阵

整体产品技术架构如下:

Knife4j 架构图-v5.0产品架构图.png

基于我们的产品定位与期望,加上这么多的用户需求,我们在5.0版本中,主要产品规划方向如下:

3.1 基础核心(前端)

因为Knife4j是靠着Ui的交互界面发展起来的,因此,前端依然是我们此次大版本重构的首要任务。

前端部分,我们会把Knife4j的模块拆的更细,功能更加清晰一些,主要模块:

  • knife4j-core: 基于TypeScript编写基础核心解析包,包括对Swagger2、OpenAPI3、AsyncApi等规范的解析,并开放解析后的数据结构API,供上层应用使用
  • knife4j-cli: Node生态下的cli工具,基于TypeScript编写
  • knife4j-extension: 基于TypeScript编写的浏览器插件的基础包
  • knife4j-ui:基于React+Antd框架编写的前端Ui层呈现

基础部分的核心目标:

  • 基于TypeScript重写所有前端核心功能,做好程序设计、扩展设计。
  • 为上层应用及产品打好基础。

3.2 中间件(框架级别)

在5.0的版本中,中间件框架级别的组件,主要还是围绕Java+Spring框架下的组件封装,这是我们在5.0迈出的第一步,我将目前在4.0版本中封装的Java组件平滑的迁移到5.0版本中,至于其他语言的集成,需要依靠社区的力量去发展。

3.3 上层应用(独立工具或者服务)

如果我们构建好了基础的架子后,未来在扩展上层应用或者独立工具的时候,会扩展起来得心应手。主要包括:

  • Knife4jInsight:目前Knife4j已经开发产品,依靠注册&服务中心,提供独立的聚合OpenAPI服务,并且提供可视化操作界面
  • Knife4jCli: 上面我们提到的,在Node生态下的一个Cli工具,未来有需要命令行交互的一些想法都可以往这个产品上去扩展实现
  • Knife4jExtension:基于浏览器的插件,我们把Knife4j的界面通过插件的方式安装在Chrome、Firefox等主流浏览器上,更进一步降低用户使用学习成本。

四、优先级&进度表

整体5.0开发计划或者一些Idea,开发者可以关注GitHub的Discussions。

地址:https://github.com/xiaoymin/knife4j/discussions/557

我们开发事项主要包括:

1、前端部分:

  • knife4j-core(前端基础核心):前端核心,ts编写,本次主要解析实现swagger2、openapi3规范
  • knife4j-ui(前端Ui界面):基于React、Antd重构Ui界面,基于TypeScript写

2、组件部分:

  • knife4j-gateway-spring-boot-starter: 基于Spring Cloud Gateway网关的聚合OpenAPI服务组件,本次迭代目标主要考虑服务的个性化配置、服务发现等机制进行优化。
  • 其他Java组件: 在前端Ui界面重构完成后,我们会考虑发布rc版本,进行适配

2、产品部分:

  • knife4j-cli(命令行工具):该组件是一个衍生孵化的新产品,基于Node环境提供一系列工具,本次cli命令行主要目标是提供一个基础的markdown转换方法
  • knife4j-insight(独立中间件):本次insight的版本迭代主要是为其添加可视化操作界面,把更复杂的概念留在底层

五、最后

Knife4j的此次版本规划,是革命性的,涉及到的工作量也非常大,原本计划期望是能够尽快在今年完成他,对Knife4j感兴趣的朋友可以一起参与进来。

另外,在上面的产品规划架构图中,我们也规划了一部分企业个性化定制的服务,Knife4j在未来,会寻求与更多企业合作的方式,提供诸如个性化Plugin插件、Ui定制、上层产品应用等方面的合作,如果有企业有这方面的想法,欢迎与我们取得联系!!!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存