The HashiCorp Licensing Changeup
Why did the licence model underpinning one of the internet's favourite infrastructure tools change overnight?
A few months ago the cloud engineering community sat and watched carefully as HashiCorp announced they were adopting a new licence for all products [3].
What does this change mean for businesses using Terraform (or any other product) as a part of their commercial offering?
Let’s back things up a bit.
Terraform has been a stunning success story [5]. It’s used in commercial settings large and small, with most cloud vendors, engineers are comfortable with it and it’s become a part of the furniture in many software stacks. That may not sound glamorous, but ubiquity is a sure indicator of success in this business.
Terraform can be broken into four main parts;
The Terraform Binary / Executable
Providers — these are the interface to cloud API’s / services; it’s how the meat is made
The state-file — This is a privately held JSON state for a group of resources
We write code in HCL, attach providers, run the binary and store the state in our S3 buckets.
Providers are the “bulk of the sausage here”. And they are largely maintained and contributed to via vibrant Open Source communities with oversight from HashiCorp.
Seems like a healthy ecosystem, right? But consider how the growth in Terraform’s popularity does not contribute to their bottom line or pay for the many engineers needing to maintain the TF providers codebase / fix bugs / manage the community, etc. That’s a lot of work!
Enter Terraform Cloud , This is HashiCorp’s move toward commercializing Terraform.
What’s the value proposition, you ask?
Well… you get a nice GUI for your JSON state file which was previously sitting in a free (very cheap) S3 bucket. That’s about it.
What does it cost?
Is anyone else offering competing services for less? Yup!
To name a few.
Call In The Legal Team
The BSL license gets introduced:
“End users can continue to copy, modify, and redistribute the code for all non-commercial and commercial use, except where providing a competitive offering to HashiCorp” [3]
This means if you have a product which competes with Terraform Cloud, you cannot use Terraform to sell that product.
The Community Responds
OpenTF is born as a fork of Terraform, and then Its name is changed to OpenTofu. History is made. Again.
“OpenTofu is a Terraform fork, created as an initiative of Gruntwork, Spacelift, Harness, Env0, Scalr, and others, in response to HashiCorp’s switch from an open-source license to the BUSL.” [2]
In order to survive, the guys running Terraform for their customers need to run Terraform under a different name, and different licence. So OpenTofu forks, re-licences and vows to maintain compatibility between Terraform (1.5.x versions) and OpenTofu (with the expectation for divergence as time goes on)
OpenTofu is now a part of the Linux Foundation , and with it guarantees “Truly Open Source” licensing which will not suddenly change.
Key Takeaways
So what have we learned?
Just because something is licensed one way today, doesn’t mean it won’t be re-licensed another way tomorrow.
There is a breaking point when the cost of ownership of an incredibly popular piece of Open Source software starts to cost more than it profits , which puts focus on monetization.
Commercial entities tend to seek to profit from their commercial interests where foundations exist to serve and protect community interests.
The Cloud Pod Cast has a great episode about this https://www.thecloudpod.net/podcast/224-the-cloud-pod-adopts-the-bs-license/