November 8, 2026
App Development

Terraform vs OpenTofu vs Pulumi: Choosing an IaC Tool

Terraform remains the default choice for broad provider support and mature ecosystem tooling, OpenTofu is the open source fork worth choosing when licensing independence matters most, and Pulumi wins when teams want infrastructure defined in a general-purpose language like TypeScript, Python, or Go instead of a domain-specific one. All three converge on state-driven, declarative infrastructure management.
MythReality
OpenTofu is just Terraform with a different logoOpenTofu shares Terraform’s codebase history but is governed independently under the Linux Foundation and has already diverged with features like client-side state encryption
Pulumi requires learning a whole new configuration languagePulumi uses the general-purpose language your team already writes application code in, so there is no separate domain-specific syntax to learn
Switching from Terraform to OpenTofu requires rewriting all your configurationOpenTofu maintains compatibility with existing HCL configuration and state files up to the fork point, so most modules run with minimal changes
Only Terraform has a mature module ecosystemTerraform’s registry is the largest, but OpenTofu can consume most existing Terraform providers and modules, and Pulumi bridges many Terraform providers automatically

Why Three Tools Now Compete for the Same Job

Infrastructure as code used to mean one obvious choice: Terraform. That changed in 2023 when HashiCorp shifted Terraform’s license to the Business Source License, prompting a coalition of vendors and contributors to fork the last open source release into OpenTofu under the Linux Foundation. At the same time, Pulumi had already been building a following among teams who found HashiCorp Configuration Language limiting for anything beyond straightforward resource declarations. The result is a genuine three-way decision rather than a single default.

All three tools solve the same core problem: describe the desired state of cloud infrastructure, compute a plan of changes, and apply that plan while tracking a state file that maps configuration to real resources. Where they diverge is licensing, configuration language, and how much of the underlying provider ecosystem each can reach.

Terraform: The Established Default

Terraform, maintained by HashiCorp, uses HashiCorp Configuration Language, a declarative domain-specific syntax purpose-built for describing infrastructure. Its provider registry is the largest in the industry, covering thousands of resources across every major cloud plus countless SaaS platforms. Terraform Cloud and Terraform Enterprise add remote state management, policy as code through Sentinel, and team collaboration features for organizations willing to pay for the managed layer.

The licensing change in August 2023 moved Terraform from Mozilla Public License 2.0 to the Business Source License 1.1, which restricts building competing commercial offerings on top of Terraform’s source while still allowing free use for internal infrastructure management. For most individual teams simply provisioning their own cloud resources, this change has little practical effect, but it was significant enough to trigger the OpenTofu fork.

The 2023 Fork Timeline

HashiCorp’s license change prompted the Linux Foundation to announce OpenTofu within weeks, drawing on the last MPL-licensed Terraform release as its starting codebase before diverging with independently governed features.

OpenTofu: The Open Source Continuation

OpenTofu is a drop-in fork of Terraform maintained under the Linux Foundation with a governance structure that includes multiple companies and individual maintainers rather than a single vendor. It aims for practical compatibility with existing Terraform configuration, state files, and provider ecosystem, so most teams can migrate an existing codebase with minimal rewriting.

Since the fork, OpenTofu has shipped features not available in Terraform, including native state encryption without needing a third-party wrapper, and more flexible provider iteration through improved for_each support on provider blocks. The project has also committed to keeping its core free and open under the Mozilla Public License, which is the primary reason organizations concerned about vendor lock-in or future licensing changes choose it.

Migration Considerations for OpenTofu

Moving from Terraform to OpenTofu typically involves switching the binary, verifying provider compatibility, and testing plan output against existing state before rolling out broadly. Most registry providers work unmodified since OpenTofu consumes the same provider protocol, though teams using Terraform Cloud’s proprietary features need an alternative remote state backend, since OpenTofu is not tied to HashiCorp’s commercial platform.

Pulumi: Infrastructure in a Real Programming Language

Pulumi takes the most distinct approach of the three, letting engineers write infrastructure definitions in TypeScript, Python, Go, C#, Java, or YAML rather than a domain-specific language. This means loops, conditionals, functions, and existing package managers all work exactly as they do in application code, which appeals strongly to teams already comfortable with a language covered in guides on scaling TypeScript across large codebases.

Under the hood, Pulumi still produces a declarative state file and reconciles desired versus actual infrastructure the same way Terraform and OpenTofu do. Its provider bridge technology can automatically wrap most Terraform providers, giving Pulumi access to a large share of the same resource ecosystem without each provider needing a from-scratch reimplementation.

Configuration Language Approaches

Terraform and OpenTofu both express resources through HCL blocks with a resource type, local name, and argument map, while Pulumi expresses the same resource as a class instantiation inside a regular program, complete with standard control flow.

Feature Matrix: Terraform vs OpenTofu vs Pulumi

