HashiCorp changed their license in 2023 and basically said "fuck you" to anyone using Terraform in production. The change took effect August 10, 2023, switching from Mozilla Public License 2.0 to the Business Source License v1.1 starting with Terraform 1.6.0. Now you're paying ridiculous money for HCP Terraform or wondering if you're violating their Business Source License every time you deploy infrastructure.
Meanwhile HCP Terraform costs spiral out of control. What started as "just $20/user" becomes $2,000/month once you factor in their per-resource pricing bullshit and premium features you actually need in production.
Migration Reality: Most Alternatives Are Garbage
Most Terraform alternatives fall into these painful categories:
Complete Rewrites (Avoid These): Pulumi wants you to rewrite everything in TypeScript. AWS CDK forces you into their proprietary nonsense. Great if you enjoy throwing away two years of infrastructure work. Here's why rewrites usually fail.
Cloud Vendor Lock-in: CloudFormation only works on AWS. Azure Resource Manager templates only work on Azure. Congratulations, you've traded HashiCorp lock-in for Amazon lock-in.
Academic Bullshit: Crossplane requires a PhD in Kubernetes and YAML to configure a load balancer. Perfect if you want to explain custom resource definitions at 2am when production is down.
The real question isn't "what's the best alternative" - it's "what won't make me want to quit programming."
What Actually Works for Migration
You need something that doesn't break your existing shit:
- Import your state files without data corruption
- Same provider ecosystem so your AWS configs still work
- Same HCL syntax so you don't rewrite everything
- Keep your CI/CD without learning new deployment patterns
- Migrate gradually instead of big-bang migrations that fail spectacularly
Migration Horror Stories (Learn From My Pain)
Story #1: We tried migrating to Pulumi for 4 months. Spent 2 engineer-months rewriting modules just to provision the same EC2 instances. Gave up when we hit provider compatibility issues with our custom networking. Went back to Terraform and just accepted the license risk.
Story #2: Another team tried CloudFormation because "it's free." Three months later they're debugging YAML template hell and can't figure out why their stack updates fail randomly. They're stuck because half their infrastructure is in CloudFormation now.
Story #3: We attempted a gradual Terraform → OpenTofu migration. Worked great until we hit some obscure provider bug that only affected OpenTofu - specifically the AWS provider 5.24.0 threw InvalidInstanceType.NotFound
errors for m6i.large instances that worked fine in Terraform. Took 3 days to debug because the error message was identical to actual AWS API failures. We learned the hard way that "100% compatible" isn't always 100%, especially with edge cases in newer provider versions.
The real lesson: test everything in staging first and have a rollback plan that doesn't involve recreating your entire infrastructure.