HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
hashicorp
terraform
Go2014–2025
hashicorp / terraform

terraform

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

79Distinct people
84Mentions
0Explicit recommenders
50.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year84 dated mentions

Observed mentions: 2014-07-28 18:53:32 UTC to 2025-10-22 19:18:21 UTC.

0510152014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 7 mentions; 2 submissions, 5 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 8 mentions; 2 submissions, 6 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 15 mentions; 2 submissions, 13 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 17 mentions; 4 submissions, 13 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC606
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC514
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC725
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC716
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC211
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC826
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC15213
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC404
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC17413
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC606
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303

What Hacker News says

84 sources
Recover() has its sharp edges. If some downstream function part of the execution stack does not release a critical resource because its execution was halted midway by the bubbling panic, then the resource will leak (and in the case of a locked sync.Mutex, subsequent Lock()s will deadlock). Until go1.23 [0], Recover() comes in handy for fault reports, however; ex: https://github.com/hashicorp/terraform/blob/325d18262e/inter... [0] which introduced debug.SetCrashOutput: https://pkg.go.dev/runtime/debug#SetCrashOutput
In Go subtleties
Disclaimer: I haven't been following any of these projects. Based on quick googling, they all follow a very similar pattern. The original is permissively licensed. After a decade of growth and popularity, it's relicensed as source-available to prevent AWS from hosting it and harming the financials [1][2][3]. Copyleft community forks fail to get traction. A permissive, corporate-funded fork gets traction. It's adopted by the Linux Foundation and is provided on AWS. Enough users and contributors switch to make it relevant and active to this day. In the few years that pass, the permissive fork doesn't die, but it doesn't overthrow the "official" fork either. The "official" fork makes money and is still widely used. Later, it becomes dual-licensed under a copyleft license [4]. The CEOs say that they've always wanted to stay open-source, and t
Read the rest
he goal of the license change was to force AWS to fork [1][2]. It's hard to tell whether the permissive forks will overthrow the "official" dual-licensed forks in the future. We need to wait for a decade to see. So far, at least in this space (dev-oriented tools that started as permissive), it seems like: - Permissive corporate forks get vastly more investment and interest, and quickly beat copyleft community forks (confirming the article). - Companies prefer more community-friendly licenses over full-on proprietary licenses (confirming the article). The originals are relicensed as source-available to cause the fork without alienating the community too much. The AWS forks are permissively licensed to get outside contributions and attract the community. AWS, obviously, profits the most from permissive code. That's because it doesn't really care about the code itself, and profits from hosting it instead. It reminds me of this timeless post about "commoditizing complements": https://www.joelonsoftware.com/2002/06/12/strategy-letter-v/. Now I see the connection between this idea and the original post. Permissive code "unlocks" more of the "adjacent value", and that's why it's more desirable by most entities. Another post about corporate investment that I found while googling the topic: https://www.infoworld.com/article/2338938/follow-the-cloud-m... [1] https://www.infoworld.com/article/3499400/elastics-return-to... [2] https://www.infoworld.com/article/3975620/redis-bets-big-on-... [3] https://www.infoq.com/news/2023/08/hashicorp-adopts-bsl/ [4] The latest versions of Elasticsearch and Redis are dual-licensed under AGPL. BSL'ed Terraform versions become available under MPL after 4 years from the publishing date: https://github.com/hashicorp/terraform/commit/b145fbcaadf0fa....
In In the long run, GPL code becomes irrelevant (2015)
I didn't downvote you, but this thing is actually back to their MPL-2 roots (for now!) and I don't see any references to github.com/hashicorp/terraform in https://github.com/hashicorp/terraform-mcp-server/blob/v0.1.... and I would guess patching https://github.com/hashicorp/terraform-mcp-server/blob/v0.1.... to accept an env-var or config flag or whatever would decouple it from their centralization The back side of that coin is that it similarly just(?) seems to be a fancy way of feeding the terraform provider docs to the LLM, which was already available via `tofu provider schema -json` without all this http business. IMHO the fields in the provider binary that don't have populated "description" fields are a bug
In Terraform MCP Server
I haven't used Terraform in years (because I changed jobs, not because of the tech itself), but back in the day v0.12 solved most of my gripes. I have always wished they'd implement a better "if" syntax for blocks, because the language itself pseudo-supports it: https://github.com/hashicorp/terraform/issues/21512 But yeah, at $previous_job, Terraform enabled some really fantastic cross-SaaS integrations. Stuff like standing up a whole stack on AWS and creating a statuspage.io page and configuring Pingdom all at once. Perfect for customers who wanted their own instance of an application in an isolated fashion. We also built an auto-approver for Terraform plans based on fingerprinting "known-good" (safe to execute) plans, but that's a story for a different day.
In Forget CDK and AWS's insane costs. Pulumi and DigitalOcean to the rescue
Aha, indeed. A few interesting notes on this. And thanks for the link to your Makefile. I see you're a Cloudformation Stacks user (good stuff), so you may know some of what I say below already, but maybe the Terraform specific notes will be of interest. Many AWS deployments (Terraform or otherwise) are single region unfortunately, with a primary factor there being that AWS APIs are for the most part region-specific. The AWS Terraform provider was built with this mindset too, unfortunately. Then the situation is complicated by Terraform's lack of support for dynamic providers, which is one of the most discussed still-open issues in Terraform. Some related open issues: https://github.com/hashicorp/terraform/issues/24476 https://github.com/hashicorp/terraform/issues/25244 https://github.com/hashicorp/terraform/issues/19932 My understanding i
Read the rest
s that people that have this as a first-class concern use something like Terragrunt to dynamically generate the HCL as needed. https://terragrunt.gruntwork.io/ For Burrow here, I was was focused on shipping something and didn't want to spend time on generating that code just yet. But the project has gotten some attention so if this is a recurring request I'll probably do it. Note that I intentionally chose the 17 AWS regions that are default enabled in every new AWS account, so it should only be if you want to customize it that this becomes important. A Cloudformation Stacks based deployment to achieve multi-region would be another good (and perhaps better) option here. I could add that to the Makefile, with inspiration from your link there.
In Show HN: Burrow is a globally distributed, serverless HTTP proxy
> Citation is sorely needed for both "transition" Sure! [1] > The Business Source License requires the work to be relicensed to a "Change License" at the "Change Date". The "Change License" must be a "license which is compatible with GPL version 2.0 or later". The Change Date must be four years or sooner from the publication date of the work being licensed So the business source license is less "non-OSI" and more "not currently non-OSI, but eventually and irrevocable at future date". In the case of Terraform it says [2]: >Change Date: Four years from the date the Licensed Work is published. >Change License: MPL 2.0 So is this ideal? No. But it's better than OpenVMS screwing over historians and hobbyists [3] decades after it's relevancy has expired.[6] It's also better than SSPL [4] which has no such transition and stays per
Read the rest
In Oracle dumps Terraform for OpenTofu
The argument OpenTofu and their lawyers are making is that they didn’t copy the “removed” statement, which is under the new BUSL license, they looked at the “moved” statement (licensed originally under MPL) and derived their own removed statement from that. Maybe true but I can’t help but wonder if there was any “parallel construction” involved. If you look at the PR in OpenTofu: https://github.com/opentofu/opentofu/pull/1158 It claims to fix this issue: https://github.com/opentofu/opentofu/issues/1032 Which in turn references this issue in terraform: https://github.com/hashicorp/terraform/issues/34402 I’m not a lawyer and have no idea who is right or wrong but I understand why Hashicorp is scrutinizing this.
In OpenTofu Response to HashiCorp's Cease and Desist Letter
I see that there are many comments on full debug builds, but for me the most important difference are incremental build times when making minor changes. In my opinion this is what speeds up the development iterations. Here are my build times when making a trivial change to a print-statment in a root function, comparing nightly dev vs adding cranelift + mold for rust-analyzer[0] (347_290 LoC) and gleam[1] (76_335 LoC): $ time cargo build Compiling rust-analyzer v0.0.0 (/home/user/repos/rust-analyzer/crates/rust-analyzer) # nightly Finished `dev` profile [unoptimized] target(s) in 6.60s cargo build 4.18s user 2.51s system 100% cpu 6.650 total # cranelift+mold Finished `dev` profile [unoptimized] target(s) in 2.25s cargo build 1.77s user 0.36s system 92% cpu 2.305 total Compiling gleam v1.0.0 (/hom
Read the rest
e/user/repos/gleam/compiler-cli) # nightly Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.69s cargo build --bin gleam 3.02s user 1.74s system 100% cpu 4.743 total # cranelift+mold Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.99s cargo build --bin gleam 0.71s user 0.20s system 88% cpu 1.033 total For me this is the most important metric and it shows a huge improvement. If I compare it to Go building Terraform[2] (371_594 LoC) it is looking promising. This is a bit unfair since it is the release build for Go and this is really nice in the CI/CD. Love Go compilation times and I thought it would be nice to compare with another language to show the huge improvements that Rust has made. $ time go build go build 3.62s user 0.76s system 171% cpu 2.545 total I was looking forward to parallel front-end[3], but I have not seen any improvement for these small changes. [0] https://github.com/rust-lang/rust-analyzer [1] https://github.com/gleam-lang/gleam [2] https://github.com/hashicorp/terraform [3] https://blog.rust-lang.org/2023/11/09/parallel-rustc.html *edit: code-comments & links + making it easier to see the differences
In Cranelift code generation comes to Rust
> All HashiCorp have done is made their own future contributions subject to BSL, not relicensed any previous contribution, There's are only 2 .go files left in the hashicorp/terraform repo on GitHub which still have MPL-2.0 in their license headers, so either there are virtually no such contributions left in Terraform or they have in fact attempted to relicense code. This looks like relicensing to me: https://github.com/hashicorp/terraform/commit/53c34ff49cfbc1... Btw, no .go file that you still show up in `git blame` for has an MPL notice header.
In OpenTF announces fork of Terraform

Showing the 15 most recent of 84 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.