CapabilityTerraformOpenTofuPulumi
LicenseBusiness Source License 1.1Mozilla Public License 2.0Apache License 2.0
GovernanceHashiCorp (IBM)Linux Foundation, multi-vendorPulumi Corporation, open core
Configuration languageHCL domain-specific languageHCL domain-specific languageTypeScript, Python, Go, C#, Java, YAML
State encryptionRequires third-party wrapper or Terraform CloudNative built-in state encryptionNative encryption via Pulumi service or self-managed backend
Provider ecosystem sizeLargest, native registryConsumes most Terraform providers directlyBridges most Terraform providers automatically
Managed platformTerraform Cloud and EnterpriseCommunity and third-party backends (Spacelift, Scalr, others)Pulumi Cloud

Multi-Cloud and Portability Implications

Teams building a genuine multi-cloud architecture care deeply about not being locked into a single vendor’s tooling roadmap, and this is precisely the anxiety that drove much of the OpenTofu adoption wave. Because all three tools can target multiple clouds from the same codebase, the practical portability question is less about which clouds are supported and more about who controls the tool itself long term.

Organizations already thinking through a cloud exit strategy tend to weight OpenTofu’s foundation-backed governance heavily, since a community-governed license removes the risk of a future pricing or licensing shift from a single vendor. Others prioritize raw ecosystem maturity and stick with Terraform, accepting the licensing terms in exchange for the largest module library and the most third-party integrations.

State Management and Team Collaboration

All three tools rely on a state file to track which real-world resources correspond to which configuration blocks, and losing or corrupting that file is one of the most disruptive incidents a platform team can face. Remote state backends, locking mechanisms, and encryption at rest are non-negotiable for any team beyond a single operator. Terraform Cloud, Pulumi Cloud, and community-run backends like Spacelift or Scalr for OpenTofu all provide this collaboration layer, though the maturity and feature depth vary.

Teams weighing costs tied to state storage and cross-region replication should also review how egress fees and data gravity factor into remote backend choices, since state files and their associated locking traffic can incur unexpected charges if backend and compute regions are mismatched.

Common Mistakes

  • Assuming OpenTofu and Terraform state files are forever interchangeable without testing a plan after any significant version drift between the two.
  • Writing Pulumi programs with heavy imperative logic that produces different infrastructure on every run, defeating the purpose of a reproducible declarative plan.
  • Storing state files unencrypted in a shared bucket without object locking, inviting both accidental corruption and unauthorized edits.
  • Mixing Terraform Cloud-specific features into configuration that a team later expects to run unmodified on OpenTofu.
  • Ignoring provider version pinning, which lets an upstream provider update silently change resource behavior on the next apply.

How Platform Teams Actually Decide

Expert Practice

Platform teams evaluating a switch typically start by auditing how deeply their existing configuration depends on Terraform Cloud-specific features versus plain open source Terraform functionality, since that dependency largely determines migration cost to OpenTofu. Teams with large, already-mature HCL codebases and no urgent licensing concerns often stay on Terraform simply because rewriting stable infrastructure carries more risk than reward. Teams building new platforms from scratch, especially ones staffed heavily with application developers rather than dedicated infrastructure specialists, increasingly reach for Pulumi so the same engineers who write services can write the infrastructure around them without context-switching into a separate syntax. A common pattern is running a pilot module in OpenTofu or Pulumi alongside existing Terraform-managed infrastructure for one full release cycle before deciding whether to expand the migration further.

Ecosystem Maturity and Long-Term Risk

Terraform’s multi-year head start means its provider registry, third-party integrations, and community troubleshooting resources remain the deepest of the three. OpenTofu inherits much of that depth directly since it forked from a mature codebase, though its independent feature additions are newer and less battle-tested at scale. Pulumi’s ecosystem is smaller in absolute provider count but benefits from every improvement made to the general-purpose languages it wraps, and its automatic Terraform provider bridging closes much of the gap.

The broader shift toward foundation-governed open tooling has accelerated across the infrastructure space, a trend covered in depth in analyses of why open source software keeps gaining ground in the tech industry, and IaC tooling is a clear example of that dynamic playing out in real time.

Glossary

State file
A file that maps declared infrastructure configuration to the real-world resources it manages, used to compute what changes are needed on the next apply.
Provider
A plugin that translates declarative configuration into API calls against a specific cloud or service, such as AWS, Azure, or Google Cloud.
HCL
HashiCorp Configuration Language, the declarative domain-specific syntax used by both Terraform and OpenTofu to describe resources.
Provider bridge
Pulumi technology that automatically wraps an existing Terraform provider so it can be used from a general-purpose language program.
Business Source License
A source-available license that restricts certain commercial uses while still permitting free use for most internal infrastructure purposes.
Drift
A mismatch between the infrastructure state declared in code and the actual state of resources running in the cloud provider.

