Terraform growth has been explosive. It is exciting to see the community grow, embrace, and extend Terraform in ways we never imagined.
At the time of writing, Terraform ships with support for almost 500 resources across 30 providers. Because Terraform has always had a high bar for testing, each of these resources and providers is well tested. Terraform in total has thousands of unit tests and over 500 black box acceptance tests.
With this growth, we've been able to maintain a positive pulse ratio while averaging multiple releases per month. Despite this, we believe we can do better. We believe we can merge PRs more quickly, we can release more often, and we can dedicate more time to core improvements. For weeks, the Terraform team and HashiCorp have planned a set of improvements towards these goals and today we're announcing those changes.
Detailed Contribution Guidelines
Terraform has always been a very welcoming community. If you submit a PR that isn't quite complete, a Terraform core member will complete it and merge in the feature.
As Terraform has grown, this process has grown too time consuming. We still want to merge every PR, even if that means that we have to make minor modifications, but this doesn't scale well with the maintainers (for both full time HashiCorp employees and community members with commit access).
Instead, we've now documented detailed contribution guidelines. These guidelines go into detail for each of the most common Terraform contributions and what we require to merge the PR quickly and easily.
If you meet all the guidelines properly, we can very quickly merge the enhancement or bug fix to Terraform. However, these are still guidelines. We don't want to push anyone away from contributing to Terraform. If you have an incomplete PR you want to create, you can still open it. If all the guidelines aren't met, merging the PR will have to wait until a core member or another member of the community has time to complete it.
The contribution guidelines contain a detailed guide for how to do each step. We don't tell you "this needs tests" without telling you how to write and run tests. We've tried to make this as easy as possible for even beginners to get started with.
It is important to note that this is always the process we've taken. If you create a perfect PR, it has always been merged very quickly. We're now being more transparent and detailed about what constitutes a "perfect PR".
Faster Issue/PR Response
With the contribution guidelines in place, we can now respond to every PR more quickly. We've done a poor job of leaving many PRs silent when they're good ideas but not quite ready to be merged.
We can now reference specific parts of the contribution guidelines and explain why we haven't merged the PR yet. If the contributor or another community member addresses what is missing, we can merge the PR very quickly. If not, then we'll try to get to it when we have time, but this could potentially be many months.
As PRs get handled more quickly, this will give our core maintainers more time to dedicate to triaging, reproducing, and fixing issues. Therefore, we expect issue response time to also improve.
HashiCorp vs. Community Providers
We're very proud of Terraform's growth to over 30 providers. It allows Terraform to be used with more systems directly out of the box.