In August 2023, HashiCorp’s decision to relicense Terraform from MPL 2.0 to BSL sent shockwaves through the IaC community. The Linux Foundation quickly launched the OpenTofu fork, prompting cloud vendors and enterprise users to rethink their tooling choices. By 2026, this licensing controversy has evolved into a philosophical divide: do you stick with HCL, a domain-specific language, or embrace real programming languages like TypeScript, Python, and Go?
Terraform’s ecosystem advantage remains clear with 4,800+ providers, but Pulumi is growing at 45% annually and rapidly penetrating startups and developer teams. LinkedIn shows three times as many Terraform engineers as Pulumi engineers, yet Pulumi’s developer experience is changing how the next generation of teams makes their choices.
Terraform: The Maturity and Constraints of HCL
HCL (HashiCorp Configuration Language) is a DSL designed specifically for configuration. Its strengths are declarative syntax, high readability, and a gentle learning curve. Operations-focused teams can get up to speed quickly without mastering type systems, package management, or testing frameworks from general-purpose programming languages.
But HCL is not a programming language. It lacks a native debugger, deep IDE support, and a rich standard library. When writing complex logic, you’ll hit the limitations of `count` and `for_each`, encounter nested `dynamic` block hell, and struggle with path issues in module reuse. A popular Reddit thread titled “Terraform HCL is feeding me up” captures developer frustration: HCL isn’t as simple as a GUI nor as powerful as a programming language—it’s stuck in an awkward middle ground.
After the 2023 BSL license change, Terraform’s community trust took a hit. While HashiCorp emphasizes that BSL doesn’t affect internal enterprise use, legal teams dislike gray areas. If you embed Terraform into commercial products or offer managed services, BSL’s “competitive products” clause could trigger compliance risks.
This gave birth to OpenTofu. The Linux Foundation-backed OpenTofu maintains the MPL 2.0 license, offering native state encryption (v1.7+), improved error messages, and faster plan execution. In May 2026, following the OpenTofu 1.11.0 release, multiple enterprises publicly announced their migrations. OpenTofu and Terraform maintain 95%+ compatibility, keeping migration costs low, but ecosystem fragmentation is inevitable: HashiCorp-exclusive features like HCP Terraform (formerly Terraform Cloud), Sentinel Policy, and Terraform Enterprise cannot directly migrate to OpenTofu.
Terraform’s core value remains its ecosystem. The 4,800+ providers cover the big three clouds (AWS, Azure, GCP) plus SaaS platforms like Datadog, PagerDuty, and Cloudflare. If you need to manage obscure SaaS platforms or internal systems, a Terraform provider likely exists. Additionally, the large pool of Terraform engineers makes hiring easier.
But this ecosystem advantage is eroding. OpenTofu is siphoning off community contributions, and Pulumi uses the tfgen tool to automatically convert Terraform providers, enabling access to Terraform’s resource ecosystem. 2026 data shows Pulumi now has 180+ native providers covering major clouds and Kubernetes.
Pulumi: The Programming Language Insurgency
Pulumi’s core selling point is infrastructure written in real programming languages: TypeScript, Python, Go, C#, and Java. You can use `if`/`for` control flow, write unit tests, and leverage IDE autocomplete and type checking.
Compare the same AWS S3 bucket configuration: Terraform HCL requires `count` or `for_each` with variable interpolation, scattering logic across multiple files. Pulumi TypeScript uses `forEach`, `map`, and `async/await` directly, encapsulating logic in functions or classes without needing separate module repositories. Compile-time type checking catches errors before `pulumi up`, rather than waiting for `terraform apply` to fail.
This is developer-friendly. If your team already writes frontend code in TypeScript and backend services in Node.js, the learning curve for managing infrastructure with the same toolchain is nearly zero. Pulumi’s 45% annual growth comes primarily from these teams.
Pulumi’s open-source license is Apache 2.0, avoiding BSL compliance risks. Its business model centers on SaaS-hosted state and collaboration features (Pulumi Cloud), but self-hosted backends are completely free and fully functional. In 2026, Pulumi launched Neo AI assistance and Kubernetes Operator 2.0, further lowering the entry barrier.
But Pulumi’s weaknesses are obvious. Its provider ecosystem is only 1/26th the size of Terraform’s (180 vs 4,800). While tfgen allows calling Terraform providers, this introduces an extra dependency layer and compromises the debugging experience. The supply of Pulumi engineers in the job market is only one-third that of Terraform engineers, making hiring more challenging.
Another controversy: does writing infrastructure in programming languages introduce over-abstraction? HCL’s constraints are precisely its advantage—code style remains uniform, avoiding the chaos of one team writing object-oriented code while another writes functional. Pulumi requires team discipline, or infrastructure code can devolve into “clever code” that sacrifices readability.
Key Comparison Dimensions
**Learning Curve**: Terraform suits operations backgrounds; Pulumi suits development backgrounds. If your team already knows Python/TypeScript, Pulumi’s learning cost approaches zero. If your team consists of traditional ops transitioning to DevOps, Terraform offers a smoother path.
**Team Collaboration**: Terraform’s HCL enforces uniform style, focusing PR reviews on business logic rather than code style. Pulumi requires establishing coding standards, or everyone writes differently. However, Pulumi’s type system catches more errors during CI, reducing apply failures.
**Cloud Vendor Support**: The big three clouds (AWS/Azure/GCP) officially support both Terraform and Pulumi. But less common clouds (Oracle Cloud, Alibaba Cloud) and SaaS platforms (Sentry, LaunchDarkly) have more complete Terraform providers. Pulumi can call them via tfgen, but performance and debugging experience fall short of native support.
**Pricing Models**: Terraform Cloud charges by user count and concurrent runs; enterprise pricing (HCP Terraform) is opaque. OpenTofu is completely free but lacks managed state and RBAC. Pulumi Cloud’s individual tier is free; team tier starts at $75/month; enterprise tier supports self-hosting. For self-hosted setups, Pulumi’s S3/Azure Blob backends cost nothing.
**Migration Costs**: Terraform → OpenTofu has near-zero cost (95%+ compatibility). Terraform → Pulumi requires rewriting, but the `pulumi convert` tool can automatically convert most HCL. Pulumi supports Terraform state import, enabling gradual migration.
**Testing and CI/CD**: Pulumi can use standard testing frameworks (pytest, Jest) for unit and integration tests with direct coverage tool support. Terraform relies on Terratest (Go) or kitchen-terraform (Ruby), which have steeper learning curves. However, Terraform’s `plan` output is stable, and CI pipeline configuration is more mature.
Future Trends: The IaC Landscape’s Three-Way Split
The 2026 IaC landscape is no longer Terraform’s monopoly but a three-way split: Terraform (BSL), OpenTofu (MPL), and Pulumi (Apache 2.0).
OpenTofu will absorb Terraform’s existing user base, especially enterprises and open-source projects sensitive to licensing. Its technical roadmap will gradually diverge: faster plan algorithms, native state encryption, and improved module systems. By 2027, OpenTofu will likely introduce features incompatible with Terraform, cementing the ecosystem split.
Pulumi will continue capturing the developer market, especially cloud-native and Kubernetes-heavy users. Its growth depends on two factors: cloud vendors continuing to invest in providers (currently AWS and Azure both have official Pulumi teams), and AI assistance tools (Pulumi Neo) lowering the programming language barrier. If Pulumi’s provider count breaks 500, it will pose a substantial threat to Terraform.
Terraform (BSL) will defend the enterprise market, especially large customers deeply integrated with HCP Terraform. HashiCorp (acquired by IBM in 2024) will bundle Terraform with IBM Cloud and Red Hat OpenShift, pursuing a “commercial open source” strategy. But the BSL license stigma will continue to impact new user growth.
Another variable is AI. Tools like Pulumi Neo, GitHub Copilot, and Cursor can generate IaC code, lowering the manual writing barrier. If AI can understand HCL’s constraints and generate best-practice Terraform code, HCL’s learning curve advantage will shrink. But if AI is better at generating programming language code (due to richer training data), Pulumi benefits.
Selection Guidance: No Silver Bullet, Only Context
**Choose Terraform/OpenTofu if:**
– Your team has an operations background and doesn’t want to learn programming languages
– You need obscure cloud or SaaS providers
– The hiring market demands many Terraform engineers
– You’re sensitive to BSL licensing → use OpenTofu
**Choose Pulumi if:**
– Your team already uses TypeScript/Python/Go
– You need complex logic and unit testing
– You’re a cloud-native/Kubernetes-heavy user
– You don’t want to be locked into HashiCorp’s commercial strategy
**Choose neither if:**
– Your infrastructure is simple and Terraform is overkill → try ClickOps or AWS CDK
– Your team is under 5 people and state management is a burden → start with cloud-native IaC (AWS CloudFormation, Azure Bicep)
In 2026, the IaC tool decision isn’t “whether to use Terraform” but “which Terraform to use (official vs OpenTofu)” or “abandon HCL for programming languages.” Technical debt interest compounds over 2-3 years, and the migration cost of choosing the wrong tool far exceeds spending two extra weeks on research upfront.
The licensing controversy exposed a truth: infrastructure code lives longer than you think. The Terraform modules you write today might need maintenance for five years. When choosing tools, understand whether you’re betting on technology, a company, or a community.



