Skip to main content

路线规划

  • 2022.5 - 开源

KCLVM 路线规划

KCL 语言目前正处于快速发展的阶段,因此未来一段时间 KCL 将围绕稳定性、易用性和生态扩展的目标继续迭代演进,同时将 KCL 语言用于更多的领域场景不断地进行迭代和发展。

KCLVM 2022 规划

KCLVM 2022 路线规划将围绕文档改进、语言改进、编译器改进、工具改进、生态扩展和目标领域增强等内容展开。

文档改进

KCL 2022 年的部分目标是持续地改进文档(包括所有文档的 KCL 用例和多语言文档构建等),主要内容包含 KCL 规范文档、KCL Tour 文档、KCL 代码实验室、KCL 语言课程、KCL 最佳实践文档和 KCL 编程书籍等。

语言改进

KCL 语言在 2022 年将完成如下工作,使语言特性到达生产可用稳定状态:

  • 语言功能特性简化:根据更多的场景提炼精简语言特性,如删除非必须的语言特性,增强常用的语言特性。
  • 语言稳定性提升:包含编译时和运行时稳定性两部分:编译时稳定性:支持完备的类型系统,支持反向类型推导等核心能力,进一步提升语言类型完备性与编译时稳定性;运行时稳定性:语言内存管理(垃圾回收,运行时内存泄漏检查),语言调试能力支持。
  • 完备的包管理体系:基于 Github 支持 KCL 包 / 模块的上传、下载、安装与链接等。
  • 约束与策略能力支持:约束能力:语言支持编译时约束检查,提升静态校验能力;策略能力:语言实现 KCL 策略规则校验,重点支持语言策略前端,实现语言规则编写语法,规则逻辑方程求解,规则冲突检查等功能。
  • 资源顺序能力支持:通过 KCL 子语言支持资源顺序顺序依赖声明,包括显式依赖和隐式依赖。

编译器改进

除了语言功能特性的简化与迭代,KCL 编译器将会在 2022 年逐步完成如下工作:

  • 使用 Rust 逐步重写 Python 代码(主要是 KCL 语言工具和 IDE 插件类代码)。
  • 编译器并行解析、增量编译等特性支持,进一步提升编译器主体的性能。
  • 编译器前端架构演进,使编译器自身具备更好的扩展性,基于抽象语法树 AST 扩展中间 IR 代码以尽可能地进行代码优化,未来逐步支持除 LLVM 更多的语言编译器后端如 BPF 等。
  • 编译器自身能够编译到 WASM,并提供相应的 Javascript 库,支持 KCL 嵌入到浏览器中编译并执行。
  • 基于 KCL IR 的 JIT 编译执行预研与探索

生态扩展

除了 KCL 语言自身演进,2022 年 KCL 还期望在生态扩展方面得到进一步的增强:

  • KCL 定义 API 规范:作为配置语言,通过 KCL 定义自身的 API/CLI/Plugin 等接口定义,通过半自举的方式加速自身的发展和完善。
  • 多种领域语言的生态扩展:支持更多的领域语言和格式集成,比如 HCL、Jsonnet 和 Protobuf 等语言支持。
  • 完备的多语言 API 构建:支持 KCL 编译,语法检查,自动化查询修改等,序列化 / 反序列化,KCL 代码编写等核心 API 函数,结合社区力量支持 Rust/Python/Java/Go 等多种语言。

目标领域增强

KCL 目前聚焦于云原生配置策略场景,后续会聚焦在在多种运行时(中间件、容器、服务、网络、浏览器、端等)场景和技术形态(Lang、DSL、WASM 等)的深度集成,进一步提升 KCL 的运行时能力。

其他目标

  • 探索通用领域语言编译器研发框架,支持新领域编程语言的快速研发、构建和上线。

里程碑

