[[{"fid":"472","view_mode":"landscape_left","fields":{"format":"landscape_left","field_file_image_alt_text[und][0][value]":"Jane Street","field_file_image_title_text[und][0][value]":"","field_file_caption_credit[und][0][value]":"","field_file_caption_credit[und][0][format]":"full_html"},"type":"media","link_text":null,"attributes":{"alt":"Jane Street","height":106,"width":400,"class":"media-element file-landscape-left"}}]]Complicated systems require expressive configuration languages. But language design is hard: It's no surprise that many applications have either limited configurability or an unwieldy configuration format with
complex semantics.
At Jane Street, we have seen this problem enough times that we decided to start writing our configs the same way that we write our code, in OCaml. In this talk, we'll discuss our experiences using ocaml-plugin[1], a library we developed to embed OCaml within an application, providing a configuration language that is both expressive and familiar.
We'll also discuss some of the potential problems of using a Turing-complete language for configuration, as well as how to capture some of the benefits of a simpler and more constrained configuration system without giving up the power of a programming language.