This is an automated archive.
The original was posted on /r/opensource by /u/Peefy- on 2023-08-17 15:27:06+00:00.
Hi forks! Let me introduce you to a new configuration and policy language for cloud native scenarios. Looking forward to receiving your comments and responses. ❤️
KCL expects to solve the following problems:
- Hide infrastructure and platform details by defining more appropriate API abstractions to reduce the burden of developers.
- Mutate and validate existing config files or manifests.
- Manage large-scale configuration data across teams without side effects through configuration language.
- Use production level high-performance programming language to write code to improve the flexibility of configuration, such as conditional statements, loops, functions, package management and other features to improve the ability of configuration reuse.
- Improve the ability of configuration semantic verification at the code level, such as optional/required fields, types, ranges, and other configuration checks.
- Provide the ability to write, combine and abstract configuration blocks, such as structure definition, structure inheritance, constraint definition, etc.
You can use KCL to
- Generate low-level static configuration data like JSON, YAML, etc.
- Reduce boilerplate in configuration data with the schema modeling.
- Define transformers and constraints for configuration data and templates and mutate/validate them automatically.
- Organize, simplify, unify and manage large configurations scalably without side effects.
- Used as a platform engineering language to deliver modern app.
In addition to the language itself, KCL also provides many additional tools, such as formatting, testing, document, package management, to help users use, understand and check the configuration or policy they write. We can reduce the cost of configuration writing and sharing through IDE extensions such as VS Code, playground and package manage tools. In addition, through KCL Rust, Go, and Python multilingual SDKs, the configuration can be automatically managed and executed.