From 8664debac6db5b06b5cccd816d617abd13a03218 Mon Sep 17 00:00:00 2001 From: Roman Grinovski Date: Tue, 26 Sep 2023 10:36:58 +0200 Subject: [PATCH] add Marcin's blog post (#181) --- blog/2023-09-25-opentofu-why-should-i-care.md | 46 ++++++++++++++++++ static/img/blog/tofu-insurance.png | Bin 0 -> 17642 bytes 2 files changed, 46 insertions(+) create mode 100644 blog/2023-09-25-opentofu-why-should-i-care.md create mode 100644 static/img/blog/tofu-insurance.png diff --git a/blog/2023-09-25-opentofu-why-should-i-care.md b/blog/2023-09-25-opentofu-why-should-i-care.md new file mode 100644 index 00000000..cba7bb42 --- /dev/null +++ b/blog/2023-09-25-opentofu-why-should-i-care.md @@ -0,0 +1,46 @@ +--- +title: Why should I care about OpenTofu? +slug: why-should-i-care-about-opentofu +image: /img/blog/tofu-insurance.png +authors: + - name: Marcin Wyszynski + title: OpenTofu steering committee member, CPO at Spacelift + url: https://github.com/marcinwyszynski + image_url: https://github.com/marcinwyszynski.png +--- + +TL;DR having options is good strategy, OpenTofu is your insurance policy and competition makes things great. + + + +Over the last few weeks we received overwhelming support from people all over the world. We have also received criticism for the decisions we've been making. We are very happy to see that people care about the project so deeply that they are willing to share their feelings with us. Please keep doing that! + +There's been one particular line of criticism that questions the very premise of our project, and that's the one I'd like to address in this post. It's the line of criticism that goes like this: "The license change does not affect me, so why should I care?". + +It is not my intention at this point to convince you that the license change affects you now or will affect you in the future. Maybe it does, maybe it doesn't. Maybe it will, maybe it won't. I don't know, you don't know, and only the future will tell. What I will argue though is that the very existence of this project positively affects you, and that's why you should care. + +## Si vis pacem, para bellum or why having options is good + +During my Google days, I worked for a few years as an SRE on tape storage. We operated a significant number of large LTO libraries in many data centers across the world. The best available solution at the time came from Oracle, hands down. Their hardware was great, their software was best in class, their support was always helpful and competent. And yet we would still go to great lengths to support a much, much smaller vendor who offered at least a resemblance of an alternative. + +In similar vein we used multiple vendors for each and every hardware and software component we depended on. This was a crucial step in de-risking our supply chain. This was a pragmatic thing to do on many levels - it protected us from technical failures and changing business strategies, gave us a better position in negotiations, and fostered healthy competition among suppliers we depended on. + +When the news of the HashiCorp license change broke out, some folks were quick to dismiss Terraform entirely and declare their vocal support for alternatives like Pulumi. And don't get me wrong, Pulumi is a great technology, and I support them with all my heart. In fact, Spacelift was the first vendor to offer an integration with Pulumi, way before they built their Cloud offering. + +And while using Pulumi for any new projects is surely a viable alternative, you probably still have thousands upon thousands of lines of Terraform that currently drive the value of your business. Rewriting all of it in Pulumi (or Crossplane, or Winglang - all great products BTW) may be lots of fun for the team but the practical utility of that for your business is limited. + +In similar vein, tapes were never the only offline storage option for Google. We could have used optical (like [Meta did](https://www.pcworld.com/article/443619/facebook-puts-10000-bluray-discs-in-lowpower-storage-system.html)), or slow spinning drives like what we thought Glacier did. But each of these solutions would require building new capabilities in terms of software, human expertise and processes. All of that was an order of magnitude more expensive and disruptive than just supporting multiple vendors' tape libraries. + +OpenTofu promises to be compatible with legacy Terraform, promises better governance and better features than the current commercial offering. But even taking all that aside, you should still support OpenTofu (or some other viable fork if one appears) if you care about your existing investment in the Terraform ecosystem. Because having options is always better than not having options. It's a smart, mature, pragmatic approach. + +## Competition is good + +After our acceptance to the Linux Foundation another line of criticism appeared - that somehow OpenTofu is a "fuck capitalism" project. This could not be farther away from the truth. It's a project supported by a number of companies who often compete with HashiCorp for at least part of their business. Most of us took VC funding at one point or another, we all run sales teams, we all generate revenue and yes, we fiercely compete with one another. While obviously challenging for us, this competition is great for our customers because it keeps us on our toes, makes us innovate all the time, grows the market, drives the prices down and the quality up. + +Even if you are a happy user of commercial HashiCorp products, you might want to give some credit to folks at competing companies who collectively came up with ideas and improvements in technology, process and pricing. Some of these found their way back to Terraform Cloud / Enterprise and vastly improved the user experience. If you - like me - had a chance to use TFC/TFE before the dawn of TACOs (some time around 2020) then you've probably noticed the amazing progress they've made in terms of functionality, product design and overall stability. And I'm happy to take credit for at least some of that. + +The license change that prompted our response now introduced the same element of competition to the CLI layer where HashiCorp previously enjoyed its uncontested status as an obviously privileged (primus inter pares) but otherwise benevolent guardian of the ecosystem. + +The outcome of this is easy to predict for anyone familiar with the basics of the market economy. At the very minimum, the incentive to further tighten the license restrictions is greatly diminished or even entirely removed. In a more optimistic scenario, the legacy product will improve, the support quality will improve, there will be quicker bug fixes, quicker PR reviews and new exciting features will flow from both sides. Suddenly the commercial vendor has a new reason to care, and we're hoping to see an increased level of effort, leading to value add for the entire community. And hopefully for HashiCorp, too, uncomfortable as it may be in the beginning. Fast forward a year or two, I will be happy to take credit for at least some of that. + +And this is why you _should_ care. Regardless of your position (or the lack thereof) on the BSL drama. Regardless of your sympathy for HashiCorp or Spacelift. Regardless of whether you stay or migrate. And regardless of whether you like tofu or not. diff --git a/static/img/blog/tofu-insurance.png b/static/img/blog/tofu-insurance.png new file mode 100644 index 0000000000000000000000000000000000000000..704a79e743ff35e272cc4e7315ff6f4808975ea1 GIT binary patch literal 17642 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 literal 0 HcmV?d00001