HCL
Ranked 4 of 9 configuration languages by recommenders
Recommended as a simple, declarative configuration language that covers its main use case well, especially in Terraform. Critics say it is hard to refactor and has grown imperative constructs.
Recommended as a simple, declarative configuration language that covers its main use case well, especially in Terraform. Critics say it is hard to refactor and has grown imperative constructs.
25 people gave an opinion
- recommend it
- 10
- criticize it
- 15
- approval share
- 40%
Recommended in 6 of 13 months
- November 2025: recommended
- December 2025: recommended
- January 2026: recommended
- February 2026: recommended
- March 2026: not recommended
- April 2026: not recommended
- May 2026: recommended
- June 2026: not recommended
- July 2026: not recommended
- August 2026: not recommended
- September 2026: not recommended
- October 2026: recommended
- November 2026: not recommended (month in progress)
Why it doesn’t carry the badge
- 10 people recommend itNeeds 10 or more, met.
- 0.6 recommenders for every criticNeeds 2 to 1 or better, not met.
- Recommended in 6 of 13 monthsNeeds 4 or more, met.
The same three rules apply to every product, and the badge can’t be bought. How the badge works
What people say about it
The reasons people give, with the number of comments that give each one. Open a reason to read what they said.
Why people recommend it
Each mark is one comment
Deliberate limits act as guardrails
“The lack of expressiveness of HCL is the point and what makes it so good”
Comment from 10 Dec 2025 in “The future of Terraform CDK” “You can have conditions and types without having the full flexibility”
Comment from 9 Dec 2025 in “GitHub Actions has a package manager, and it might be the worst” “HCL is simple enough and can have pretty good guardrails on it”
Comment from 20 Feb 2026 in “Almost Every infrastructure decision I endorse or regret after 4 years” Simple to read and write
“HCL is simple enough and can have pretty good guardrails on it”
Comment from 20 Feb 2026 in “Almost Every infrastructure decision I endorse or regret after 4 years” “I do find HCL to be simpler.”
Comment from 27 Feb 2026 in “Show HN: Peekl – A modern alternative to Ansible and Puppet” Good fit for its DSL role
“HCL solves the problem of unknown values. It's certainly not a "horrible design" unless you're trying to compare it to something that does a different job.”
Comment from 18 Oct 2026 in “A skeptic's first contact with Kubernetes (2024)” “We use it as what it is - a DSL - that covers its main use case in an elegant manner”
Comment from 18 Nov 2025 in “How when AWS was down, we were not”
What people warn about
Each mark is one comment
Poorly designed language
“It's a half baked idea that became production way too fast.”
Comment from 24 Aug 2026 in “AI and Infrastructure Engineering” “I NEVER liked HCL, it never made sense to me.”
Comment from 10 May 2026 in “I returned to AWS, and was reminded why I left” “rather than the poor pseudo-language of hcl”
Comment from 11 Dec 2025 in “The future of Terraform CDK” - Comment from 24 Aug 2026 in “AI and Infrastructure Engineering”
- Comment from 17 Oct 2026 in “A skeptic's first contact with Kubernetes (2024)”
Adds imperative constructs to compensate
“Yet said language continues to add imperative-inspired constructs to make up for its limitations.”
Comment from 10 Dec 2025 in “The future of Terraform CDK” “HCL 2 has loops and conditionals. It is most definitely imperative.”
Comment from 5 Dec 2025 in “CSS now has an if() conditional function” Hard to refactor or reuse
“I always found HCL to be quite terrible, slowly becoming less painful, but not really refactoring-friendly.”
Comment from 10 Dec 2025 in “The future of Terraform CDK” “First-class deep merge support is something that I really miss in hacky configuration languages like HCL”
Comment from 15 Dec 2025 in “Dagger: Define software delivery workflows and dev environments” “DRY is not something HCL is good at.”
Comment from 10 Dec 2025 in “The future of Terraform CDK” Hard to learn or parse
“their parser and implementing it was actually a little bit more difficult that doing just raw YAML parsing”
Comment from 9 Mar 2026 in “Show HN: Peekl – A modern alternative to Ansible and Puppet” “I thought that it would be too complex to learn”
Comment from 24 Feb 2026 in “Show HN: Peekl – A modern alternative to Ansible and Puppet”
Other configuration languages people recommend
The four most recommended other configuration languages, with the same counts for each, so you can compare like for like. The tick on each bar marks the 2 to 1 line the badge needs.
See all 9 configuration languages, rankedWhat people said
25 of the 30 comments that mention it, newest first. Each links to the original comment.
“HCL solves the problem of unknown values. It's certainly not a "horrible design" unless you're trying to compare it to something that does a different job.”
“HCL was a horrible design.”
“We do know how that turned out, but maybe that was more questionable design”
“It's a half baked idea that became production way too fast.”
“these horrendous HCL constructs”
“I NEVER liked HCL, it never made sense to me.”
“their parser and implementing it was actually a little bit more difficult that doing just raw YAML parsing”
“I do find HCL to be simpler.”
“I thought that it would be too complex to learn”
“HCL is simple enough and can have pretty good guardrails on it”
“Just write HCL (or JSON, JSONNET etc) in the first place.”
“First-class deep merge support is something that I really miss in hacky configuration languages like HCL”
“HCL/TF feels like a tool that was developed by people who actually wanted to use it”
“rather than the poor pseudo-language of hcl”
“the garbage HCL with its even more garbage module system”
“they don't look great in a declarative language like HCL”
“Yet said language continues to add imperative-inspired constructs to make up for its limitations.”
“DRY is not something HCL is good at.”
“The lack of expressiveness of HCL is the point and what makes it so good”
“I always found HCL to be quite terrible, slowly becoming less painful, but not really refactoring-friendly.”
“it used HCL which was at that point only really implemented in Go”
“You can have conditions and types without having the full flexibility”
“HCL 2 has loops and conditionals. It is most definitely imperative.”
“We use it as what it is - a DSL - that covers its main use case in an elegant manner”
“after my experiences with TF & HCL”
Counts come from 1,795,640 Hacker News comments, November 2025 to November 2026. How we count. Report a mistake.