4 ms·
I got burned so bad by config languages at Google (specifically gcl) that we're generating Kubernetes yamls using the Kubernetes python client now. My unpopula
by nosefrog 2y ago
I got burned so bad by config languages at Google (specifically gcl) that we're generating Kubernetes yamls using the Kubernetes python client now.
My unpopular opinion is that config languages with logic are bad because they're usually very hard to debug. The best config language I've used is Bazel's starlark, which is just python with some additional restrictions.
- progbits 2y agoI'm in the opposite camp and now that I can't use gcl I miss it. The whole yaml string templating and copypasta approach is the worst one possible. Is gcl great? No. Cue and dhal have better semantics. Do some people abuse it? Sure, but still much better than helm templating.
- nosefrog 2y agoI worked on the largest gcl deployment at Google (Union). We had multiple outages caused by our config system. I agree, it's better than helm templating. But it's not better than python!
- JeffMcCune 2y agoI share Marcel's view, a DSL is the ideal position on the configuration complexity clock. CUE in particular is ideal for configuration because of how it handles unification. I wrote up why we selected CUE here, with links to explanations from Marcel who explains it better than I: https://holos.run/blog/why-cue-for-configuration/ https://holos.run/blog/why-cue-for-configuration/ These comments in particular reminded me of Marcel's video linked at the bottom of that article, where he talks about the history of CUE in the context of configuration languages at Google: https://www.youtube.com/watch?v=jSRXobu1jHk https://www.youtube.com/watch?v=jSRXobu1jHk
- nosefrog 2y agoThat's why I said it's an unpopular opinion :P
- JeffMcCune 2y agoGot you, I did not mean to be argumentative, only to explain why Holos is what it is.
- adsharma 2y ago> Many general purpose languages support type checking, but few support constraints and validation of data. We must write our own validation logic which often means validation happens haphazardly, if at all. Python with z3 and some AST magic can support constraint validation. In fact, type checking can be seen as a form of that. I have a fork of typpete, a z3 based type checker from 3 years ago that should still work. https://adsharma.github.io/pysmt/ https://adsharma.github.io/pysmt/
- eloip 2y agoGood point. Earlier I mentioned languages insisting on the key/value side, but I totally include starlark and the imperative paradigm into the equation. There is also things done in the Typescript side and the goal is always similar: add safety for catching errors earlier. There should be a choice for everyone's flavor of that.