github.com/ava-labs/avalanchego@v1.11.11/CONTRIBUTING.md (about) 1 # How to Contribute to Avalanche 2 3 ## Setup 4 5 To start developing on AvalancheGo, you'll need a few things installed. 6 7 - Golang version >= 1.21.12 8 - gcc 9 - g++ 10 11 ## Issues 12 13 ### Security 14 15 - Do not open up a GitHub issue if it relates to a security vulnerability in AvalancheGo, and instead refer to our [security policy](./SECURITY.md). 16 17 ### Did you fix whitespace, format code, or make a purely cosmetic patch? 18 19 - Changes from the community that are cosmetic in nature and do not add anything substantial to the stability, functionality, or testability of `avalanchego` will generally not be accepted. 20 21 ### Making an Issue 22 23 - Check that the issue you're filing doesn't already exist by searching under [issues](https://github.com/ava-labs/avalanchego/issues). 24 - If you're unable to find an open issue addressing the problem, [open a new one](https://github.com/ava-labs/avalanchego/issues/new/choose). Be sure to include a *title and clear description* with as much relevant information as possible. 25 26 ## Features 27 28 - If you want to start a discussion about the development of a new feature or the modification of an existing one, start a thread under GitHub [discussions](https://github.com/ava-labs/avalanchego/discussions/categories/ideas). 29 - Post a thread about your idea and why it should be added to AvalancheGo. 30 - Don't start working on a pull request until you've received positive feedback from the maintainers. 31 32 ## Pull Request Guidelines 33 34 - Open a new GitHub pull request containing your changes. 35 - Ensure the PR description clearly describes the problem and solution. Include the relevant issue number if applicable. 36 - The PR should be opened against the `master` branch. 37 - If your PR isn't ready to be reviewed just yet, you can open it as a draft to collect early feedback on your changes. 38 - Once the PR is ready for review, mark it as ready-for-review and request review from one of the maintainers. 39 40 ### Autogenerated code 41 42 - Any changes to protobuf message types require that protobuf files are regenerated. 43 44 ```sh 45 ./scripts/protobuf_codegen.sh 46 ``` 47 48 - To add or remove an interface that needs a corresponding mock generated, add it to the mock file [here](./scripts/mocks.mockgen.txt). You can regenerate the mocks by running the following script. 49 50 ```sh 51 ./scripts/mock.gen.sh 52 ``` 53 54 ### Testing 55 56 #### Local 57 58 - Build the avalanchego binary 59 60 ```sh 61 ./scripts/build.sh 62 ``` 63 64 - Run unit tests 65 66 ```sh 67 ./scripts/build_test.sh 68 ``` 69 70 - Run the linter 71 72 ```sh 73 ./scripts/lint.sh 74 ``` 75 76 ### Continuous Integration (CI) 77 78 - Pull requests will generally not be approved or merged unless they pass CI. 79 80 ## Other 81 82 ### Do you have questions about the source code? 83 84 - Ask any question about AvalancheGo under GitHub [discussions](https://github.com/ava-labs/avalanchego/discussions/categories/q-a). 85 86 ### Do you want to contribute to the Avalanche documentation? 87 88 - Please check out the `avalanche-docs` repository [here](https://github.com/ava-labs/avalanche-docs).