In short
Software Engineering Daily: OpenTofu with Cory O’Daniel and Malcolm Matalka
Episode Overview This episode of Software Engineering Daily features discussions with Cory O’Daniel and Malcolm Matalka about OpenTofu, an open-source alternative to Terraform. OpenTofu aims to provide a community-driven and open-source approach to infrastructure as code (IaC), allowing users to define, provision, and manage cloud and on-premises resources.
Key Takeaways
Introduction to OpenTofu
- Concept: OpenTofu is developed as a response to the licensing changes of HashiCorp products, mainly Terraform.
- Objective: To create a truly open-source alternative that is community-driven and not controlled by a single organization.
Background of the Project
- OpenTofu was initiated when several members of the tech community reacted to changes in HashiCorp’s licensing model, leading to discussions among competitors about the need for an open-source solution.
- The collaboration involved multiple organizations, emphasizing community efforts over competition.
Community and Governance
- OpenTofu is organized under a foundation, ensuring that it remains open-source and community-oriented, with a technical oversight committee guiding its development.
- The project relies on community contributions and engagement through a formal Request for Comments (RFC) process for feature development.
Feature Set and Advantages
- Compatibility with Terraform: OpenTofu aims to maintain compatibility with Terraform while also planning for its own unique features.
- Stateful Encryption: A new feature that enhances security by encrypting state and ensuring that usage data remains confidential.
- Dynamic Providers: Allows users to define providers dynamically, supporting easier multi-cloud and hybrid cloud deployments.
- Ease of Adoption: OpenTofu allows users to gradually transition from Terraform by enabling them to use .tofu files that can coexist with .tf files.
Challenges in Adoption of Infrastructure as Code
- Cultural Inertia: Many organizations are accustomed to traditional management methods and resist transitioning to IaC.
- Resource Constraints: Teams often lack the time or resources to implement new tools effectively.
- Complexity of Existing Infrastructure: Organizations with years of accumulated infrastructure face challenges in mapping their existing setups to IaC.
Testing and Debugging Infrastructure Changes
- Importance of rigorous testing beyond just checking if configurations apply correctly; real-world scenarios should be mirrored in testing to avoid outages.
- Emphasis on defining use cases for infrastructure components and using automated testing frameworks to validate changes.
Future of OpenTofu
- The roadmap for OpenTofu is heavily influenced by community feedback, with features and improvements driven by RFC submissions and votes from users.
- Continued development will focus on enhancing compatibility with existing Terraform features and implementing user-requested functionalities.
Conclusion The episode provides a comprehensive overview of OpenTofu, highlighting its origins, community-driven governance, advantages over existing solutions, and the challenges associated with adopting infrastructure as code practices. The hosts, Cory and Malcolm, emphasize the importance of creating an open-source environment for future infrastructure tooling.
---
For further details, you can check the full episode of [OpenTofu with Cory O'Daniel and Malcolm Matalka](https://softwareengineeringdaily.com/2025/05/27/opentofu-with-cory-odaniel-and-malcolm-matalka/).
Written by AI. May contain mistakes. Listen to the episode to check what was said.
Transcript
Automatic transcript. May contain errors.0:00Open Tofu is an open source alternative to Terraform, designed for managing infrastructure as code. It enables users to define, provision, and manage their cloud and on-premises resources using a declarative configuration language. OpenTofu was created to ensure an open and community-driven approach to infrastructure tooling, and it emphasizes compatibility and extensibility for diverse deployment scenarios. Corio Daniel is the CEO of MassDriver, and he's a founding member of OpenTofu. Malcolm Matalka is a co-founder at Terra Team, and he's a founding member of Open Tofu. They join the podcast to talk about the Open Tofu Project.
0:40This episode is hosted by Sean Falconer. Check the show notes for more information on Sean's work and where to find him.
0:59cory and malcolm welcome to the show yeah thanks for having us yeah thank you yeah i was super jealous of both of your setups you got like a lot of like band equipment going on i just got like a bedroom setup not anybody can see this on the audio but if you could see this i'm definitely the person that's lacking in background decor here. I mean, if you want, we prepared an alternate show. We can actually do Stairway to Heaven and just like do a jam sesh if you want. Well, we'll see if things start to get stale, we might have to go that direction. No stairway, denied. All right. Well, so we're talking Open Tofu today.
1:35The project's a little over a year old. Couldn't we just start off with a bit of background on the project in terms of what it is, how it got started, how both of you got involved. Maybe Corey, you want to jump that off? Yeah. So it was a fateful, I think Thursday or Friday morning. I hopped on Reddit to see what people were mad about today. And lo and behold, the license has changed for a number of HashiCorp products. And so it's funny, being in the OpenTofu community, Malcolm and I are buds, despite the fact that we're competitors. I've got friends at Spacelift, despite the fact that we're competitors.
2:08And so I immediately reach out to one of my buddies at Spacelift and I'm like, I sent him the link. I'm like, did you see this? He's like, yeah, I saw this. We're putting together a Google Meet later today. And so, you know, we got like six, seven, eight people got on a call from all the different orgs like day one. And we just kind of talked through like what that meant for each of our businesses, what that meant for the community. And we decided, you know, looking at the landscape of IAC, every single major IAC tool is owned by either a venture backed company or a public company. Right. And so there's none that's actually truly open source, owned by a foundation, not completely being run by one org.
2:48And so we decided to put our efforts into figuring out if it was plausible to do a fork of a project as big as Terraform. And it kind of went on from there. I mean, there's a lot more detail, but that was kind of the early gist of it. Yeah, so that's the early moments. So TerraTeam is a pretty small company. I don't know when was MassDriver founded, Corey? I think 2021, but I swear all the time that space time doesn't work the same for me. I'm just not good with time and dates. I think it was 2021. But I think we're all kind of like the same age in terms of companies, but different sizes, different backing and all that.
3:24And at least from my perspective, what was really wild was everyone just jumped into working together from there. We had, I don't even want to say it was like a shared enemy in a sense, but it was more like a shared positive goal. and that we thought that this should all be open and that's the right choice for people. And we all just got together, worked together, like really no drama or anything like that on our side. It just sort of happened. So like Corey and I met through that. We had like our first podcast date together shortly after that. And it's to the point where I think, you know, I sort of consider Mass Driver and Terra Team sort of sister companies, like you have sister cities.
3:58So he's the Toledo, Ohio to our Toledo, Spain. Nice. I like that analogy. So you get this like, you know, Avengers of IIC together on a meet call, and you all agree that there needs to be essentially like a truly open source version of this. What happens after that? Like, how do you actually go? I mean, there's a ton of companies, ton of project ideas that essentially die at the stage of that, like idea, you know, it takes a lot of execution from there to actually turn it into something. So what happened next? Yeah, I think the thing that happened almost immediately is one org forked Terraform pretty early.
4:33And what was wild is I think a lot of times we talk about star counts and whatnot, and it is definitely just a fluffy number. But what was interesting is as soon as that fork happened, the count people following it started going up pretty significantly, right? And I don't know, are people starring it so they can follow the drama? Or are they starring it because they're interested in the project, right? I feel like if you're upvoting something on Reddit, you're probably there for maybe the drama, see what's going on. but like starring something like you're not going to get like that drama feedback, right?
5:01So a lot of people say like, ah, people are just, we're jumping in early on because they wanted to like see what was going on. Like we got our first piece of drama in the IAC space. Right. And I don't know, to me, it was like, no, these are probably people that are interested in seeing a project like this be open source. Right. I mean, Boozle is not an open source license. And so then it was essentially making the manifesto. We wanted something a little bit more than just some stars. We wanted companies to actually come out and be like, yes, like we will support this. We think this is a good idea.
5:31And, you know, we tossed our names on there kind of first because we wanted to show them that we were in on it. We kind of put, you know, what we were going to try to give to the project. And we just started getting people like literally the amount of people that started showing up and modifying that HTML page on GitHub, like sending pull requests. Like that was our immediate first problem was okay. Like this already is a lot of people to manage just for this one HTML page. Like we do have a feat in front of us, but then it was immediately trying to figure out like, okay, how do we go about this?
6:00How do we get a good lead for the team? Like, what does this actually look like? What's the right foundation for it? And so that was kind of the next steps was kind of taking that from just this idea that had a little bit of a spark and get up actions to like, how do we start to get people actually involved and invested in what we're doing? Yeah. The interest was really palpable too. And not just from individuals, but other companies, Some of them because they use Terraform at that point and really felt it was the right thing to do. And others just because they want the infrastructure world to be more open, more open source.
6:32And they just want to support that. So we had support from pretty much every direction, every angle, every size organization as well. So what is the role of supporting the project entail? And what do you sort of gain from it by supporting it? I'll let you answer first because my answer is very different from everybody else. So I'll let you go first. All right. So the way it's organized at this point is various companies have pledged full-time employees and then they hire those employees. And I think it works a little bit different for each organization, but the rough idea is you are not really a part of that company.
7:11You're sort of getting paid for it, but you're working on Open Tofu. So in that sense, it's just giving money to this organization. and everyone sort of works more with Linux Foundation. As a small organization, our support is less monetary and person time and more about kind of like, almost like marketing, sort of like talking about it, providing feedback. We have customers using it, so we bring that feedback to the devs on there and give them some thoughts on that and how people are using it in the real world. And what we get out of it is just a good tool, a tool that's getting better, a tool that actually responds to what the users are interested in more so than necessarily what a particular organization is interested in?
7:52Yeah, I think from our side, so mine's a little spicier, like MassDriver is not a Terraform cloud competitor, right? And so like a part of this whole change of the license was the FAQ attached to it. And the FAQ is like, it's just a laundry list of this obviously not being thought through. Like when they have to add like a changed timestamp to a single question, like you guys didn't think this one through at all, right? And so one of the cutouts - You're still updating it too, man. I mean, because people are emailing that licensing at HashiCorp and they're getting new questions to ask and people are getting new bills, right?
8:25And so like for us, we actually fell in this tiny little cutout in the busel where if you're using the tool but not a direct competitor to the service, you can continue using it. And so MassDriver competes more with their Waypoint products. We're not a direct competitor to Terraform Cloud. And so we joined a little bit out of spite, honestly. And we've done a bit of writing about this. You can find it on the MassDriver blog. When we saw this happen, hearing that a bit about the community is not giving back. There's a bunch of companies taking from what we've built. It's like, dude, this is open source.
8:57That's the point of the thing. And I've watched videos of the HashiCorp founders talk about this exact thing, like the importance of this being open source and being owned by the community and not by a company. And so to me, this was very obviously, I called it very early. I'm like, they're getting acquired and they're trying to capture IP before the IBM thing hit, pure speculation at the time. And so we joined out of A, this needs to be open source, but B, I felt honestly a little backstabbed. So community isn't just adding something to the repo. Community is, I've sold millions of dollars of Terraform Cloud as a consultant.
9:32I've come into companies and said, this is what you need to use. That's how I've contributed. I've built modules. I've convinced teams that that is the technology to use. I've done my part helping build this thing over the past 10 years. And to hear, no, no, no, no, no. You haven't made a single commit to the Go repo. It's like, that wasn't cool. And so that's kind of why we got involved in it. It was like, this was just a pure passion play for us because we're like, this was not a cool move. And this does need to be open source technology, whether we compete with them or not. Like we want to be a part of this.
10:01And honestly, I kind of saw the end of Terraform as they made that decision. And I think today they're still putting nails in their coffin around this project. So the thing you really have to appreciate about Terraform as well, which is different from the other tools that came in through that license change, is Terraform really lives and dies by the community contribution in terms of providers, modules, tooling around it. You have all this other thing. You really have to think of Terraform more like a language like Python or C. And all these different implementations exist. And C or whatever is not really valuable in that the language exists.
10:39It's valuable in that you can get all these libraries to accomplish a task or that the implementations are robust enough you can write production software. That's really the value is. So Terraform in particular, I think, feels really, really negative on the community that are providing all this other value to make it useful to everyone else in the world beyond just going to this Go code base. Right. Yeah. And sticking with that analogy of programming languages, there hasn't really been a programming language that is a closed source programming language in a long time. Even languages like C Sharp that was historically closed source are now open source because essentially I think everyone recognized that a language alone within its own ecosystem only has a limited essential value because it's really about other people contributing essentially to the greater ecosystem to sort of your point of the community contributions have been made to Terraform historically.
11:33Exactly. So in terms of OpenTofu itself, if I'm interested in investing my time into, I want to do infrastructure as code, how do I think about OpenTofu even outside of the sourcing, but just from a feature perspective versus things like Terraform or CloudFormation or any of the other available options on the market? Yeah. So I mean, as far as investing in it, I think, honestly, when you look at the state of CD report and you see the adoption of all the tools that are out there. Ansible by far is still like the most widely adopted tool, but I think it's for like a different era and different problem that you're trying to solve.
12:10When you look at the things for like configuring and managing cloud resources, Terraform is by far like the leader, right? Now the catch with this is like there's still a lot of companies that haven't even adopted infrastructure as code. And that's a huge like existential problem for all of us, right? Our software, like our data is in their software, Right. And so like thinking of like OpenTofu versus like some of these other tools, like, you know, you got the cloud formations of the world, you got the biceps, which is like the Azure equivalent. I think Google used to have cloud connector, cloud config, and they're doing a lot of Terraform now, like it just generates the Terraform.
12:42Right. I think that what's nice about where Terraform is, is it has kind of become the lingua franca of how you manage all of these APIs at scale. Right. And the thing that kind of sucks about like the cloud formations and the biceps, like they're great technologies if you're 100 % in AWS, but Almost everybody is hybrid cloud today, whether they realize it or not. As soon as you reach out and grab Snowflake, guess what? You're a hybrid cloud. You're running in two places. You need to reproduce environments. You need to reproduce configs. That's where you immediately end up in this place where as a team that may be trying to adopt infrastructure as code, if I lean into a cloud formation, I've backed my future self into a corner already, and I don't even know it yet.
13:21There's very few tools that are out there that allow you to manage any cloud easily. You can make your own providers super easy too. And so you see the Pulumis and the... Oh, it's UpBounds. I always forget UpBounds. Crossplane, right? Also, great tools. Also, both derivatives of the original Terraform providers. And so thinking about some of these cloud-specific tools versus the things that are built on the Terraform provider ecosystem, to me, I'm just like, any of my customers, I'm like, that's a bad choice. It's going to back you into a corner. You need to use Pulumi or Terraform or OpenTofu or UpBounds thing.
13:54I already forgot the name again. And I think that's key for just having a team that's nimble and agile and can support all the things they need to. Now, why open Tofu over the rest is, again, I'm just saying this as a hypothetical. You don't know when an organization is going to be forced to change a license. And this keeps happening again and again and again and again and again in our industry. I'm honestly over it. It's happened with Mongo. It happened with Terraform. Redis. Redis kerfuffle. It just keeps happening and it blows up in the faces of operations people, DevOps platform engineers.
14:24We don't have enough time. We don't have enough budget. And then these license things explode in our face. And so the idea of something that is built on this provider ecosystem that can work with any cloud and can be extended to support any cloud that is not owned by anybody besides the foundation, a technical oversight committee, and like a governance body, like that is the most risk averse decision I think any operations or DevOps engineer can make when they're starting to take that IAC journey. Yeah. Yeah, I think you really can't stress the importance of OpenTofu being part of foundation enough.
14:56Because yes, some people cynically look at it and say, oh, those engineers are being hired by these other providers. But the reality is it's the foundation all that work happens in. And it's the foundation organizing all that. And the foundation has principles and I think even bylaws that it has to go by. So OpenTofu can never become closed source or source available only. It has to stick with its license. I think that is just really valuable given, as Corey said, the prevalence of Terraform style code and OpenTofu. I mean, we talk a lot about people managing their cloud resources, but you can manage your GitHub configuration with it.
15:32You can manage your pager duty configuration with it. So it really covers all of this and you can put all this in one tool and that's super valuable. And knowing you can depend on it in the future in perpetuity is super valuable too. Yeah. And I mean, and also, Corey, to your point, like, by using something, whether it's Terraform or OpenTofu, but OpenTofu, you have the advantage of it's not, you know, going to be company controlled, but you're avoiding that vendor lock-in that you could with the cloud formations of the world, because you might be hole-in on AWS today, but for whatever reason, sometime in the future, you got to go multi-cloud, or, you know, you start doing workloads on Snowflake or something like that, where you are, end up in this sort of hybrid system.
16:11Yeah. Do you think like there could have been a world where the fork of this, you know, you open sourced it, but it just didn't take off. You know, it didn't get the love that it needed to be successful. Like, what do you think you did or happened to sort of avoid that chain of events? I honestly, I think people were just hungry for it. Like, I don't think it's anything we did. I think it was that there was a group of people, not a single org. I think that was the key. And the fact that we're actually seeing progress, right? We got the fork in quick. we'd immediately had to start building up a lot of stuff, right?
16:44Like there was a lot of criticism on Reddit and LinkedIn and whatnot in the early months of like, oh, you guys are forking this, but like, where are you? It's like, well, we're dealing with all the legal fallout of forking something, right? There's not a lot of legal fallout that just hitting that fork button on GitHub until you piss off a bunch of lawyers, right? And then there's legal fallout, right? So it's like we had to, it wasn't just the boosal change. They changed the licensing for the Terraform registry. If you're not using that Terraform user agent anymore, guess what? You're in violation of the Terraform.
17:11If you curl something, you're in violation of the license for the Terraform registry. We had to build a new one, right? So like day one, it's like, okay, we want this thing. We have to build a registry. And I think that right there showed the dedication of the teams that were involved. We said, okay, well, before we can do this thing, which we're going to do, we're going to go build an open source registry for all the modules and providers, right? And that wasn't us just like waving the flag of like, ah, we got our own Terraform. That was us saying, we have to do this work so that this project's even valid in the first place.
17:43And I think just like people seeing that dedication, I think is what got them excited about it and got people to start investing. Now, the other thing that's interesting here is a lot of the early criticism of what we're doing is like, oh, this license change only affects eight to 12 companies. And that was, I don't know if I can cuss on here, but that was a big old load of cow poopy, right? I'm personally friends with multiple people in Fang that have pinned to 1.57 because they're not sure what to do. They're technically a cloud. HashiCorp is getting bought by IBM. That makes it very, very, very complicated as to whether or not they're allowed to use it internally.
18:18almost every single CNCF project started gutting HashiCorp stuff immediately. And so there was not just us doing this, but you were seeing a lot of organizations that weren't affected by the boosal change being affected by the boosal change. And I think the engineers kind of adjacent to that are also seeing as like, oh, this is bigger than what HashiCorp is saying it is. It's not eight to 12 companies. This is actually causing a ripple effect everywhere. I have a lot of feelings about that, so I'll shut up. But I think it was the dedication and kind of seeing these ripple effects across the industry, not just across 12 companies.
18:55Malcolm, do you have anything to add? Yeah, I think, again, I totally agree. It wasn't anything that we did. It was very obvious that as soon as this happened, there was people that were interested in open source solution. And I think HashiCorp kind of just made it worse on themselves too, with the license having an FAQ that kept on changing. And so if you have any litigious company, anyone with serious value at stake, it's just, it's too much unknown there. And then you have someone saying, hey, we're a foundation, it's open, come use us and you don't have to worry about it. That's very compelling for anyone who's just not sure what the future holds.
19:27Yeah. And how does the community help drive which features you get built? So you forked it, you had to work through all these details, you're getting feature to parity, but now it's its own thing, right? So how do you continue to evolve it and how does community get factored into that? Yeah. So the roadmap is, I think, mainly two things. One, it is maintaining that compatibility with Terraform. So our release cadence is a little behind. They'll release 110. Our 110 comes later. We have to do a lot of reverse engineering for anybody who doesn't believe we do reverse engineering. I'll tell you what, we'd be releasing this shit much faster if we weren't.
20:04But unfortunately, we have to, right? I know. It's just like, oh, you guys are just copying shit. It's like, dude, we'd have one 10 out the same day. So it's like, we got to reverse engineer the APIs to get that compatibility in there. Yeah, it's just like a little bit of thought. And then it's also, I think the more important part of the roadmap is the RFC process. And that right there, like that is like the real roadmap of where Open Tofu goes. So it's like, we have this like support that we're going to have for Terraform for the foreseeable future. And then we have our RFC process. And the importance of that is there is stuff in Open Tofu that as a CEO of a company that's in the infrastructure space that I don't think should be in there.
20:40But guess what? Doesn't matter what I think. It matters what the community thinks, right? And like that roadmap being shaped by people opening RFCs, having engagement around it, like that's community, man. Like if somebody opens an RFC and pitches an idea and they don't write a single line of code, I consider them a part of the community. And it's extremely disappointing that HashiCorp doesn't, right? To me, that's it. Like that's the roadmap is like that compatibility, that confidence, that risk aversion of like that it's going to work with what you have today. Cutting it over, we cut 120 customers over by changing a single word in our code base.
21:15Done. Nothing ever broke, right? Like that guarantee right there. Plus what goes in here is what the community wants. That's the roadmap. Like that's what people are after. Yeah. I actually went and talked to the OpenTofu devs before coming on here. saying, hey, you know what, is there any future vision you want me to share or where the project is going? And the answer was just, we do whatever the community wants. So if you want to be involved in that, go and vote on things and go and write RFCs. That's it. How do those get prioritized? Like what is the process essentially for what you have to come up with like your stack rank essentially, because you can't do everything.
21:48How do you know what you're doing? How does that process work? So there's a few paths. One is if something exists already, anyone can vote on it through GitHub. So that way it sort of tracks it's a one-to-one relationship there. There's not a lot of gaming that. And it's sort of a mix of a vote. And then you kind of have to have a developer go in and be like, is this reasonable to do? Is reasonable to do in a time period where we want to release this, that sort of thing. But really voting gets stuff to the top and at least evaluate it as soon as possible. Before that point, though, if you have an idea, you can submit an RFC, which is just a GitHub issue.
22:24And that will get back and forth from some of the community. Martin is amazing. I've submitted two RFCs, I think. And within two days, it's just full of posts from Martin, I think, just going over it and blasting out ideas because he's so full of ideas. And then that goes through a process and once it gets more finalized, it goes into a point where it can start being voted on. But really, yeah, if you're interested in something, go vote on it, comment on it. If you submit a pull request, that is absolutely going to get something going faster because the things that get voted on are what the devs in OpenTofu should directly work on.
Read the full transcript
22:55But if you have an idea and you say, hey, I did the pull request and someone review it, that'll also get it in there fast as well. Okay. And then can you tell me a little bit about stateful encryption? And is that a feature, am I correct, in it being a deviation from Terraform? Was that the first feature that went out that was the net new one? I know there's a lot of them today. Yeah, that came in like the premier release, right? Yeah. And that one's important too, right? Like if you're using any of our tools, right? Like A, it's important to secure, right? Like it might have a password or whatever, but honestly, like if you're using any, like if you're not running, you know, an open source tool yourself for managing your state and your Terraform or OpenTofu runs, and you're using something like M0, Harness, MassDriver, Spacelift, TerraTeam, TerraMate, anybody, you don't want us to know your usage details of the cloud, right?
23:49Like people are always worried about the passwordness, but like the ability to sell the usage data and the information behind the scenes, like encrypting that is more than just encrypting some secrets. Like it's a really important one. That was one that sat stagnant and open for years. And there was excuse after excuse as to why it couldn't come to be. And it's like, well, it was pretty easy. I mean, for eight companies that never contributed to anything, like we got it out pretty quickly and it's pretty resilient, right? And so it's like, it wasn't as hard as it was made out to be or impossible to integrate into systems that are managing state like it was made out to be.
24:22Just do you want that data visible or not? I feel like was like the real question. And somebody was like, yes, we want to be able to see it. Right? So that was one of the first ones. It's an awesome feature. It's very easy to use. It's driven by a variable so you can pass in that key for encryption. There's a lot of different mechanisms for decrypting and rotating keys and whatnot. So I'd say if you're flipping to OpenTofu today, it's easy to just like throw in a GitHub action for a plan and like see that it's all working. Now, the one thing, the one little bit of lock-in that you'll get is as soon as you bite on that security.
24:55If you want to go back to Terraform, guess what? Your state's in the air. In terms of the encryption key management, is that done through like a cloud KMS? Yeah, there's like a whole, geez, I can't remember exactly how many drivers there are behind the scenes, but there are a whole host of them. Yeah, there's three major ones right now. One of them is just you present the key to open Tofu, however you got it on your own, and it does it there. And then there's GCP and AWS ones as well. Okay, so I can bring sort of my own KMS if I want, but I can also do your line. And also you can go back and forth between an encrypted state and an unencrypted state.
25:34So if you decide, you know, the key management is kind of not what you want right now, or you're just not, it's not important enough to you, you can always go back after you've played with it a little while. That's one thing that's really great about the OpenTofu mentality is there's also, we have migration docs and then switching out is easy enough as well. So there's never this point where you switch over to OpenTofu and then you're stuck with it. You mentioned this earlier, Corey, the OpenTofu registry and how that was one of the first big challenges of the fork. Can you talk about the process to essentially build the registry, how you went about discovering versioning modules and have those providers within the registry?
26:11Yeah. So, I mean, the module spec is pretty well defined. Like you have to go around the Terraform site a bit to like figure out how it works. So under the hood, it's mostly just redirects. So like mostly of what you see in the Terraform registry is just mappings back to like a Git repo. Right. And so we just kind of had to like go through Terraform, figure out how that worked. But then it was like, okay, well, how are we going to host this thing? Like who's going to run it? Right. And that was kind of another concern is like we didn't want necessarily like, oh, you know, mass driver will dedicate the infrastructure and own the registry.
26:40I mean, I would have loved that as a business owner, right? It's a great little thing to get on the bottom of the site and a bunch of information to get. But at the same time, like we don't want, again, any company having information about like the download rates of these modules and providers, right? So it was important that A, that registry was open source so people can see how it works and B, that we get it hosted by somebody besides us. And so I think that was like, that may have been like our big first partnership. I'm throwing that in there quotes with, I don't want to say the wrong name, Cloudflare, right?
27:09Yeah, sorry. I mix up them and one other company at Fastly all the time. But I think that was the first big partnership, right? And it's funny to look at it, but the amount of thought and passion for the community and how they will perceive it goes into this. And I think this is one of our big problems is we haven't done a great job of talking about that passion that we have for building that trust, right? It would have been extremely easy for any of us to have made just a registry and thrown some compute at it. I've got more AWS credits than I can deal with. MassDriver could have thrown credits at it.
27:41But the importance of that being in the public eye and being owned by the foundation and hosted by somebody that's not one of us was also key. Like that is a part of the decision making process. And I think that's one of the things that builds this trust, even though we don't, you know, make a stink about it. But I honestly think we, again, like, I think that's where we haven't done a great job is like talking about like thinking through that process and making sure that it works for everyone outside of the organizations that are involved. Yeah, definitely. I mean, independence is so important for OpenTofu.
28:11And I don't think we do as good of a job as we should to show it's really, yes, there's money coming from various companies to pay for these employees, but it's really independent in every other way. In terms of, you know, populating and keeping the registry up to date, did you run into any like rate limit challenges with the GitHub APIs? I don't think so. The registry isn't, it's not like something that is updated super fast or like, like it's not like Google indexing the web all the time. It's really more of a batch process. And the, the GitHub rate limits are actually pretty high as long as you identify yourself.
28:47You're continuing to use HashiCorp's configuration language. Like, are there considerations or future plans around enhancing or evolving HCL specifically for OpenDufu? I'm not positive. I think that would be, I mean, honestly, like somebody on the Open Tofu team submitting PRs to HCL, I could see that like if we need something or if we find a bug. And I would honestly hope that in the idea of community that they would accept that. But I mean, I don't think that we're going to diverge from HCL. That's maintained its license. I think, you know, changing that is a very nuclear option. So I think HCL and the providers are kind of both fall under that umbrella of like, if those licenses are changed, like the ripple effects there are catastrophic.
29:34So I think we can just depend on that for the foreseeable future. And I mean, if we have to make changes to HCL, we'll obviously submit PRs to it. And hopefully that goes through. Yeah. And I think if you look at the, so if you go to the OpenTofu on GitHub, you can see the project, you can see what's planned for the various releases. They're usually like one or two out. And if you look at what's limiting in the existing Terraform world and now Tofu, it's really not language specific. It's functionality. So a big one coming out now is dynamic providers, which let you say, hey, I want AWS across all of these different regions.
30:13I don't want to make a new provider for each one. I just want to like reference it like you would a dictionary in Python or something like that. And all of that fits well within HCL. It's really about the semantics of how you interpret that HCL and then how you turn that into an actual plan and all that. So really, I think most people are content with what HCL can do and just getting more functionality in there. In terms of some of the deviations that you've made from the Terraform, we talked about the stateful encryptions, but what are some of the other changes that you've made? Yeah, I think one of the things, so there's a bunch, I can go through a couple of them.
30:49But one of the things I think is that I want to point out first before talking about the rest of them is another one of these ones that's important, right? So as Malcolm mentioned, not only are there guides for how to get into OpenTofu, but how to get out if it's not the right thing for you. And so one of the things we introduced fairly early on is the.tofu extension, with the idea being that Terraform will only touch a.tf file. And so if you want to start using OpenTofu specific functionality, you can put it in a.tofu file. OpenTofu reads all the files, right? And so you can actually have your plans running side by side and Terraform will only see the Terraform stuff.
31:22Tofu will see the entire thing. Right. But that's also important for adoption. It's important for like easing that onboarding story of an ops team that's just overwhelmed with a million things to do. Like I can start trying out Open Tofu without just absolutely blowing up all my pipelines and having to do all this painful stuff. Right. So it's just like another place where it's like we don't want to make this hard for anybody to adopt. because we know that these teams already have enough stuff on their plate. But the stateful encryption, obviously super cool. We talked about provider-defined functions, but one of the other things I think is so rad, I'm a big, big, big, big, big fan of using Terraform, OpenSofu now, obviously, as building operational abstractions for my engineering partners.
32:07When you look at the cloud, every API is like half ops, half dev. right? Like I don't like teams having to conflate these things in their heads. And so I like building really abstractful modules. And so one of the things that landed was we have a Go and a Lua provider where you can actually just toss in a main.go or a Lua file, and you can actually write Go that will now execute as a part of your Open Tofu module executing, which allows you to start doing some really interesting expressions, right? So like build out logic. So you can actually codify like your processes in, right? And so I'm already seeing things like we're like, okay, based off of the types of data and like the team, it'll hit an API and pull that team's cost center, right?
32:52Like something dumb, something silly, but like who remembers their cost center ID and remembers to enter it, right? And like being able to kind of hide that away from engineers where it's just like, you just get what you want and like your cost center stuff's going to be in there. We don't have to worry about like associating costs for like, you know, bigger projects. It's done for you. you kind of being able to get to do that because you have this like richer programming language that can sit behind the scenes, but still in this declarative model. So that was one that I, like when I saw it, I was like, oh my gosh, like I've been, like, if you see my Terraform code, I just have local blocks.
33:23They're just huge. There's just loops and maps and all this logic that I could try to build into locals. And now I'm just like, oh, I can just write, I can just write some Go for my complex expressions. So that was one that I was stoked about. Malcolm Go, I don't know what Malcolm's favorite one is, but like that was, I was dancing the day that landed. So my favorite is actually ridiculously mundane, but I like it because I think it opens up a lot more automated functionality. And that is early variable evaluation. And one of the things that lets you do is say you're referencing a module. You used to have to hard code the entire path to the module in your HCL.
34:00But now you can make that a variable, possibly environment variable or environment file, which has a very simple syntax and reference that variable in the module source path. So what's that let you do? Well, now you can do very easily more depend about type things where it's really easy to automatically update these versions now. So if your organization chain updates a module, you can feed it through your entire organization automatically with very little logic and like very little smarts associated with it. And so I really like that one. And it's one of those ones too, that was just on the HashiCorp issue tracker forever.
34:35I was like, no, no, no, no, no, no, no, no, no. And then OpenTofu was like, oh, it's done. Here it is. Have fun. Yeah. I mean, a lot of these things, like they're fairly, like they sound on the surface, like fairly simple, but they make people's lives so much better. You know, you're, you're removing sort of that death by a thousand cuts situations that you tend to run into with, you know, some of this configuration. In terms of like using infrastructure as code, you know, OpenTofu or otherwise, like how do you go about, you know, teams typically go about debugging and error handling like infrastructure changes?
35:09It's hard. There's not great tooling for it across the board. Right. And so, you know, many teams, they have a staging version and they're prod and they'll just like deploy it and like, but like the thing that sucks about all infrastructure is none of your configuration matters. if the apps that are running on top of it don't work, right? And so you can stand something up and be like, oh, OpenTofu, apply was green. I can see the thing in the cloud and it's healthy. But like, until you put an app on it and then verify like the functionality that you're trying to get to happen, like none of that matters, right?
35:42And so there's like levels to testing. It's like, hey, is the code, you know, validate? Is the code valid, right? Does it apply, right? A lot of people that are newer to infrastructure and cloud sometimes think, oh, it applied. Everything is good. But it's like, that doesn't mean you didn't have an outage for 45 minutes while it was applying. Right. And so like that stuff is just very hard to catch. And so, you know, patterns that we do is we like internally master, like how we do our own is we define use cases for each piece of infrastructure, like what it's going to do. And we use, there's Terraform and OpenTofu test now that'll like test your code, but the Terragrunt team made TerraTest, right?
36:20And it's an actual, you write all your tests and go, but you can stand up other things besides your infrastructure. So you can run it. It'll do your Terraform apply. And so we'll do things like, hey, we made this queue and we're actually going to push data into it with TerraTest and then pull data off of it just to make sure that like, is the IAM right? Is the IAM right? You make a queue all day long, right? But if the IAM isn't what you expect it to be, that app's going to fail when it goes in the prod, right? So we do a lot of rigorous testing from the developer view of that infrastructure world.
36:54It's more rigorous, but we don't have a lot of outages. And we kind of build libraries for all the different things that we want to do. So it makes it real nice and reusable. I think that's one of the best ways to think about it. I mean, the number one cause of outages today is configuration changes. So maybe we should be thinking a little bit higher than just like, did it apply green? Did it exit zero? And how does it function from the intended use case? And we use those use cases as drivers for our test suite. So we'll say like, hey, like, you know, we support Postgres in three versions internally.
37:26We have, you know, a development version, which is like a single zone, you know, fairly straightforward. We have development serverless if we're spinning up something for like a preview environment. And then we have like a production config that does like our multi-zone and stuff like that. And our test for our production one will nuke a zone. Like it'll nuke one of the instances in one of the zones to make sure that we're still able to read and write. Right. And like that right there, like the developer view of the world, like the operational day two of the world is the test that I want to assert, not simply that did it make a Postgres?
37:57Like that doesn't matter. Like, can I use a Postgres? Does it have the resiliency that as an ops person I'm trying to guarantee? And so you have to reach outside of pretty much any IAC tool to do that. Yeah, I think you really have to appreciate one thing about infrastructure as well, is that it corresponds to a physical thing in the world. One of those physical things can only exist at one point in time. And I know it's very convenient for us to think about infrastructure as code like software, but software, we generate an artifact and we can run tests against it. And if those tests pass, we can deploy it to our infrastructure and it'll act the same in those two cases.
38:37But dev infrastructure will never be and can never be the same thing as your prod infrastructure. So even if everything works great in dev, you don't really know if it works in prod. So if you are doing tests, just be aware of that and understand what you're going to get out of doing tests in dev and what places they will or won't apply to in prod. So it's just a slightly different mentality in how all of that works. Yeah. I think a really good, like I'll spare everyone the details, but like a really good example of what he just said is I have a buddy who works for a big public company and they have hit the IP limits of Kubernetes in AWS.
39:18You can't test that, right? Like that is a very hard thing to test in an environment, right? So like the reality is like, eh, when you get to prod, like prod's prod baby. Like it's prod's going to do it, prod's going to do it. Like, so we can do it like as good as possible to test it. but like you're never going to get prod. Prod is the one and only source of truth. No matter what anybody tells you, like prod is the source of truth. Like what's happening there is happening there. Like to get an exact replica of what you have requires you standing up all the services and getting the traffic, right?
39:47Like you might have something fail because of the amount of ingress that you have. That stuff's kind of hard to test. Yeah. Well, given that, you know, the number one reason for outage is configuration issues. And I think like something like 70 % of data breaches or leakage of information is due to some sort of misconfiguration that led to overprivileged access. And I think, Corey, you mentioned this earlier that most organizations still today are not using these infrastructure as code approaches. Why is that? What is the blocker to adoption of this approach, given that it can help reduce the risk of some of these challenges for organizations?
40:25I want to make sure Malcolm has time to answer this because I think that we have, I think we have very different user bases. I think we both kind of very interesting opinions here. So, you know, like MassDriver, like kind of where we sit in this space, like we have a lot of people that use the platform that like bring their own IAC, but a whole bulk of our customers do not have infrastructure as code. So I actually get to talk to these folks that are like starting to make that decision. And they're like, hey, which IAC tool should I use? Like when I start using MassDriver, the biggest thing is time and time again is how, little as an industry, we invest in our operations teams and our DevOps teams and our platform teams, I think are getting a bit more love.
41:06But like when we don't invest in those teams, like they are, any ops person on that, like that's listening to this, like you are the force multiplier in your business. It's just like waiting to happen. And when you invest in those teams, like that's where you get that 10X engineer, right? Like if you think about software and infrastructure as, a manufacturing line and the products at the end, like ops and DevOps is at the beginning. And if that's shitty and not working well, the whole thing's wrecked. And if that's performance tuned, the world is amazing. But when we don't invest in these teams, they don't have the time to start looking at tools.
41:42They're literally just dealing with fires all day, right? Like I look at DevOps, I know Malcolm's there too, because I see him on like the same threads, but like our DevOps, our Terraform, like our Kubernetes, is like you see these people like that are like discussing like what's going on in their business and like it's harrowing to read it's like oh my god like you forget how good you have it sometimes when you're at org with like well-established devops principles but many of these companies just like their ops teams are just underwater they don't have the time and so it's like hey why aren't you guys doing infrastructure as code it's like dude i work 60 hours a week i hate my job like i can't work another 80 hours a week but that's the thing that sucks is if you put in that little bit of effort into the automation and reproducibility, it pays dividends.
42:22So I think it's all about just finding the time. And I think that one thing that we've been brutally bad at as an industry and from the ops to DevOps transition is marketing what we do within a business. I remember one of my first startups, it was a video streaming platform in 2008. Imagine that. 2008, video streaming platform in the browser. And our CEO walked by one day and was like, I don't understand what you do here. And I was like, you know how this thing has never been down? That's what I do. Right. And like, that was the moment that I realized I was like, I work my ass off. Like we had, I remember that very early 2000s, we had 5 ,000 people watching a video stream of the Mythbusters like on our platform and the thing stayed up.
43:08And I was just like, ah, I didn't realize that we were that good. I thought this thing was going to fall apart. And this person that was literally two seats away from me was like, I don't know what you do. And I never talked about it. And I think that on the teams, we are these people that maybe might be a little less social. We're definitely less boastful, especially if we're a front-end engineer. But sorry, guys. I love you guys too. But I think we don't do enough to show the importance and the impact that we have in businesses. And that's why a lot of these teams kind of get loaded with all this debt.
43:37They get loaded with so much like death by a thousand cuts all day long. They just don't get the time to embrace that original idea of DevOps, that Kaizen, that continuous improvement. And if you don't have the time to do it, you just don't have the time to do it. But that's where you got to find it. It's like you got to find that small project, that little thing that has a big impact in your business, whatever it is, that's going to take some of the stuff off of your plate so you have the time to start investing in it. And that's what we see almost every single time that somebody comes to a mass driver and they're like, we haven't picked an IAC tool yet.
44:07We haven't started doing IAC. Like, how do we even get started? I think the other thing for them that is also a part of this like death by a thousand cuts is, okay, we're going to adopt IAC. Well, guess what? The business has been around for eight years and we have about 40 ,000 things in the cloud. So how do we even like go backwards? Right? Like that itself is harrowing, right? And I think the right answer is don't just pause on that. Like, because that is a huge endeavor and it is painful. What do you have coming up next that you can start to use IAC for that's net new? Great. Like now you can reproduce it, right?
44:41Now you can understand it, right? That's going to buy you time, right? Let's do that again. And then when we get to the point where we got a really good established baseline for how our business works around infrastructure as code, now let's go look at the big bag of stuff that we got to bring in. But looking at everything you have today and saying, that's how we're going to start, that's a death knell. Like you're doomed. Yeah. Yeah, I mean, I think Ops probably needs to hire a new PR firm. But I mean, the big challenge, I think, of a lot of the back-end work that happens is it's always easier for organizations to justify clearly customer-facing applications, right?
45:17If it's front-end, I don't need to understand the engineering work that goes into it to see that, okay, this is actually touching one of my customers. But I have no idea about the magic black box that's happening behind the scenes and who does what there and why it's important and stuff like that. And it's really on, I think, engineering leaders in the organization to make those business cases. But anyway, Malcolm, over to you. What are your thoughts on this? Yeah, so our user base, I would say we tend to work a lot with people who are somewhat established but deciding to transition into IAC or they're up and coming and maybe they just created an ops team or something like that.
45:55And a lot of what we find is it's really just this cultural inertia of I'm used to clicking around the UI or we want to get more of a structured workflow. But half of our team is just doesn't want to get their credentials revoked and they'll be really upset about it if they do. So we got to ease into it. So a lot of us, what we see is just definitely cultural and not even just even ones with buy in from from above. just getting the rest of the team in on it. And especially in the larger organizations that decided to adopt IAC, they can have groups in just other countries and on different time zones.
46:35And once you revoke those credentials and someone's really upset, you don't want to like deal with that in the morning or you maybe have like a language barrier, a cultural barrier that it's hard to explain what's going on there. So it's definitely, it's like fractal, right? Like we're talking about the Reddit posts and you have some people coming in just saying, hey, I'm trying to do this, but I can't figure out how to do it. So if you're converting to IAC and you don't have someone who can whip up those examples really quick when someone is, for example, trying to set up their networking layer, the person's just going to get frustrated and click around and be like, fine, it's done.
47:11I figured I didn't have, I did in half a day and their manager's like, great, that's awesome. Rather than spending three days working through how all the providers work. And it just takes a lot of time. That's why I think what Corey said about just start the new things and how you want it to be and go from there is absolutely fantastic advice for anyone doing this. It's just too big of an elephant if you look at all the things you have right now. Yeah, you don't have to boil the ocean. You can, you know, crawl, walk, run, essentially. Well, Corey, Malcolm, this was awesome. Thanks so much for being here.
47:40Yeah, we appreciate it. Yeah, thank you. It was awesome. Cheers.
47:50Thank you.
From the publisher
OpenTofu is an open-source alternative to Terraform, designed for managing infrastructure as code. It enables users to define, provision, and manage their cloud and on-premises resources using a declarative configuration language. OpenTofu was created to ensure an open and community-driven approach to infrastructure tooling, and it emphasizes compatibility and extensibility for diverse deployment scenarios. Cory
The post OpenTofu with Cory O’Daniel and Malcolm Matalka appeared first on Software Engineering Daily.
