Skip to main content
  1. Blog/

OpenTofu's Growing Pains — The State of Infrastructure as Code in 2026

·1041 words·5 mins
Osmond van Hemert
Author
Osmond van Hemert
Table of Contents
Open Source Chronicles - This article is part of a series.
Part : This Article

It’s been about two and a half years since HashiCorp’s license change sparked the creation of OpenTofu, and the project has reached an interesting inflection point. What started as a community reaction to the BSL relicense has evolved into a genuinely independent infrastructure-as-code tool with its own roadmap and identity. But maturity brings its own challenges.

I’ve been running OpenTofu alongside Terraform in several projects, and the divergence between the two is now significant enough that the choice between them is no longer just philosophical — it’s technical.

The Fork Has Teeth Now
#

When OpenTofu first launched under the Linux Foundation’s stewardship, skeptics (myself included, to some degree) questioned whether a community fork could maintain the velocity and quality of a commercially-backed project. Those doubts have been largely put to rest.

OpenTofu has shipped several features that Terraform doesn’t have, and vice versa. The most notable OpenTofu additions include client-side state encryption, which addresses a long-standing security concern about sensitive data in state files, and improvements to the provider development experience. These aren’t minor features — state encryption alone has been requested by the Terraform community for years.

On the other hand, HashiCorp has continued investing in Terraform with features tied more closely to their commercial ecosystem — deeper HCP Terraform integration, improved policy-as-code with Sentinel, and workflow improvements targeted at enterprise teams. The products are serving increasingly different audiences.

Provider Ecosystem: The Real Battleground
#

The infrastructure-as-code tool itself is almost secondary to the provider ecosystem. Providers — the plugins that translate HCL configurations into API calls to AWS, Azure, GCP, and hundreds of other services — are where the real value lives. And here, the picture is complicated.

Most major providers still maintain compatibility with both Terraform and OpenTofu, which makes sense given that the provider protocol hasn’t diverged dramatically. The major cloud provider plugins from AWS, Azure, and Google are community-maintained and work with both tools without modification.

However, I’m starting to see some provider authors making choices. A few newer providers are being developed OpenTofu-first, taking advantage of OpenTofu-specific registry features. Meanwhile, some HashiCorp partner providers are optimized for Terraform Cloud integration in ways that don’t translate perfectly to OpenTofu.

For most teams, this isn’t a problem yet. But it’s a trend worth watching. The “write once, run on either” era may have an expiration date.

State Management: Where OpenTofu Shines
#

If I had to pick one area where OpenTofu has genuinely leapfrogged Terraform, it’s state management. The client-side state encryption feature is a game-changer for organizations with strict compliance requirements.

In traditional Terraform workflows, state files contain plaintext representations of your infrastructure, including sensitive values like database passwords, API keys, and certificates. The recommended mitigation has always been to use encrypted remote backends like S3 with SSE-KMS, but that doesn’t protect against compromised backend access or insider threats.

OpenTofu’s approach encrypts state data before it leaves the client, using standard encryption schemes. This means your state backend never sees unencrypted sensitive data. I’ve deployed this in a financial services project where the compliance team had previously required a custom state management wrapper — OpenTofu’s native encryption eliminated that entirely.

The implementation is straightforward: you configure an encryption block in your OpenTofu configuration specifying the key provider (AWS KMS, GCP KMS, or a local key), and encryption is applied transparently. State operations work exactly as before from the user’s perspective.

The Migration Question
#

Every week, someone asks me whether they should migrate from Terraform to OpenTofu. My answer is, as usual, “it depends” — but I can be more specific about what it depends on.

Migrate if: You’re concerned about future license changes. You value client-side state encryption. You want to contribute to the tool’s development. You’re not heavily invested in Terraform Cloud/Enterprise features. You’re running open-source Terraform anyway.

Stay if: You’re deeply integrated with HCP Terraform. Your team relies on Sentinel for policy enforcement. You have extensive Terraform Enterprise workflows. The migration risk outweighs the philosophical benefits.

Wait if: You’re on a stable Terraform setup that’s working fine and you have other priorities. The switching cost is real — not in HCL changes (which are minimal) but in CI/CD pipeline updates, state migration procedures, team training, and documentation updates.

The actual HCL syntax remains almost entirely compatible. I’ve migrated several projects by literally replacing the terraform binary with tofu and updating provider registry references. But the operational overhead of a migration extends well beyond the binary swap, especially in organizations with established workflows and automation.

Pulumi, CDK, and the Broader Landscape
#

It’s worth noting that the Terraform/OpenTofu question exists within a broader infrastructure-as-code landscape that keeps evolving. Pulumi continues to gain traction among teams that prefer general-purpose programming languages over HCL. AWS CDK has matured into a solid option for AWS-centric shops. And newer entrants like Winglang and SST are carving out niches in specific domains.

I remain a pragmatist here. HCL-based tools (whether Terraform or OpenTofu) have an enormous ecosystem advantage and a well-understood operational model. They may not be the most elegant solution for every problem, but they’re the most widely understood, which has real value in teams with mixed experience levels.

That said, if I were starting a greenfield project today with a team of experienced developers, I’d seriously consider Pulumi with TypeScript. The type safety, testability, and expressiveness of a real programming language addresses many of the frustrations I’ve accumulated over years of writing complex HCL.

My Take
#

The OpenTofu fork has been, on balance, a positive development for the infrastructure-as-code ecosystem. Competition drives innovation, and both projects are shipping features faster than they would in a monopoly scenario. The state encryption feature alone has justified the fork’s existence for security-conscious organizations.

But I’d caution against treating this as a religious debate. Both tools solve the same core problem competently. The best choice depends on your specific constraints — compliance requirements, team expertise, cloud provider mix, and organizational investment in either ecosystem.

What I’m most interested in watching is whether the provider ecosystem remains shared or begins to fragment. That’s the variable that could shift the calculus dramatically in either direction. For now, we have the luxury of choice, and that’s a good position to be in.

Open Source Chronicles - This article is part of a series.
Part : This Article

Related