Infrastructure-as-code (IaC) tooling had a genuinely disruptive few years. In August 2023, HashiCorp moved Terraform away from its open-source Mozilla Public License to the Business Source License (BUSL 1.1), a change aimed at commercial competitors reselling Terraform as a service. The community response was immediate: within weeks, a group of vendors and contributors forked the last MPL-licensed release into what became OpenTofu, now governed by the Linux Foundation. Meanwhile Pulumi, which predates the fork entirely, has spent the same years making the case that infrastructure code is better written in TypeScript, Python, Go, C#, or Java rather than a domain-specific language. This piece compares all three on license, syntax, pricing, and fit — using only what HashiCorp, the OpenTofu project, and Pulumi themselves publish.
At a Glance
| Tool | License | Language / Syntax | Best For |
|---|---|---|---|
| Terraform | Business Source License (BUSL 1.1) since August 2023; maintained by HashiCorp, now owned by IBM | HCL (HashiCorp Configuration Language), with a JSON variant | Teams already standardized on HCL and HCP Terraform who aren’t building a competing commercial IaC product |
| Pulumi | Apache 2.0 for the core CLI/SDKs (open source); Pulumi Cloud is a separate commercial SaaS | General-purpose languages: TypeScript, JavaScript, Python, Go, C#, Java, or YAML | Developers who want real programming constructs (loops, functions, tests, IDE support) instead of a DSL |
| OpenTofu | Mozilla Public License 2.0 (MPL-2.0), fully open source, governed under the Linux Foundation | HCL — a largely drop-in fork of Terraform’s syntax | Teams that want Terraform-compatible configuration without BUSL licensing terms or vendor lock to one company |
Short Verdict
Terraform remains the most widely documented and integrated option, but it now carries a license that restricts building competing commercial offerings on top of it and ties day-to-day pricing decisions to IBM. OpenTofu is the right default if your main objection is the license — it’s a community-governed, MPL-2.0 fork that reuses Terraform’s own HCL syntax and most existing configurations. Pulumi is the right pick if you’d rather write infrastructure in a language your application developers already use, and are willing to pay for its usage-based cloud backend once you outgrow the free tier.
What It Is: Infrastructure as Code, and Why Three Tools Exist
Infrastructure as code means describing servers, networks, databases, and other cloud resources in version-controlled configuration files instead of clicking through a console. A tool reads that configuration, compares it against the real state of your cloud accounts, and calculates a plan of changes — create, update, or destroy — to reconcile the two. Terraform popularized this declarative, provider-plugin model across hundreds of cloud and SaaS APIs and became the de facto standard for multi-cloud provisioning.
That dominance is exactly why the 2023 license change mattered so much: an enormous ecosystem of modules, CI/CD integrations, and internal tooling was built assuming Terraform would stay under a permissive open-source license. OpenTofu exists specifically to preserve that assumption. Pulumi, in contrast, was built from the start on a different premise — that the declarative “plan and apply” model is right, but the configuration language shouldn’t be a bespoke DSL when a general-purpose language already has loops, types, package managers, and testing frameworks.
Pricing and Licensing Breakdown
Terraform / HCP Terraform. The core Terraform CLI is source-available under BUSL 1.1: you can read, modify, and self-host it, but the license bars using it to build a product that competes with HashiCorp’s (now IBM’s) own commercial offerings. HashiCorp’s HCP Terraform (formerly Terraform Cloud) documentation lists a Free plan with no charge for up to 500 managed resources, unlimited team members, and one concurrent run, but without team-based RBAC, cost estimation, or audit logging. Paid tiers move to pay-as-you-go pricing per resource under management: IBM’s published Terraform pricing lists Essentials at $0.00013 per resource-hour, Standard at $0.00064 per resource-hour, and Premium at $0.00135 per resource-hour, with Standard and Premium priced further by quote for extra concurrency. IBM completed its $6.4 billion acquisition of HashiCorp in 2025, so Terraform’s commercial roadmap and pricing now sit inside IBM’s hybrid-cloud business.
OpenTofu. OpenTofu is released under MPL-2.0, the same permissive open-source license Terraform used before the BUSL change, with no usage restrictions on competing products. The project forked the last MPL-licensed Terraform codebase in September 2023 (first as “OpenTF,” then renamed OpenTofu), joined the Linux Foundation, and reached its first stable 1.0 release on January 10, 2024, after contributions from more than five dozen developers. There’s no separate commercial product to price: the CLI is free, and hosting your own state backend, runner, or CI pipeline is up to you or a third-party provider.
Pulumi. Pulumi’s CLI and language SDKs are Apache 2.0 and free to self-host against your own state backend. Its hosted Pulumi Cloud backend has a published tiered structure: Free ($0, one user, basic state management and ESC, up to 500 workflow minutes/month), Essentials ($40/month including 40 credits and up to 500 managed resources, unlimited users, SSO-adjacent collaboration features), Pro ($400/month including 400 credits and up to 2,000 managed resources, adding SAML/SSO, RBAC, and policy enforcement), and a custom-quoted Enterprise tier adding self-hosting and compliance packs (CIS, ISO 27001, PCI DSS, among others). Beyond the included credits, Pulumi bills usage per managed resource-hour (from $0.0005/hour on Pro) and per workflow-minute.
Pros
- Terraform: the largest provider and module ecosystem, the most third-party tutorials and Stack Overflow answers, and broad CI/CD and SaaS integration support built up over a decade.
- OpenTofu: MPL-2.0 licensing with no usage restrictions, strong compatibility with existing Terraform configurations and state files, and vendor-neutral governance under the Linux Foundation rather than a single company.
- Pulumi: infrastructure defined in a real programming language, so you get IDE autocomplete, unit testing, loops/conditionals without a DSL’s limitations, and easy sharing of logic as ordinary packages.
Cons
- Terraform: the BUSL license creates real legal uncertainty for vendors and consultancies building competing products, and commercial roadmap decisions now run through IBM.
- OpenTofu: younger project history than Terraform itself, and some newer HashiCorp-side provider features or HCP integrations may lag or never arrive.
- Pulumi: the free tier’s resource and workflow-minute limits are modest, and costs scale with both managed resources and workflow minutes as usage grows, so bills can be less predictable than a flat seat price.
Who It’s a Good Fit For / Who Should Look Elsewhere
Terraform fits teams already deep in the HashiCorp/IBM ecosystem (Vault, Consul, HCP) who have reviewed the BUSL terms with their own legal counsel and aren’t building a product that competes with HCP Terraform. It’s a poor fit for vendors building a commercial IaC platform, or teams that want governance decisions made outside a single vendor.
OpenTofu fits teams that like Terraform’s HCL model and existing module library but want a permissively licensed, community-governed path forward — including anyone who was uneasy about the 2023 license change specifically. It’s a weaker fit if you need a feature that’s only shipping in HashiCorp’s newest proprietary tooling first.
Pulumi fits engineering organizations where application developers also own infrastructure and would rather not learn a dedicated DSL, or teams that want unit tests around their infrastructure logic. It’s a weaker fit for teams that specifically want to avoid a usage-metered SaaS backend, or that have large existing Terraform/HCL investments they don’t want to rewrite.
A Minimal Example
To show how close OpenTofu’s syntax stays to Terraform’s, here is a minimal HCL resource block as documented by HashiCorp — valid, unmodified, in both Terraform and OpenTofu:
resource "aws_instance" "web" {
ami = "ami-a1b2c3d4"
instance_type = "t2.micro"
}
The two quoted labels are the resource type (defined by the provider) and a local name used elsewhere in the configuration, such as in aws_instance.web. Because OpenTofu forked Terraform’s codebase directly, blocks like this one typically run unchanged after switching the binary.
Bottom Line
There is no longer a single obvious default IaC tool. Terraform still has the deepest ecosystem, but its license and its new ownership under IBM are factors every team now has to weigh deliberately rather than assume away. OpenTofu removes the licensing question entirely while staying close enough to Terraform that migration is usually mechanical. Pulumi solves a different problem — DSL fatigue — by letting you write infrastructure in languages your team already knows, at the cost of a metered cloud backend once you scale past its free tier. Pick based on which trade-off (license risk, migration effort, or language preference) matters most for your organization.
FAQ
Why did OpenTofu get forked from Terraform?
HashiCorp announced in August 2023 that Terraform and its other core products would move from the open-source Mozilla Public License to the Business Source License (BUSL 1.1), restricting use by companies that compete with HashiCorp’s commercial offerings. A group of contributors and vendors responded by forking the last MPL-licensed Terraform release, first as “OpenTF” and then renamed OpenTofu, and brought the project under the Linux Foundation to keep it vendor-neutral.
Is OpenTofu a drop-in replacement for Terraform?
For most existing Terraform configurations and state files, yes — OpenTofu forked Terraform’s codebase directly and aims for compatibility. Always test provider versions and any newer HashiCorp-only features before migrating a production workspace.
Does Pulumi require using its hosted cloud service?
No. Pulumi’s CLI and SDKs are Apache 2.0 and open source, and you can configure a self-managed state backend instead of Pulumi Cloud. The hosted Pulumi Cloud backend, with its Free, Essentials, Pro, and Enterprise tiers, is optional but is where most of Pulumi’s collaboration, policy, and CI/CD features live.
Who owns Terraform now?
HashiCorp, Terraform’s original creator, completed a $6.4 billion acquisition by IBM in 2025. Terraform and HCP Terraform are now part of IBM’s hybrid-cloud product line.
Can I use Terraform for free?
Yes, within limits. The Terraform CLI itself is free to download and run under BUSL 1.1 (subject to its usage restrictions), and HashiCorp’s HCP Terraform documentation lists a free plan covering up to 500 managed resources with unlimited team members, though without team-based RBAC, cost estimation, or audit logging.
Sources
- OpenTofu: “OpenTofu Announces Fork of Terraform”
- Linux Foundation: “OpenTofu Announces General Availability”
- OpenTofu GitHub repository (MPL-2.0 license)
- HashiCorp Developer: HCP Terraform subscription plans overview
- IBM: HashiCorp / Terraform pricing
- HashiCorp Developer: Terraform resource syntax
- Pulumi: Pricing
- Pulumi GitHub repository (Apache-2.0 license)
- TechRepublic: “IBM Completes HashiCorp Acquisition for $6.4 Billion”
Discover more from Software Online Review
Subscribe to get the latest posts sent to your email.