KCL 2022 路线规划以季度周期建立里程碑:

  • 2022.5
    • KCLVM 开源
    • KCLVM API
      • 基于 C Native API 的多语言和 Restful API
    • KCL 语言工具 Rust 代码重写
      • 增删改查工具
      • 格式化工具
      • 测试工具
      • 校验工具
    • IDE
      • Rust 实现的 IDE 功能:悬停、跳转、补全
      • Go LSP Server 对接 IDE 功能
    • KCL 完成语言特性简化:语言自身无二义性、逻辑自洽
  • 2022.6
    • KCL 完备的包管理体系
    • KCL 完备的类型系统:支持反向类型推导
    • KCL 完备的多语言 API:支持 Python/Rust/Go/Java 四种语言 API
    • KCLVM 支持编译器自身编译到 WASM,可以在浏览器中直接运行 KCL 代码
    • KCLVM 支持增量编译、并发编译
  • 2022.9
    • KCL 约束与策略能力支持:支持语言编译时约束检查,策略编写支持
    • KCL 资源顺序能力支持:支持 KCL 子语言描述资源依赖
    • KCL 多种领域语言的生态扩展:支持 HCL/Jsonnet/Protobuf 生态集成
    • KCL JIT 方式编译执行
  • 2022.12
    • 产出通用领域语言编译器研发框架
    • 多种后端支持:包括多种本地平台支持 (x86, ARM 和 risc5 等),多种 VM 格式支持(WASM 和 BPF 等)

期望社区工作

随着 KCL 的开源,我们期望借助社区的力量推动 KCL 自身更好的发展,更好地完成如下工作:

  • 文档改进:对 KCL 文档进行错误修改、内容提升、组织相应的开源课程或书籍资源等;
  • 语言改进:在社区使用 KEP 机制推动 KCL 语言本身及语言工具的语法、语义等内容改进;
  • 生态扩展:对接更多的多语言 API,如 Java、C++ 等;
  • 目标领域增强:使用 KCL 探索更多的目标领域、集成更多的技术生态;

KCL CLI 路线规划

KCL 语言工具正在快速发展的阶段,未来一段时间将面向功能完备性、易用性和生态扩展的目标继续迭代演进,并围绕 KCL 语言自动化的能力注入更多领域场景。

KCL CLI 2022 规划

KCL CLI 2022 路线规划包括功能完备性及易用性提升、性能提升、生态扩展、文档改进和目标领域增强等内容展开。

完备性及易用性提升

KCL CLI 工具包含 OpenAPI 工具、文档生成、测试、格式化、校验、代码审查、查询修改、源码分析和可视化等,2022 年针对以上功能进一步提升功能完备性,并针对更多领域场景提供自动化工具支持。为此,KCL 语言工具在 2022 年将完成如下工作:

  • 命令行界面易用性提升
    • 更统一和完备的命令行 & API 界面
    • 更友好的报错信息与修正建议
  • OpenAPI 工具:支持云原生 / 非云原生场景下,多语言模型向 KCL 的转换
  • KCL 文档生成工具:完成文档自动生成 & 同步脚本,集成到 Konfig CICD 最佳实践;其他功能提升例如:支持从源代码生成 DocString 脚手架的 DocString 快速编写;生成信息更全面和精确的模型文档;支持对 DocString 内容的检查和自动纠错等
  • KCL 格式化工具:集成到 Konfig CICD 最佳实践;功能提升例如:支持代码块竖向对齐等
  • KCL 代码审查工具:集成到 Konfig CICD,提供代码质量保障;功能提升例如:支持除 import 语句外更多的审查项,并支持自动修复;
  • KCL 测试工具:集成到 Konfig CICD,提供代码质量保障;功能提升例如:支持基于变更行的精准单元测试、集成测试,支持测试覆盖率统计;
  • 源码分析(属性列表分析、依赖分析等)和图形化展示工具

文档改进

KCL CLI 2022 年期望持续地改进文档,包括:

  • KCL 工具相关规范:包括 KCL DocString 规范,KCL Lint 规范,KCL format 规范等
  • KCL 工具用户指南及示例:主要是面向实践的一站式工具使用手册,通过串联组合多个 KCL 语言工具,演示项目迁移、发布运维 CICD 等场景案例