Key Takeaways

  • Terraform, OpenTofu, and Pulumi all use the same declarative state-driven model despite different configuration approaches.
  • OpenTofu forked from Terraform’s last MPL-licensed release and is now governed independently under the Linux Foundation.
  • Pulumi lets teams write infrastructure in TypeScript, Python, Go, or other general-purpose languages instead of a domain-specific syntax.
  • Most existing Terraform providers work with OpenTofu directly and with Pulumi through its automatic provider bridge.
  • Licensing concerns and vendor lock-in anxiety are the primary drivers behind OpenTofu adoption, not missing features.
  • State file security, including encryption and locking, matters more to production safety than which tool you choose.
  • Pilot new tooling on a single module or cluster for a full release cycle before committing to a broader migration.

FAQs

Is OpenTofu a complete replacement for Terraform?

OpenTofu aims for practical drop-in compatibility with Terraform configuration and state up to the fork point, and most existing modules and providers work with minimal changes. It is not a byte-for-byte clone going forward, since the two projects have already diverged with independent features like OpenTofu’s native state encryption.

Why did HashiCorp change Terraform’s license?

HashiCorp moved Terraform from the Mozilla Public License to the Business Source License in August 2023, citing a need to prevent competitors from building commercial products directly on top of Terraform’s source code without contributing back. The change still permits free use for internal infrastructure management, which is how most individual teams use the tool.

Does Pulumi require knowing how to code?

Yes, Pulumi expects familiarity with a general-purpose programming language such as TypeScript, Python, or Go, since infrastructure is defined as regular program code rather than a separate configuration syntax. Teams without programming backgrounds on their infrastructure team may find Terraform or OpenTofu’s HCL syntax more approachable initially.

Can Pulumi use existing Terraform modules?

Pulumi cannot directly consume Terraform modules written in HCL, but its provider bridge technology allows it to wrap most Terraform providers, giving access to the same underlying resources. Existing HCL modules would need to be reimplemented as Pulumi components in a supported language rather than imported as-is.

Which tool has the largest community and support base?

Terraform retains the largest community, the most third-party tutorials, and the deepest bench of consultants and managed service providers, a direct result of its multi-year head start. OpenTofu benefits from much of that inherited knowledge since its syntax remains HCL, while Pulumi has a smaller but rapidly growing community centered around its language-native approach.

Is OpenTofu backed by a major foundation?

Yes, OpenTofu is hosted under the Linux Foundation with governance contributions from multiple companies rather than a single vendor, which is the structural safeguard many adopters wanted after Terraform’s licensing change. This multi-stakeholder governance model is similar to how other CNCF and Linux Foundation projects are structured to avoid single-vendor control.

How difficult is migrating state files between these tools?

Migrating between Terraform and OpenTofu is usually straightforward since both read the same state format, though a test plan run is strongly recommended before any production apply. Migrating to Pulumi requires either importing existing resources into Pulumi’s own state format using its import commands or starting fresh, since Pulumi’s state representation differs structurally from Terraform’s.

Should new projects default to OpenTofu over Terraform?

There is no universal answer: teams prioritizing licensing certainty and foundation governance often default to OpenTofu, while teams valuing the largest possible provider ecosystem and existing Terraform Cloud investment often stay with Terraform. Both are actively maintained and production-ready, so the decision typically comes down to organizational risk tolerance rather than technical capability gaps.

  • HashiCorp, “Terraform Documentation,” developer.hashicorp.com/terraform
  • OpenTofu, “OpenTofu Documentation,” opentofu.org/docs
  • Pulumi, “Pulumi Documentation,” pulumi.com/docs
  • Linux Foundation, “OpenTofu Joins the Linux Foundation,” linuxfoundation.org
  • HashiCorp, “Terraform License FAQ,” hashicorp.com/license-faq
  • Gartner, “Market Guide for Infrastructure as Code Tooling,” gartner.com
    Avatar photo
    Sophie Williams first earned a First-Class Honours degree in Electrical Engineering from the University of Manchester, then a Master's degree in Artificial Intelligence from the Massachusetts Institute of Technology (MIT). Over the past ten years, Sophie has become quite skilled at the nexus of artificial intelligence research and practical application. Starting her career in a leading Boston artificial intelligence lab, she helped to develop projects including natural language processing and computer vision.From research to business, Sophie has worked with several tech behemoths and creative startups, leading AI-driven product development teams targeted on creating intelligent solutions that improve user experience and business outcomes. Emphasizing openness, fairness, and inclusiveness, her passion is in looking at how artificial intelligence might be ethically included into shared technologies.Regular tech writer and speaker Sophie is quite adept in distilling challenging AI concepts for application. She routinely publishes whitepapers, in-depth pieces for well-known technology conferences and publications all around, opinion pieces on artificial intelligence developments, ethical tech, and future trends. Sophie is also committed to supporting diversity in tech by means of mentoring programs and speaking events meant to inspire the next generation of female engineers.Apart from her job, Sophie enjoys rock climbing, working on creative coding projects, and touring tech hotspots all around.

      Leave a Reply

      Your email address will not be published. Required fields are marked *