Welcome to this issue of Activation Function. Every other week, we introduce you to a new and exciting open-source backend technology (that you’ve probably only kind of heard about… ) and explain it to you in 5 minutes or less so you can make better technical decisions moving forward.
In this issue, we’ll explore OpenTofu (previously OpenTF), a Terraform fork that is open-source, community-driven, and managed by the Linux Foundation created in response to HashiCorp’s switch from the MPL v2 license to a BSL v1. 1 license.
What’s all the fuss about, how we got here, how things will work going forward, should you even care? Now that the dust has settled, it’s a good time to discuss all of this. Ready, set, go!
TL;DR:
- Hashicorp changed the Terraform license from MPL v2 to BSL v1. 1 to stop companies from building products that compete with their enterprise offering.
- The community reacted by creating a Terraform fork, called it OpenTofu, and joined the Linux Foundation.
- The project gathered a lot of support from over 150+ companies and 700+ individuals, and the first Alpha release of OpenTofu was announced.
The Rise of IaC & Terraform
We deployed and managed infrastructure for decades using scripts and basic automation tools like CFEngine. Then Cloud Computing came along, application complexity and scale skyrocketed, and infrastructure management became a growing problem. As a result, tools like Puppet, Chef, and Ansible were created to make the process more manageable and systematic.
This worked great until we decided to add a whole different level of complexity by going the multi-cloud and container route. And just like that, we were back to looking for new tooling to manage this newfound complexity.
Luckily, we didn’t have to wait a long time, and in 2014, Terraform was unveiled to the world. It brought an incredible experience, allowing us to deploy, manage, track, and manipulate infrastructure using human-readable configuration files.
All you had to do was specify what you wanted using HashiCorp Config Language (HCL), and bam! You have all the infrastructure you need to power your application.
The best part? Terraform was cloud-agnostic, extendible, and OPEN SOURCE! This was a game-changer. It spread like wildfire, developers rushed to contribute to its ecosystem of tools, and a new era of Infrastructure as Code (IaC) was born.
Terraform became the de facto IaC tool, Hashicorp (the creator of Terraform) went public, the community was thriving, and the party was set to go on forever until… August 10th, 2023.
Note – Terraform didn’t pioneer the concept to IaC, tools like AWS CloudFormation were launched years before it, but they were closed-source, vendor-specific, and provided a poor user experience, resulting in very little adoption.
The Fork
On August 10, 2023, HashiCorp released an announcement that explains why, going forward, the license of all their software has been changed to a Business Source License v1.1., following in the footsteps of companies like Couchbase, Cockroach Labs, Sentry, and MariaDB. The main reason, and one that you heard before, is that:
Some vendors take advantage of pure OSS models, and the community work on OSS projects for their own commercial goals without providing material contributions back. We don’t believe this is in the spirit of open source.
Basically, you are not allowed to build products on top of Terraform that would directly compete with Hashicorp’s Terraform Cloud offering.
Note – Many claim that the real reason was that Hashicorp simply couldn’t compete due to its undifferentiated cloud offering and very high pricing. As one person put it on Hackernews:
Their enterprise offerings were bad, and their price quotes were insane and unrealistic. I worked at two companies that rejected them because their pricing was so ludicrous. The TACoS space of small startups nimbly out-competed these bad offerings.
Anyways, as you can imagine… Sh*t got real.
Many were taken by surprise and started scrambling to figure out what this meant for them, with the main question being if they were compliant with the license.
Note – Over the years, people built many projects, big and small, on top of Terraform. So the fact that you couldn’t build competing products on top of Terraform anymore meant that those projects and everyone using them were at risk.
Apart from the obvious “rug pull,” the community felt betrayed by the fact that a project was sold to them as Open Source, they put in the effort to contribute to it, and now it’s being taken away from them.
Terraform Co-founder and CTO released a binding Q&A to appease the worries, but that wasn’t enough. On August 15th, the OpenTF Manifesto was released asking HashiCorp to revert the license for Terraform to an MPL license or some other well-known, widely accepted open-source license (e.g., Apache License 2.0) or the consortium would support a fork of Terraform to be managed by a foundation. The manifesto gathered over 35K GitHub stars, and lo and behold, on August 25th, 2023, the OpenTF initiative was publicly announced as an open-source fork of Terraform, and OpenTofu was born!
On September 5th, 2023, the OpenTF repository was released to the public.
On September 20th, 2023, the OpenTF project joined the Linux Foundation and was renamed OpenTofu, due to potential trademark issues.
On October 4th, 2023, the first Alpha release of OpenTofu was announced, and the game was officially on!
OpenTofu
Alright, so, OpenTofu is a fork of Terraform 1.5.x, so functionality is identical to Terraform, with the only difference being the CLI commands you’ll use to interact with OpenTofu and the output names you’ll see.
So far, so good. So, if it’s the same, why should you care? Good question. Here is why:
- For starters, it’s fully open source (MPL-licensed), which means you can do whatever you please with the project and never worry about a license change or legal repercussions.
- It’s community-driven and impartial, meaning pull requests will be evaluated and accepted based on their value to the community, regardless of their impact on vendors.
[Note] This is a key aspect, as in the past, Hashicorp refused to accept contributions that interfered with its commercial offering (e.g., Encrypting TerraForm state files). By the way, it’s totally fair for a commercial company to safeguard its business interests and control the direction of a project it created.
There are a few other key things you should know about:
- Migration – OpenTofu promises to be 100% interoperable with future Terraform releases.
- Support – The project is supported by 148 companies and 734 individuals, with millions of dollars in committed resources. So far, 19 full-time engineers have been committed to supporting the project for the next 5 years.
- Features – OpenTofu plans to release many highly-awaited Terraform features, such as end-to-end state file encryption.
- State Files – OpenTofu will work with state files, and the community is committed to not introducing any breaking changes in the future to how state files are read.
- Modules & Providers – OpenTofu will work with the current Terraform modules and providers but will use a separate registry.
Are people moving to Open Tofu?
There is strong support for OpenTofu. Apart from the 148 companies that committed resources to advance the development of the project, large players like Allianz Insurance publically stated their intention to move to OpenTofu:
"In our organization, open source technologies underpin various mission-critical solutions and have yielded significant business benefits," said Mike Sutton, CIO of Allianz, in a prepared statement. "Our recent move to adopt OpenTofu for Infrastructure as Code aligns with this strategy." Source
However, a recent Reddit poll shows that most people are either not planning on migrating or haven’t decided yet.
Amongst the stated reasons are:
- The cost of migrating to a new tool, even a “drop-in replacement one,”
- The potential split in community support due to diverging features post-fork, which could lead to a scenario of supporting two similar but slightly different tools,
- Not caring because one wasn’t really affected by the change.
Other people simply don’t buy the “David vs. Goliath” story and believe that this fork is just a move by a small group of companies to protect their business interests. You know, kind of like what Hashicorp tried to do…
Where to next?
Whether you want to jump on the OpenTofu bandwagon or not, here are a few resources you can check out to get started and keep up with the project:
Documentation
Articles & Tutorials
Podcasts:
- Terraform is no longer Open Source. Is OpenTofu the Successor?
- What's Up With Open Terraform?
- OpenTF for an Open Terraform
Communities
That’s it, folks! I hope this gives you a good rundown of the Terraform Vs. OpenTofu saga that played out over the last 2 months. Things have progressed quickly, and I hope the OpenTofu community keeps the momentum going.
Until next time!