生态扩展:对接社区标准

  • Lint 结果支持输出到 SARIF 规范;
  • 文档生成工具支持输出到 xml,html
  • 测试覆盖率支持输出为 xUnit 及 cobertura 规范

里程碑

KCL CLI 2022 规划里程碑如下:

  • 2022.4
    • KCL CLI 开源
    • 文档生成、代码审查、格式化工具达到稳定可用状态,应用于 Konfig CICD
    • 测试工具达到可精准测试,应用于 Konfig CICD
  • 2022.6
    • 提供稳定完善的自动化迁移工具(云原生 / 非云原生存量模型转换;KCL 项目语言版本升级的自动化迁移),完整串联用户迁移和使用的全流程,并产出典型场景的全流程操作文档。
    • 测试工具支持测试覆盖率统计
    • 提供完备的代码审查工具,产出完善的代码审查规范文档
    • 提供完备的代码分析(属性列表分析、依赖分析等)和图形化展示工具
    • 提供基本可用的代码调试工具
  • 2022.9
    • 完成更多生态标准对接(SARIF,xUnit,cobertura 等)
    • 源码分析工具支持:资源顺序可视化工具

期望社区工作

我们期望借助社区的力量推动 KCL CLI 更好地发展,推进和完成如下工作:

  • 文档改进:对 KCL CLI 文档进行错误修改、内容提升,分享 KCL CLI 使用的实践和案例等
  • 功能提升:对以上所列 KCL CLI 工具功能的提升和补充
  • 迁移工具:x2kcl 转换工具
  • 生态扩展:各项工具输出对接社区标准(SARIF,xUnit,cobertura 等)

Kusion CLI 路线规划

Kusion CLI 即 Kusion 工具链的简称,是基于 KCL 的 DevOps 工具集合,主要包括 kusionctl、kusionup、kube2kcl、crd2kcl 等,工具链清单见 《Overview of Kusion CLI》

Kusion CLI 2022 规划

Kusion CLI 2022 路线规划将围绕核心能力建设、用户使用体验优化、代码质量、文档改进等目标展开:

  • 核心能力建设:提供更丰富的工具集,增强工具链内核,比如提供 Builtin K8s Provider、Custom Hook 等核心能力,增强围绕 IaC & GitOps 的 CLI 端的能力边界
  • 用户使用体验优化:丰富工具链的 Console UI,提升用户使用体验,提升工具链 Console 界面在各个平台的兼容性,推动界面统一
  • 代码质量:从代码质量、仓库治理、建设质量体系等角度全面提升工具链本身的质量,覆盖率达到 80%+
  • 文档改进:丰富使用文档内容,改进文档生成工具,添加贡献文档等

核心能力增强

Kusion CLI 在 2022 年将完成以下工作,使工具链从能力边界上满足用户需求:

  • 丰富工具集:提供更丰富的工具集合,从用户接入、安装使用、包管理等角度满足各个场景对工具的需求,具体规划有:
    • kusionctl:基于 KCL 的 DevOps 主工具,实现 KCL 配置生命周期的管理
    • kusionup:kusionup 是一个优雅的 kusion 多版本管理工具
    • kube2kcl:从 yaml/kustomize 转换成 KCL 配置的工具
    • crd2kcl:从 crd yaml 转换为 KCL 模型定义的工具
    • tf2kcl:从 tf 转换为 KCL 模型定义的工具
    • openapi2kcl:从 openapi yaml 转换为 KCL 模型定义的工具
    • imageupdater:自动化更新大库指定应用镜像的工具
  • 功能增强
    • 脚手架能力升级,支持从远端仓库拉取脚手架模板
    • 强化云原生场景能力,支持 Watch、Custom Hook、自定义发布顺序等功能
    • Project & Stack 管理
    • KCL 配置包管理,包括打包、分发、部署等功能
    • 提供易于扩展的插件机制
  • 第三方系统集成
    • ArgoCD
    • Github Action
    • KubeVela

代码质量

