 Hello and welcome to my lightning talk, DALE, a strong alternative to YAML. My name is Tristan de Cacré, I am a software engineer working for Red Hat on the OpenStack Cloud continuous integration and deployment. If like me you are tired of writing YAML files, this talk is for you. I will explain why we want an alternative, what is the DALE language and how it can be used. So we want an alternative because YAML is missing the following features. The language must be safe, for example a truncated configuration file should be invalid. We would like to be able to finally update an existing configuration, not just with anchors and simple merge operators. The language should also implement string interpolation. And finally, we would like to be able to import configurations from other files. DALE is a programming language that can be evaluated to JSON or YAML, with the reference interpreter. Or the expression can be loaded directly to the host language through a library. It has simple scalar types, like strings, booleans or numbers, as well as complex composite types, such as optional values, lists, records and unions. Here is an example expression that corresponds to this YAML. The language supports let bindings to decompose an expression in sub expressions. The previous example can be rewritten as follows, where the job and its variables are now defined outside of the final value. Notice how the job name is using the arch value, which is also used in the jobvars attribute. When a value reference pass, the interpreter automatically imports the external expression. So given a file name cogijob.DAL, with this content, the previous example can be rewritten like this. The language also supports functions, which can be expressed as follows. The parameters are defined using the lambda notation. Then a function can be evaluated by specifying its arguments, separated by space. In this example, the final expression is given on the command line, and it corresponds to this YAML. Notice how the build type can only have two values, scratch or final. It is not possible to use this function with another value. The interpreter will fail to evaluate with a type error. U R L can also be imported. Pour cet exemple final, the import defines a function that takes five arguments. A Kubernetes service name, a container image reference, a network port number, a root URL, and a list of environment variables. The function produces the required open shift resources to deploy this simple service. You can adopt DAL in four steps. First, you generate configuration files locally from DAL expressions. When satisfied, you commit the DAL files along with your configuration. Then you add a CI job to ensure the YAML files do not drift. And finally, you can remove the generated file, and load the DAL expressions directly. DAL can also be used to generate text, patch or XML. Here is some random food for thought. DAL supports semantic hash to guarantee that many types of refactors are behavior preserving. You can use a semantic diff to verify the changes. DAL is a total language. It forbids arbitrary side effects or exceptions. The language aims to support safely importing and evaluating untrusted DAL code. Even code authored by malicious user. Lastly, it has a mature community and ecosystem. Learn more on the website at DALlong.org. If you have any question, you can contact me by mail and you can get the slide online at this URL. Thanks for your time.