diff --git a/blog/2023-09-19-kcl-joining-cncf-sandbox/index.md b/blog/2023-09-19-kcl-joining-cncf-sandbox/index.md new file mode 100644 index 00000000..dffcea8a --- /dev/null +++ b/blog/2023-09-19-kcl-joining-cncf-sandbox/index.md @@ -0,0 +1,140 @@ +--- +slug: 2023-09-19-kcl-joining-cncf-sandbox +title: KCL Joining CNCF as a Sandbox Project! 🎉 +authors: + name: KCL Team + title: KCL Team +tags: [KCL, Biweekly-Newsletter] +--- + +![kcl-joining-cncf-sandbox](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox-en.png) + +**On September 20, 2023, the KCL project was approved by the TOC of the Cloud Native Computing Foundation (CNCF) and officially became a CNCF Sandbox project**. + +This means that KCL has gained recognition from the cloud native open source community, ensuring the neutrality of the project and facilitating the participation of developers and partners in project construction. It is a significant step towards dynamic configuration management and automation capabilities for cloud native application delivery. + + + +* *Project Link: https://github.com/kcl-lang/kcl* +* *Project Website: https://kcl-lang.io* + +By joining CNCF as a sandbox project, the KCL community aims to attract more developers and users to contribute and further promote the mature application of the project in cloud native scenarios. In addition, joining CNCF provides KCL with an enhanced platform for collaboration and innovation. It offers an opportunity to engage with a diverse community of developers, organizations, and industry experts at the forefront of cloud native technology. We look forward to collaborating with other CNCF projects, contributing our technical expertise, and exploring the possibilities of integrating with more CNCF projects. + +## What is CNCF? + +CNCF, short for Cloud Native Computing Foundation, is a sub-foundation under the Linux Foundation. CNCF is dedicated to building a sustainable ecosystem for cloud native software, covering areas such as storage, computing, orchestration, scheduling, CI/CD, DevOps, service governance, and service gateways. + +*Kubernetes is one of the most representative projects of CNCF*. + +## What is CNCF Sandbox Project? + +![cncf-sandbox-logo](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/cncf-sandbox-logo.png) + +The CNCF community classifies projects into Sandbox, Incubating, and Graduated. Well-known graduated projects include Kubernetes, Prometheus, Istio, ETCD, Containerd, ArgoCD, and Helm. For a complete list of graduated and incubating projects, you can visit [https://www.cncf.io/projects/](https://www.cncf.io/projects/). + +[https://www.cncf.io/projects/](https://www.cncf.io/projects/) + +Sandbox is a category created by CNCF to provide a beneficial and neutral home for open source projects to promote collaboration and development. Projects selected for the Sandbox are recognized by the CNCF Technical Oversight Committee (TOC) and have the potential for experimentation and development. You can find the list of Sandbox projects at https://www.cncf.io/sandbox-projects/. To enter the Sandbox, at least 66% of the TOC members (all 11 people listed at https://github.com/cncf/toc#members) need to vote in favor, which means at least 8 people. + +## What is KCL? + +KCL is an open-source, constraint-based record and function language. It aims to improve the writing of complex configurations, such as cloud-native Kubernetes configurations, using mature programming language techniques and practices. KCL focuses on modularity, extensibility, and stability around configuration, aiming to create a simpler logic writing experience and build a simpler path for automation and ecosystem integration. + +Key milestones of the project include: + ++ May 2022: KCL was initiated and officially open-sourced by Ant Group. ++ June 2023: KCL became an official CNCF Landscape project. ++ September 2023: KCL was reviewed by the CNCF Application Delivery TAG and approved through TOC voting, officially becoming a CNCF Sandbox project (https://github.com/cncf/sandbox/issues/48). + +## Why do we need KCL? + +Just like recording music with a staff and storing time series data in a sequential database, we use specialized configuration and policy languages to write and manage large-scale complex configurations and policies within specific problem domains of cloud native configuration and automation. Unlike high-level general-purpose languages with hybrid writing paradigms and hybrid engineering capabilities, the core logic of specialized languages is to solve domain problems with almost infinite changes and complexity through a converged finite set of syntax and semantics, and to deposit complex configuration and strategy writing ideas and methods into language characteristics. + +In addition, KCL hopes to fill the gap in configuration languages and tools in the field of lightweight client cloud native dynamic configuration through more modern declarative configuration languages and tools, and address the following issues: + ++ **Configuration Bloat**: Most static configurations such as Kubernetes YAML in the cloud native domain need to be configured separately for each environment; In the worst-case scenario, it may introduce difficult to debug errors involving environmental cross linking, with poor stability and scalability. ++ **Configuration Drift**: There is often no standard way to manage the static configuration of applications and infrastructure in different environments. Using non-standard methods such as combining scripts and glue code can lead to exponential complexity growth and configuration drift. ++ **Cognitive loading**: Kubernetes and others, as platform technology tools for building platforms, excel in the details of the underlying unified infrastructure, but lack higher-level abstraction for application software delivery, which has a high cognitive loading on ordinary developers and affects the software delivery experience of higher-level application developers. + +In response to the above issues, KCL expects to provide the following capabilities: + ++ Shielding the details and complexity of infrastructure and platforms through methods such as code **abstraction**, reducing the cognitive loading on developers. ++ **Mutate** and **Validate** existing inventory configurations or templates to directly solve cloud generated small configuration scenarios such as Helm Chart configuration hard coding issues, but it goes far beyond that. ++ Improve team collaboration efficiency by **managing large-scale configuration** data across teams without side effects through language configuration. + +Specifically, KCL can + ++ Improve the ability of **configuration semantic verification** at the code level, such as schema definition, field optional/mandatory, type, range, and other configuration check and verification capabilities. ++ Provide the ability to write, combine, and abstract **configuration blocks, such as structural definition, structural inheritance, constraint definition, and configuration policy merging. ++ Improve configuration flexibility through **modern programming languages** and **writing code**, such as conditional statements, loops, functions, package management, and other features to enhance configuration reuse capabilities. ++ Provide **comprehensive tool chain support**, rich IDE plugins, languages, and ecological tool chain support to reduce the threshold of getting started and improve the user experience. ++ By using **package management tools** and **OCI registry**, configurations can be shared, propagated, and delivered in a simpler way among different teams/roles. ++ Provide **high-performance** compilers to meet the requirements of large-scale configuration scenarios, such as meeting the rendering performance requirements of generating configurations of different environments and topologies based on deployment context from a baseline configuration, as well as the performance requirements of automatic configuration modification. ++ By enhancing its automation and integration capabilities through means such as **multilingual SDK and KCL language plugin**, it can significantly reduce the learning cost of KCL while leveraging the value of configuration and policy writing. + +![](/img/docs/user_docs/intro/kcl-overview.png) + +In addition to the language itself, KCL also provides many additional tools such as formatting, testing, documentation, etc. to help you use, understand, and check the written configuration or strategy; Reduce the cost of configuration writing and sharing through IDE plugins such as VS Code, package management tools, and Playground; Automatically manage and execute configurations through Rust, Go, and Python multilingual SDKs. + +## What can KCL do? + +### Dynamic Configuration Management + +![standalone-kcl-form](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/standalone-kcl-form.png) + +As a configuration language, the most important feature that KCL provides to application and platform developers/SREs is dynamic configuration management. Through code abstraction, we can build an application-centric model that shields complex infrastructure and platform concepts, providing developers with a centralized and easy-to-understand interface. Additionally, KCL allows platform personnel to quickly extend and define their own models, which can be shared and reused through the OCI registry. + +![krm-kcl-form](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/krm-kcl-form.png) + +Furthermore, KCL also supports direct integration with the Kubernetes Resource Model (KRM) specification. KRM KCL is a generic configuration model specification used to describe and manage various cloud native resources, such as container, pod, and service configurations and abstractions. The KRM KCL specification provides a unified way to define and manage these resources, enabling them to be portable and reusable across different environments. It operates in a fully open Kubernetes world, with minimal binding to any orchestration/engine tools or Kubernetes controllers. It allows platform personnel to extend their abstractions, configuration editing and validation logic, while providing a developer-friendly configuration management interface based on the separation of concerns. + +### GitOps + +![gitops](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/gitops.png) + +Whether using standalone KCL or KRM KCL configuration forms, we support integration between KCL and various CI/CD and GitOps tools. KCL allows developers to define the resources required by applications in a declarative manner. By combining KCL with GitOps tools, we can better achieve Infrastructure as Code (IaC), improve deployment efficiency, and simplify application configuration management. + +With GitOps, developers and operations teams can manage application deployments by separately modifying application and configuration code. The GitOps toolchain can automatically make changes to the configuration based on the automation capabilities of KCL, enabling continuous deployment and ensuring consistency. If any issues arise, the GitOps toolchain can quickly roll back the changes. + +## Integrations + +![integration](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/integration.png) + +In addition to integrating with GitOps automation tools like ArgoCD, as a CNCF project, KCL has also integrated with many other CNCF ecosystem projects. For example, it provides KCL plugins for existing CNCF ecosystem configuration management tools such as Helm, Kustomize, and kpt. It also provides a KCL Kubernetes Operator at runtime to meet different configuration management needs. Furthermore, we offer the following integration support: + ++ **Multi-language support**: We provide multi-language SDKs to help users operate KCL in different languages and integrate it into their own applications. ++ **Package management support**: We provide the KPM package management tool to distribute and reuse KCL configurations through Docker Hub, GitHub container registry, etc. ++ **Schema migration support**: We support one-click migration of schemas from other ecosystems to KCL schemas, such as Go/Rust struct definitions, JsonSchema, Protobuf, OpenAPI, Terraform Provider Schema, etc. + +## Practices + +![practice-krm-kcl](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-krm-kcl.png) + +Firstly, as a small language in the cloud-native field, KCL can be directly used to solve simple problems in scenarios. For example, using the KCL model to directly inject environment variables for Kubernetes resources, and using the KCL model and Helm KCL plugins to non-invasively handle the hard-coded configuration of Helm Charts instead of directly modifying the Helm Chart by forking it. + +![practice-konfig-gitops](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-konfig-gitops.png) + +Secondly, KCL can also be used in conjunction with various CI/CD and application configuration delivery engines such as [KusionStack](https://kusionstack.io) within enterprises to achieve separation of concerns, application-centric programmable model interfaces, and GitOps processes. This simplifies the deployment and operation of scaled applications in today's hybrid multi-cloud environments, improving release and operation efficiency and developer experience. + +Of course, KCL can solve more problems and scenarios than mentioned above. We will continue to share best practices from adopters in the community, and we welcome everyone to join our community for further discussions and exchanges ❤️. https://github.com/kcl-lang/community + +## Community + +![community](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/community.png) + +In just one year of KCL being open source, we have released many versions and built the KCL community in collaboration with contributors and maintainers from all over the world. We have also gained recognition from some adopters, such as Youzan and Huawei. By joining CNCF, our goal is to increase project visibility and drive community adoption and participation, as strong and well-known foundation organizations are crucial for advancing the development of language ecosystems. + +Additionally, we have received recognition from companions in the open-source community from all over the world, including China, North America, Europe, and Australia. We thank all the users and community developers who have accompanied KCL on this journey, and we welcome more companions to join our community and build together ❤️. + +## Conclusion + +For KCL, joining CNCF does not mean the end, but a new beginning. We will work together with our community companions to build a better KCL language, toolchain, and IDE experience! Lastly, we welcome everyone to join our community for discussions and contributions 👏👏👏 + +## Resources + ++ KCL Website: https://kcl-lang.io/ ++ KusionStack Website: https://kusionstack.io/ ++ KCL Community: https://github.com/kcl-lang/community ++ KCL 2023 Roadmap: https://kcl-lang.io/docs/community/release-policy/roadmap ++ KCL GitHub Issues: https://github.com/kcl-lang/kcl/issues ++ KCL GitHub Discussion: https://github.com/orgs/kcl-lang/discussions diff --git a/i18n/zh-CN/docusaurus-plugin-content-blog/2023-09-19-kcl-joining-cncf-sandbox/index.md b/i18n/zh-CN/docusaurus-plugin-content-blog/2023-09-19-kcl-joining-cncf-sandbox/index.md new file mode 100644 index 00000000..3e13f6b1 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-blog/2023-09-19-kcl-joining-cncf-sandbox/index.md @@ -0,0 +1,143 @@ +--- +slug: 2023-09-19-kcl-joining-cncf-sandbox +title: 喜报!KCL 正式成为 CNCF 沙盒项目 🎉 +authors: + name: KCL Team + title: KCL Team +tags: [KCL, Biweekly-Newsletter] +--- + +![kcl-joining-cncf-sandbox](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox.png) + +**2023 年 9 月 20 日,KCL 项目通过了全球顶级开源基金会云原生计算基金会(CNCF)技术监督委员会评定,正式成为 CNCF 沙箱项目。** + +这意味着 KCL 得到了云原生开源社区的认可,保障了项目的中立性,有利于开发者、合作伙伴等共同参与项目建设,协作共赢,并为云原生应用交付带来动态配置管理和自动化能力迈出了重要一步! + + + ++ *项目地址:https://github.com/kcl-lang/kcl* ++ *项目官网:https://kcl-lang.io* + +通过进入 CNCF 沙箱,KCL 社区将更多吸引更多开发者和用户参与共建,进一步推动项目在云原生业务场景的成熟应用,此外加入 CNCF 将为 KCL 提供一个增强的协作和创新平台。它提供了与处于云原生技术前沿的多元化开发者、组织和行业专家社区进行交流的机会。我们期待与其他 CNCF 项目进行更多合作,贡献我们的技术专业知识,并探索更多 CNCF 项目集成的可能性。 + +## 什么是 CNCF? + +CNCF,全称 Cloud Native Computing Foundation(云原生计算基金会),是 Linux 基金会旗下的子基金会。CNCF 致力于为云原生软件构建可持续生态系统,涉及领域包括存储、计算、编排、调度、CI/CD、DevOps、服务治理、服务网关等。 + +*Kubernetes 便是 CNCF 最具代表性的项目之一*。 + +## 什么是 CNCF Sandbox 沙盒项目? + +![cncf-sandbox-logo](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/cncf-sandbox-logo.png) + +CNCF 社区将项目分为沙箱项目(Sandbox)、孵化项目(Incubating)、毕业项目(Graduated)。著名的毕业项目有:Kubernetes、Prometheus、Istio、ETCD、Containerd、ArgoCD 和 Helm 等。完整的毕业和孵化项目列表查看地址: + +[https://www.cncf.io/projects/](https://www.cncf.io/projects/) + +Sandbox 是 CNCF 创建的,旨在为开源项目提供一个有益的、中立的家园,以促进开源项目的合作与开发。入选沙箱的项目,是被 CNCF TOC 认可的,并值得进行实验和开发的潜力项目。 + +Sandbox 对应的是 CNCF 社区早期项目,列表为:[https://www.cncf.io/sandbox-projects/](https://www.cncf.io/sandbox-projects/)。进入 Sandbox 需要 66% 以上的 TOC(技术委员会)成员赞成,即全部 11 人 [https://github.com/cncf/toc#members](https://github.com/cncf/toc#members) 中的 8 人投赞成票。 + +## 什么是 KCL + +KCL 是一个开源的基于约束的记录及函数语言,期望通过成熟的编程语言技术和实践来改进对大量繁杂配置比如云原生 Kubernetes 配置场景的编写,致力于围绕配置的模块化、扩展性和稳定性,打造更简单的逻辑编写体验,构建更简单的自动化和生态集成路径。 + +项目主要里程碑如下: + ++ 2022 年 5 月,KCL 由蚂蚁集团发起,正式开源 ++ 2023 年 6 月,KCL 正式成为 CNCF Landscape 项目 ++ 2023 年 9 月,KCL 由 CNCF 应用交付 TAG 进行审核并通过 TOC 投票,顺利成为 CNCF Sandbox 项目 - [https://github.com/cncf/sandbox/issues/48](https://github.com/cncf/sandbox/issues/48) + +## 为什么需要 KCL + +正如记录音乐有五线谱,存储时间序列数据有时序数据库一样,在云原生配置和自动化的特定问题域内,我们使用专用配置和策略语言用于编写和管理规模化复杂配置及策略。不同于混合编写范式、混合工程能力的高级通用语言,专用语言的核心逻辑是以收敛的有限的语法、语义集合解决领域问题近乎无限的变化和复杂性,将复杂配置和策略编写思路和方式沉淀到语言特性中。 + +此外,KCL 期望通过更现代化的声明式配置语言和工具,在轻量级客户端云原生动态配置领域填补配置语言及工具的空白并解决如下问题: + ++ **维度爆炸**: 大多数静态配置如云原生领域的 Kubernetes YAML 配置需要为每个环境单独进行配置;在最糟糕的情况下,它可能引入涉及环境交叉链接的难以调试的错误,稳定性和扩展性都较差。 ++ **配置漂移**: 对于不同环境的静态管理应用程序和基础设施配置的方式,往往没有标准的方式去管理这些动态的不同环境的配置,采用非标准化的方法比如脚本和胶水代码的拼盘,会导致复杂度呈指数增长,并导致配置漂移。 ++ **认知负担**: Kubernetes 等作为构建平台的平台技术手段在底层统一基础架构细节方面出色,但是缺乏更上层的应用软件交付抽象,对于普通开发者认知负担较高,影响了更上层应用开发者的软件交付体验。 + +针对如上问题,KCL 期望提供如下能力: + ++ 通过**代码抽象**等手段屏蔽基础设施和平台的细节和复杂性,降低研发者**认知负担** ++ **编辑**和**校验**已有的存量配置或模版,直接解决云原生小配置场景问题如 Helm Chart 配置硬编码问题,但远不止如此 ++ 通过配置语言无副作用地**管理跨团队的大规模配置数据**,提升团队协作效率 + +具体来说,KCL 可以 + ++ 在代码层面提升**配置语义验证**的能力,比如 Schema 定义、字段可选/必选、类型、范围等配置检查校验能力 ++ 提供**配置分块编写、组合和抽象**的能力,比如结构定义、结构继承、约束定义和配置策略合并等能力 ++ 用**现代编程语言**的方式以**编写代码**的方式提升配置的灵活度,比如条件语句、循环、函数、包管理等特性提升配置重用的能力 ++ 提供**完备的工具链支持**,丰富的 IDE 插件、语言和生态工具链支持用以降低上手门槛,提升使用体验 ++ 通过**包管理工具** 和 **OCI 注册表**使得配置以更简单的方式在不同团队/角色之间分享,传播和交付 ++ 提供**高性能**的编译器满足规模化配置场景诉求,比如满足由一份基线配置根据部署上下文生成不同环境不同拓扑的配置的渲染性能以及配置自动化修改性能诉求 ++ 通过**多语言 SDK,KCL 语言插件**等手段提升其自动化集成能力,在发挥配置及策略编写价值的同时显著降低 KCL 的学习成本 + +![](/img/docs/user_docs/intro/kcl-overview.png) + +除了语言自身,KCL 还提供了许多额外的工具如格式化,测试、文档等工具帮助您使用、理解和检查编写的配置或策略;通过 VS Code 等 IDE 插件,包管理工具和 Playground 降低配置编写和分享的成本;通过 Rust, Go, 和 Python 多语言 SDK 自动化地管理和执行配置。 + +## KCL 能做什么 + +### 动态配置管理 + +![standalone-kcl-form](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/standalone-kcl-form.png) + +作为一种配置语言,KCL 为应用程序和平台开发人员/SRE 提供的最重要的功能是动态配置管理。通过代码抽象,我们可以构建以应用为中心的模型屏蔽复杂的基础设施和平台概念,为开发人员提供一个以应用程序为中心且易于理解的界面。此外,KCL 还允许平台人员快速扩展和定义自己的模型,并且这些模型可以通过 OCI 注册表进行分享和复用。 + +![krm-kcl-form](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/krm-kcl-form.png) + +此外,KCL 还支持与 Kubernetes Resource Model (KRM) 规范直接集成,KRM KCL 是一个通用的配置模型规范,用于描述和管理各种云原生资源,如容器、Pod、服务的配置操作和抽象等。KRM KCL 规范提供了一种统一的方式来定义和管理这些资源,使得它们可以在不同的环境中进行移植和复用。它建立在一个完全开放的 Kubernetes 世界当中,几乎不与任何编排/引擎工具或者 Kubernetes 控制器绑定,它在关注点分离的基础上允许平台人员扩展自己的抽象,配置编辑和验证逻辑,并提供一个开发者友好的配置管理界面。 + +### GitOps 集成 + +![gitops](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/gitops.png) + +无论是使用独立的 KCL 还是 KRM KCL 配置形式,我们都支持 KCL 与各种以及 CI/CD 和 GitOps 工具的集成,KCL 允许开发人员以声明式的方式定义应用程序所需的资源,通过将 KCL 和 GitOps 工具相结合可以帮助我们更好地实现基础设施即代码(IaC),提高部署效率,简化应用程序的配置管理。 + +使用 GitOps,开发人员和运维团队可以通过分别修改应用和配置代码来管理应用程序的部署,GitOps 工具链可以基于 KCL 的自动化能力实现对配置的自动更改,从而实现持续部署并确保一致性。如果出现问题,可以使用 GitOps 工具链快速回滚。 + +## 生态集成 + +![integration](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/integration.png) + +除了与 ArgoCD 等 GitOps 自动化工具进行集成,作为 CNCF 的项目,KCL 还与 CNCF 其他众多生态项目进行了集成,比如为现有的 CNCF 生态配置管理工具项目如 Helm、Kustomize、kpt 等提供 KCL 插件,在运行时提供 KCL Kubernetes Operator,以满足不同场景的配置管理需求等。此外我们还提供如下集成支持: + ++ **多语言支持**:我们提供了多语言 SDK,帮助用户以不同的语言操作 KCL,并将其集成到自己的应用程序中。 ++ **包管理支持**:我们提供了 KPM 包管理工具可以将 KCL 配置通过 docker hub, GitHub 容器注册表进行分发和复用。 ++ **Schema 迁移支持**:我们支持其他生态系统的 Schema 一键迁移到 KCL Schema,如 Go/Rust 结构定义、JsonSchema、Protobuf、OpenAPI、Terraform Provider Schema 等。 + +## 落地实践 + +![practice-krm-kcl](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-krm-kcl.png) + +首先,KCL 作为云原生领域内的一个小语言,它可以直接被用于解决场景中简单的小问题,如通过 KCL 模型直接为 Kubernetes 资源注入环境变量等配置而不是编写脚本,通过 KCL 模型和 Helm KCL 插件无侵入处理 Helm Chart 的硬编码配置而不是 Fork Helm Chart 直接修改等。 + +![practice-konfig-gitops](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-konfig-gitops.png) + +其次,KCL 也可以被用于企业内部与各种 CI/CD 和应用配置交付引擎比如 [KusionStack](https://kusionstack.io) 等相配合,实现关注点分离、以应用为中心的可编程模型界面和 GitOps 流程,以简化当今混合多云环境中规模化应用的部署和运维操作,提升发布运维效率和开发者体验。 + +当然,KCL 能够解决的问题和实践的场景远不止如此,我们会陆续分享社区中采用者的最佳实践,也欢迎大家加入我们的社区进行进一步交流和讨论 ❤️。[https://github.com/kcl-lang/community](https://github.com/kcl-lang/community) + +## 社区动态 + +![community](/img/blog/2023-09-19-kcl-joining-cncf-sandbox/community.png) + +在 KCL 开源短短的这一年里,我们发布了许多版本,并与全世界许多贡献者和维护者合作构建了 KCL 社区,并得到了一些采用者比如有赞和华为等公司的认可,通过加入 CNCF,我们的目标是提高项目的知名度并促进社区采用和参与,因为强大且知名的基金会组织对于推动语言生态系统的发展至关重要。 + +此外,我们在开源社区收获了来自全世界包括中国、北美、欧洲和澳大利亚各地小伙伴的认可,感谢一路陪伴 KCL 走来的各位用户和社区研发者,同时也欢迎更多的小伙伴加入到我们的社区一起共建 ❤️ + +## 结语 + +对 KCL 来说,加入 CNCF 并不代表成功,它意味着一个新的开始,我们将和社区的小伙伴们一起努力打造更好的 KCL 语言、工具链和 IDE 体验!最后,也欢迎大家加入我们的社区进行交流和贡献 👏👏👏 + +## 其他资源 + ++ KCL 网站: https://kcl-lang.io/ ++ KusionStack 网站: https://kusionstack.io/ + ++ KCL 社区: https://github.com/kcl-lang/community ++ KCL 2023 路线规划: https://kcl-lang.io/docs/community/release-policy/roadmap ++ KCL GitHub Issues: https://github.com/kcl-lang/kcl/issues ++ KCL GitHub Discussion: https://github.com/orgs/kcl-lang/discussions diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/cncf-sandbox-logo.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/cncf-sandbox-logo.png new file mode 100644 index 00000000..47f1feff Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/cncf-sandbox-logo.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/community.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/community.png new file mode 100644 index 00000000..9a3f0cff Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/community.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/gitops.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/gitops.png new file mode 100644 index 00000000..9da99dc0 Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/gitops.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/integration.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/integration.png new file mode 100644 index 00000000..7fbe94c5 Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/integration.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox-en.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox-en.png new file mode 100644 index 00000000..480cfd92 Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox-en.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox.png new file mode 100644 index 00000000..3632fc64 Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/kcl-joining-cncf-sandbox.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/krm-kcl-form.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/krm-kcl-form.png new file mode 100644 index 00000000..e2ff7f34 Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/krm-kcl-form.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-konfig-gitops.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-konfig-gitops.png new file mode 100644 index 00000000..024be02a Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-konfig-gitops.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-krm-kcl.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-krm-kcl.png new file mode 100644 index 00000000..0ff697fb Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/practice-krm-kcl.png differ diff --git a/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/standalone-kcl-form.png b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/standalone-kcl-form.png new file mode 100644 index 00000000..fa4b1d3c Binary files /dev/null and b/static/img/blog/2023-09-19-kcl-joining-cncf-sandbox/standalone-kcl-form.png differ