Kusion CLI 需要可靠的稳定性和被集成能力,这对 Kusion CLI 的代码质量提出较高的要求,2022 年将从以下几个角度提升 Kusion CLI 整体的代码质量:

  • 代码覆盖率:补充单元测试,提升工具链仓库的代码覆盖率,稳定在 80%+
  • 集成测试:建设 Kusion 工具链的集成测试体系,添加集成测试样例,保证工具链功能的稳定性
  • 仓库治理:丰富 Kusion 工具链代码仓库的持续集成流水线,通过自动化手段保证工具链的质量
  • 代码复用性:优化代码架构,抽象接口,提升复用性和被集成能力

用户使用体验优化

Kusion CLI 作为用户操作 KCL 配置的 Client 端之一,是用户使用 Kusion 技术栈的入口,且会被其它第三方系统集成,这就需要易于理解和美观的 Console UI 以及足够丰富的指引文档,2022 年将从以下角度提升 Kusion CLI 的用户使用体验:

  • Console UI:优化 Console UI 美观度和接受度,在体现足够信息的同时保证美观,同时提示 Console UI 在各个平台显示的兼容性,以便被第三方系统集成

文档改进

除了 Kusion CLI 能力和体验的增强,配套的文档和工具也会在 2022 年逐步丰富起来:

  • 用户使用文档:提供工具链中各个工具的使用文档,便于用户查阅
  • 快速开始文档:提供用户友好的快速开始文档
  • 研发文档:提供研发视角的文档指引,主要面向工具链被集成的场景
  • 贡献文档:提供贡献指引文档,说明社区用户如何参与工具链的贡献
  • 文档生成工具:开发文档生成工具,保证大部分使用文档能够自动生成

里程碑

Kusion CLI 2022 路线规划以季度周期建立里程碑:

打开路线规划图 (SVG)

打开路线规划图 (SVG)

期望社区工作

随着 Kusion CLI 的开源,我们期望借助社区的力量推动 Kusion 更好的发展,更好地完成如下工作:

  • 文档改进:对 Kusion CLI 文档进行错误修改、内容提升、组织相应的开源课程或书籍资源等;
  • 能力增强:在社区使用 KEP 机制推动 Kusion CLI 工具链能力的增强;
  • 生态扩展:对接更多的第三方平台,比如 ArgoCD、KubeVela 等;
  • 代码质量:帮助提升工具链的稳定性和复用性;

Kusion IDE 规划

Kusion IDE 工具包含 KCL 语言编写辅助、Kusion 一站式运维、静态代码提示三个主要模块,未来将围绕这些模块进一步完善功能及易用性,并持续建设在领域场景下的产品能力。

Kusion IDE 2022 规划

KCL 语言编写辅助

KCL 语言编写辅助模块关注开发者在编写、编译、测试 KCL 代码过程中的体验问题。2022 年重点建设 LSP (Language Server Protocol) 核心能力,提升功能易用性、准确率及性能,并借助生态力量扩展到更多 IDE 平台。

  • LSP 核心能力建设
    • 重点提升错误提示、智能补全、代码重构等功能的易用性,结合 KCL Cli 能力提供源码分析及可视化展示功能,其余能力包括:编译及测试、格式化、代码审查、文档生成等。
    • 性能提升::优化 LSP 响应耗时:核心功能 3s 内成功率 95%+
    • 脱离容器运行环境:基于 KCLVM WASM,提供可脱离容器运行的在线 IDE 支持
    • 量化工具:建设 LSP 功能的量化统计工具,重点指标包括用户数、用量、各操作成功率和耗时等。
  • IDE 平台支持:围绕 LSP 能力将 KCL IDE 支持扩展到覆盖 Jetbrains 各类产品、VS Code、github.dev 在线 IDE、Vim、Sublime 等主流平台

Kusion 一站式运维 IDE

