# From the Official Website > Pkl — pronounced _Pickle_ — is a configuration-as-code language with rich validation and tooling. It can be used as a command line tool, software library, or build plugin. Pkl scales from small to large, simple to complex, ad-hoc to recurring configuration tasks. # Copilot Answer 1. **Pkl Language Overview**: - **Description**: **Pkl** is a **configuration as code language** designed to streamline configuration management. It offers features for expressing configuration settings in a concise and expressive manner. - **Validation and Tooling**: Pkl comes with robust validation capabilities and tooling to ensure correctness and consistency in your configurations. - **Syntax**: The language syntax is designed to be human-readable and intuitive. - **Use Case**: Primarily used for configuration management within Apple’s ecosystem. - [**Reference**: You can explore the official **Pkl** GitHub repository for more details:](https://github.com/apple/pkl) [1](https://github.com/apple/pkl). 2. **Quick Links**: - **Installation**: Get started by installing Pkl. - **Language Reference**: Dive into the language specifics. - **Documentation**: Explore comprehensive documentation. - **Examples**: Check out practical examples. - **Release Notes**: Stay informed about updates. - **Community Interaction**: Engage with the Pkl community through GitHub Discussions. - **Reference**: Visit the  for more information. 3. **Development and Contributions**: - If you’re interested in contributing or have questions, refer to the **CONTRIBUTING.adoc** and **DEVELOPMENT.adoc** files in the repository. - Pkl artifacts/binaries are available in the **Sonatype Repository**. - [**Reference**:](https://github.com/apple/pkl) [1](https://github.com/apple/pkl). # Gemini Answer **What is Pkl?** - **Purpose:** A language designed to streamline configuration management, making it easier to write, maintain, and validate complex configurations. - **Key Traits:** - Declarative syntax - Expressiveness through functions, macros, and modules - Type safety to catch errors early - Designed for embedding in other languages and code generation **Why Pkl? (Problems it Addresses)** - **Limitations of Traditional Formats:** JSON, YAML, and Property Lists can become cumbersome and error-prone for complex configurations, lacking features for reusability and logic. - **Rise of "Configuration as Code":** Pkl aligns with the philosophy of treating configuration with the same rigor as application code, promoting testability and maintainability. **Key Features** - **Familiar Syntax:** Pkl's syntax is designed to feel familiar to developers, easing the learning curve. - **Classes, Functions, and More:** It goes beyond simple key-value pairs to support more complex configuration logic. - **Type Annotations:** This helps prevent configuration errors during the development phase. - **Integration and Code Generation:** Pkl can work seamlessly with other languages and generate configuration in various formats. **Example (Simplified)** Code snippet ``` module WebServer { type Port = Int; dev = { port: 8080 } prod = { port: 80 } } ``` Use code [with caution.](https://gemini.google.com/faq#coding) content_copy **Current Status** - **Open-Source:** Apple open-sourced Pkl in February 2024, encouraging adoption and contributions. - **Evolving:** Pkl is still in its relatively early stages; expect new features and language refinements. **Where to Learn More** - **Pkl Official Documentation:** [https://pkl-lang.org/](https://pkl-lang.org/) - **Articles on InfoQ, GeeksforGeeks, etc.:** Search for "Apple Pkl configuration language" # References ```dataview Table title as Title, authors as Authors where contains(subject, "Pkl" ) sort modified desc, authors, title ```