Hi DevOps, how do you think your ideal programming language would look like? I mean a language in which you would write pipeline logic, like Python or Bash, not define pipeline steps itself, like YAML.
I think for me it would have:
- very clean and readable syntax
- immutable state by default
- strong typing
- strong tooling and IDE support
- focus on DevOps-need things, like JSON and files manipulation
- absence of danger things like pointers
Sometimes you need to execute some logic in a pipeline step, like rename a file or push JSON somewhere.
Both of these can be done in a declarative fashion.
Yeah, yaml sucks. But we don’t need to throw the baby with the bathwater. You can have tools based in declarative systems that use saner languages, e.g, nix or TCL, and never have to deal with yaml issues.
The post doesn’t say “imperative”, it just differentiates between defining pipeline steps and defining the logic within a step.
…also, TCL? I haven’t used it for ops, but my memory of tcl/tk is extremely negative.
…also also: a core part of a build, CI, or, CD pipeline is almost always invoking binaries to run a command. That’s why shell scripts are so ubiquitous in pipeline-logic: invoking binaries is what they’re for. And it’s very difficult to do that a declarative way: Make comes close, but it’s difficult to track any side-effects that aren’t “update these files”, and a huge amount of CI/CD is no longer just “update a file”.
TCL as in Terraform Configuration Language.
Oh, that makes much more sense; thanks.