Kusion 一站式运维 IDE 模块关注开发者使用 Kusion 技术栈进行应用配置管理的全生命周期,帮助用户在 Kusion IDE 中一站式完成应用的配置修改、测试、部署、监控的全生命周期的管理。

  • 项目初始化脚手架:帮助开发者快速创建 Kusion project
  • 本地研发支持:支持资源在 minikube、kind 等本地 Kubernetes 集群预览、计费估算、下发、观测
  • 对接多云厂商:支持开发者通过在本地登录生产环境,实现配置的预览、编排、下发、观测一站式运维体验
  • 项目视图、编排预览等:基于项目目录和代码分析,支持项目列表和详情视图,生成编排拓扑图预览等
  • 资源状态监控:支持对下发配置及其相关资源的状态跟踪和显示

静态代码提示

KCL 静态代码提示关注在 Web 浏览器中针对 KCL 代码的阅读、编写提供辅助。2022 年将借助社区力量,扩大对在线代码编辑产品的支持。

  • Github 产品支持:支持在 Github 网页的代码高亮、跳转、搜索
  • 生态对接:支持流行的高亮库和 Web 编辑器产品,例如 highlight.js, tree-sitter, stack-graphs

里程碑

Kusion IDE 2022 规划里程碑如下:

  • 2022.4
    • Kusion IDE 开源,开放 IntelliJ IDEA 及 VS Code 平台的 KCL IDE 插件下载
    • 错误提示、格式化功能达到稳定可用状态,应用于 IntelliJ IDEA、VS Code
    • 初步完成量化工具建设,支持 LSP 核心功能成功率和耗时统计
  • 2022.6
    • 支持主流 IDE(IntelliJ IDEA,VS Code,Vim)中的代码编译和测试入口,实现编写
    • 支持 LSP 脱离容器运行环境,应用于 github.dev 等在线 IDE 产品
    • 基于 LSP 支持 KCL 在 Vim 中的编写辅助,Jetbrains 系列产品支持:Goland、PyCharm
  • 2022.9
    • 建设 Kusion IDE 一站式运维工具,支持项目初始化脚手架等基础功能,实现本地研发支持的预览和下发
    • 扩展静态代码提示工具生态,覆盖 highlight.js, Monaco, code Mirror, tree-sitter, stack-graphs

期望社区工作

我们期望借助社区的力量推动 Kusion IDE 更好地发展,推进和完成如下工作:

  • 文档改进:对 Kusion IDE 文档进行错误修改、内容提升
  • 需求和错误上报:通过上报需求和错误,帮助提升 Kusion IDE 功能的易用性和准确度。我们也欢迎针对领域场景的自定义 IDE 需求。
  • 功能提升:对以上所列 Kusion IDE 工具功能的提升和补充
  • 生态扩展:
    • 将 KCL LSP 扩展到更多 IDE 平台,包括且不限于不同 IDE 下的安装及配置指南文档、完善 LSP 在各 IDE 平台的客户端功能、在各 IDE 平台的 icon style 插件中支持 KCL icon 等。
    • 将 KCL 静态代码提示扩展到更多产品(例如 highlight.js, Monaco, code Mirror, tree-sitter, stack-graphs, difftastic ...)
    • Kusion IDE 多云厂商的对接

Kusion Model 路线规划

Kusion Model 即 Kusion 模型库的简称,是基于 KCL 的模型库集合,主要包括底层模型库、核心模型库,模型库的基本概念可见 《Overview of Kusion Model》

Kusion Model 2022 规划

Kusion Model 2022 路线规划将围绕核心模型建设、用户使用体验优化、模型质量、文档改进等目标展开:

  • 核心模型建设:提供更丰富的核心模型,适配应用运维、监控、基础资源等场景
  • 用户使用体验优化:提升模型的易用性,以更简洁的配置清单描述更多场景
  • 模型质量:从模型注释、单元测试、集成测试等角度保证模型质量
  • 文档改进:丰富模型使用文档和 Use Case 文档,改进文档生成工具,添加贡献文档等

核心能力增强

Kusion Model 在 2022 年将完成以下工作,使模型库从能力边界上满足用户需求:

  • 核心模型建设:提供更丰富的核心模型,适配应用运维、监控、基础资源等场景,具体规划有:
    • Server:云原生应用运维模型,围绕着应用运维定义的配置模型
    • Job:一次性任务模型
    • RBAC:围绕着应用权限描述的模型

代码质量

