<aside> 💡 This page is shared publicly so all of our contributors have access to the Gruntwork Coding Methodology. Please ensure any edits and comments are clearly explained for our wider audience to properly understand. As this page is linked in all of our Pull Request & Issue templates please consult @Rob Morgan before changing the URL.

</aside>

When working on a new feature, improvement or bug fix, please refer to the following process.

TLDR

Here are the most important points in our coding methodology:

  1. All contributors must open or find an existing issue first before making a contribution.
  2. We standardize on branch names including an issue number. e.g: bug/missing-count-param-434 or feature/new-vpc-endpoint-455.
  3. All of our repos have issue templates for bugs and features.
  4. All of our repos have pull request templates.
  5. We will generate a weekly digest with PRs that may have been overlooked or gone stale.

File a GitHub Issue First

Before writing any code, you will need to file a GitHub issue if one doesn't exist already. We use GitHub issue templates so please select the appropriate type when creating your issue.

Screen Shot 2021-10-25 at 3.56.00 pm.png

Also, ensure you apply the appropriate labels to the issue e.g: in-progress. Note: In the future, we will use a bot that will automatically add a needs-triage label to every new GitHub issue, however, you must manually add it for now. This allows us to prioritize issues accordingly.

Reporting Bugs

Bug fixes include any patches or changes that correct unwanted behavior. If the issue is a bug then you should clearly explain any necessary steps and/or code snippets to reproduce it if possible. For more information read 'Report bugs via GitHub Issues'. The following template is added to repos where there is Terraform/Terragrunt/Packer code.

<!--
Have any questions? Check out the contributing docs at <https://gruntwork.notion.site/Gruntwork-Coding-Methodology-02fdcd6e4b004e818553684760bf691e>,
or ask in this issue and a Gruntwork core maintainer will be happy to help :)
-->

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior including the relevant Terraform/Terragrunt/Packer version number and any code snippets and module inputs you used.

```hcl
// paste code snippets here

Expected behavior A clear and concise description of what you expected to happen.

Nice to have

Additional context Add any other context about the problem here.


## Reporting Features or Enhancements

If the issue is a new feature or improvement then you should clearly explain the intended feature including it's benefits and trade-offs. For more information read '[Request features via GitHub Issues](<https://github.com/gruntwork-io/team-product/blob/master/rfcs/maintenance_tier_contractors.md#request-features-via-github-issues>)'. The following template is added to repos where there is Terraform/Terragrunt/Packer code.

```markdown
<!--
Have any questions? Check out the contributing docs at <https://gruntwork.notion.site/Gruntwork-Coding-Methodology-02fdcd6e4b004e818553684760bf691e>,
or ask in this issue and a Gruntwork core maintainer will be happy to help :)
-->

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.