Decide on Terraform Version
Different versions of Terraform and OpenTofu offer varying features and compatibility. Terraform 1.x versions maintain backward compatibility within the series, providing stability for existing workflows. However, OpenTofu offers a fully open-source alternative that aligns with Cloud Posse's values and avoids potential legal risks introduced by Terraform's licensing changes. To ensure consistency and compatibility across modules and components, Cloud Posse recommends OpenTofu as the preferred choice for new projects and workflows.
The content of this document is provided for informational purposes only and should not be construed as legal advice. Cloud Posse is not qualified to provide legal counsel, and any decisions related to the use of Terraform under the Business Source License (BSL) should be reviewed by professional legal advisors. OpenTofu is recommended based on technical and operational considerations, not legal advice.
Context
Terraform is a popular infrastructure-as-code tool that allows you to define, provision, and manage cloud resources. Terraform is developed by HashiCorp. From inception to 1.5.7, all versions were permissively licensed under the OSI-approved MPL software license. All newer releases are available under the Business Source License (BSL). The BSL license imposes restrictions on the use of Terraform in certain scenarios, which may impact long-term use and compatibility with third-party tools and integrations.
Subsequently, every major open-source OS distribution (e.g. Debian, Alpine, Homebrew) has removed Terraform from their registries due to the BSL license. GitLab has also removed Terraform from their CI/CD pipelines due to the BSL license. This has created a significant challenge for organizations that rely on Terraform for infrastructure automation.
OpenTofu (previously named OpenTF) is a fork of Terraform 1.5.7 that was accepted by the CNCF and is fully open-source under the MPL license. OpenTofu is designed to maintain compatibility with Terraform 1.x modules and components while providing a stable and open-source alternative to the BSL-licensed Terraform versions.
Terraform providers are not affected by this change. They are independently licensed and can be used with any version of Terraform and OpenTofu. While HashiCorp maintains some providers, the vast majority are not maintained by HashiCorp. Most importantly, the terraform-provider-aws
remains under the MPL license.
OpenTofu Supporters
The project is backed by many organizations, including:
- CNCF
- CloudFlare
- OpenStreet Maps
- JetBrains
- Cisco
- Microsoft Azure,
microsoft/fabric
,terraform-provider-azapi
- VMWare Tanzu
- Cloud Posse
- Mixpanel
- Buildkite
- ExpressVPN
- Allianz
- Harness
- Gruntwork
- Spacelift
- Env0
- Digger
- Terrateam
- Terramate
For the full list of supporters, see the OpenTofu website.
Problem
Historically, Terraform versions pre-1.x were notoriously backward incompatible. This changed with Terraform 1.x releases, where backward compatibility is assured for all subsequent 1.x releases. While Terraform provides a stable experience, its recent shift to the BSL license introduces considerations for certain use cases, integrations, and compliance.
OpenTofu is based on Terraform 1.5.7 (the last MPL-licensed version) and maintains compatibility with Terraform 1.x modules and continues to evolve as a fully open-source project under the stewardship of the CNCF. Cloud Posse modules and components are verified to work with OpenTofu as part of our test automation, but with hundreds of modules, there may be delays in verifying full support with every new release.
OpenTofu has not been without controversy, with some organizations expressing concerns about the project's governance and sustainability. HashiCorp sent a cease and desist to the project. However, the project has gained significant traction and support from the community, including key contributors from the original Terraform project. As a result, it's sandbox application to the CNCF is delayed (as of 2024-09-05).
Considerations
Using OpenTofu ensures compatibility with third-party tools and integrations that are no longer supported with BSL-licensed Terraform versions. Furthermore, OpenTofu aligns with Cloud Posse's commitment to open-source principles and avoids potential compatibility and operational risks associated with BSL-licensed software.
Cloud Posse only supports MPL-licensed versions of Terraform (Terraform 1.5.7 or older), and all versions of OpenTofu.
Terraform 1.x remains backward compatible within the major version, but its BSL license imposes restrictions that may impact long-term use.
Recommendation
Cloud Posse recommends using the latest OpenTofu release for all new projects and workflows.
Cloud Posse cannot provide legal advice. Organizations should consult with their legal teams to understand the implications of the BSL license on their use of Terraform.
Latest Releases
- OpenTofu: https://github.com/opentofu/opentofu/releases
- Terraform: https://github.com/hashicorp/terraform/releases
References
- Mozilla Public License (MPL) applies to HashiCorp Terraform Versions 1.5.7 and earlier: https://www.mozilla.org/en-US/MPL/
- Business Source License (BSL) applies to HashiCorp Terraform Versions 1.6.0 and later: https://www.hashicorp.com/bsl
- Announcement of Terraform 1.6.0 and BSL License: https://www.hashicorp.com/blog/announcing-hashicorp-terraform-1-6
- OpenTofu Project: https://opentofu.io/
- OpenTofu Announces General Availability 2024-01-10, and ready for production use.
- OpenTofu FAQ
- OpenTofu Migration Guide
- Atmos OpenTofu Configuration
- Spacelift OpenTofu Configuration with Atmos
- Martin Atkins - Former core contributor of HashiCorp Terraform is now a core contributor to OpenTofu.