Kusion Model 是用户界面之一,需要从以下几个方面保证它们的质量:

  • 单元测试:编写 Kusion Model 单元测试,保证渲染结果符合预期
  • 模型注释:编写 Kusion Model 注释,包括简介、属性描述、样例,方便用户使用和工具自动生成文档
  • 集成测试:搭建 Kusion Model 的集成测试框架,端到端的保证模型质量

文档改进

除了 Kusion Model 核心模型建设和代码质量,配套的文档和工具也会在 2022 年逐步丰富起来:

  • 模型说明文档:提供大而全的模型说明文档
  • 快速开始文档:提供用户友好的快速开始文档
  • 研发文档:提供研发视角的文档指引,主要介绍如何开始开发 Kusion Model
  • 贡献文档:提供贡献指引文档,说明社区用户如何参与 Kusion Model 的贡献
  • 文档生成工具:开发文档生成工具,保证大部分模型说明文档能够自动生成

里程碑

Kusion Model 2022 路线规划以季度周期建立里程碑:

  • 2022.5
    • Kusion Model 开源
    • Server 模型支持
    • 提供模型文档生成工具
    • 添加贡献文档
  • 2022.6
    • Job 模型支持
    • RBAC 模型支持
    • 补充模型说明文档
    • 补充模型快速开始文档
    • 补充模型注释
  • 2022.9
    • 补充 Kusion Model 单元测试,保证稳定性
    • 搭建模型集成测试框架
  • 2022.12
    • 产出 Kusion Model 模型开发最佳实践

期望社区工作

随着 Kusion Model 的开源,我们期望借助社区的力量推动 Kusion 更好的发展,更好地完成如下工作:

  • 模型丰富:建设核心模型,对接更多场景
  • 文档改进:对 Kusion Model 文档进行错误修改、内容提升、组织相应的开源课程或书籍资源等;
  • 代码质量:帮助提升模型的易用性和稳定性;

Kusion Engine 路线规划

Kusion Engine 负责对 KCL 编译结果的解析和资源下发,主要包含三个部分:资源依赖解析与执行,资源 State 管理,异构 Runtime 管理

Kusion Engine 2022 规划

Kusion Engine 2022 将围绕核心能力建设、用户使用体验优化和配套文档这几个方面展开

核心能力增强

  • 持续建设 Kubernetes 资源运维能力,从 apply、patch、event 等多个方面构建云原生时代的 IaC 引擎,打造更加 Kubernetes Native 的运维体验
  • 构建统一的 State 并发控制能力,任何对接过的存储介质都可以具备并发访问控制的能力
  • 精细化 Resource Lifecycle 管理,可以通过 Hook 机制在 Resource 生命周期里自定义外部扩展
  • 兼容 Terraform 的 provider 生态,可以纳管 Terraform 的 provider 资源

用户使用体验优化

  • 错误信息展示优化,让用户更容易定位到错误原因
  • LiveDiff 展示结果优化,敏感信息特殊处理

配套文档

  • 持续补充完善用户手册,尽量做到新手可以半小时跑完 demo
  • 补充 Kusion Engine 系统架构
  • 补充 Kusion Engine Workflow

里程碑

  • 2022.5

    • Apply 支持三路 merge
    • LiveDiff 支持三路 merge
  • 2022.7

    • 兼容 Terraform Provider
    • 支持 K8s CRD
  • 2022.9

    • 支持 Watch 能力
    • 精细化 Resource Lifecycle 管理
  • 2022.12

    • 支持执行过程中暂停、继续能力
    • 全类型资源 Watch 能力
  • 2023.2

    • LiveDiff 敏感信息隐藏
    • 支持资源配置漂移检查

期望社区工作

核心能力还在持续构建阶段,欢迎大家提供新的想法,把 Kusion 打造成云原生时代的 IaC 引擎。2022 年希望社区参与的工作如下:

  • 编写引擎相关文档,方便用户理解和快速上手
  • Terraform Provider 生态对接,如 Provider 接口适配、生命周期管理等
  • 精细化 Resource Lifecycle 管理