hashicorp / hcl2

Former temporary home for experimental new version of HCL
https://github.com/hashicorp/hcl
Mozilla Public License 2.0
373 stars 66 forks source link

why not an alternative to a custom language #43

Closed jtarchie closed 5 years ago

jtarchie commented 5 years ago

With the announcement of terraform 0.12 there are many extensions to the HCL configuration language.

It looks more like a programming language rather than a data configuration language.

HCL covers a domain specific language. It seems that the maintenance and building a programming language and DSL can be counter productive. For example, the breaking changes listed for hcl2.

What alternatives were looked at? For example, lua is a language designed for embedding and DSLs. Even nginx has an extensions to support (community provided) it.

From a purely educational level, I'd like to learn why hcl is still the supported choice.

nbering commented 5 years ago

The very first paragraph of the Configuration Syntax documentation probably summarizes Hashicorp's stance on this.

I think there's also a large factor at play that Hashicorp has a whole fleet of tools, written in Go-lang, and having their own configuration language gives them complete control over the format from the ground up.

Tools that use HCL:

... and I'm sure there's others, by Hashicorp and the community at large.

Personally... I favour the JSON syntax for most projects since it allows me to quickly write tools that understand my configuration in almost any language... but as support for HCL expands, I definitely see some advantages to it's readability and the availability of the parser itself as an open source library.

jtarchie commented 5 years ago

The DSL could be written in Lua as well. There are implementations specifically built for Golang integration.

apparentlymart commented 5 years ago

Hi @jtarchie,

This seems like a Terraform question more than an HCL question. If you'd like to discuss design decisions for Terraform, please do so over in Terraform's repository.

Thanks