Thank you for investing your time in contributing to this project! Any contribution you make, will make arch-go better for everyone ✨!
Before you continue, here are some important resources:
- To keep the community around arch-go approachable and respectable, please read our Code of Conduct.
- arch-go's Discussions can help you in getting answers to your questions
There are many ways you can contribute to arch-go. Here are some ideas:
- Give this project a star: It may not seem like much, but it really makes a difference. This is something that everyone can do to help. GitHub stars help the project gaining visibility and stand out.
- Join the community: Helping people can be as easy as by just sharing your own experience. You can also help by listening to issues and ideas of other people and offering a different perspective, or providing some related information that might help. Take a look at arch-go's Discussions. Bonus: You get GitHub achievements for answered discussions 😉.
- Help with open issues: There may be many open issues. Some of them may lack necessary information, some may be duplicates of older issues. Most are waiting for being implemented.
- You spot a problem: Search if an issue already exists. If a related issue doesn't exist, please open a new issue using a relevant issue form. You have no obligation to offer a solution or code to fix an issue you open.
Please disclose vulnerabilities by making use of Security Advisories. Do not use GitHub issues for that!
Unless you are fixing a known bug, we strongly recommend discussing it with the core team via a GitHub Issue or in arch-go's Discussions before getting started.
Important: Only PRs with signed commits will be accepted.
The general process is as follows:
Set up your local development environment to contribute to arch-go:
-
Fork, then clone the repository.
> git clone https://github.com/your_github_username/arch-go.git > cd arch-go > git remote add upstream https://github.com/arch-go/arch-go.git > git fetch -p upstream
-
Install required tools:
- Golang - latest version.
- golangci-lint to lint the code.
- go-licenses to ensure all dependencies have allowed licenses.
-
Verify that tests and other checks pass locally.
> git pull > git checkout main > golangci-lint run > go-licenses check --disallowed_types=forbidden,restricted,reciprocal,permissive,unknown --ignore=github.com/hashicorp/hcl . > go test -v -gcflags=all=-l ./...
-
When creating your PR, please follow the guide you'll see in the PR template to streamline the review process.
-
At this point, you're waiting on us to review your changes. We try to respond to issues and pull requests within a few days, and we may suggest some improvements or alternatives. Once your changes are approved, one of the project maintainers will merge them.
After having installed the tools listed above:
-
Create a new feature branch.
> git checkout -b cool_new_feature
-
Make your changes, and verify that all tests and lints still pass.
> golangci-lint run > go-licenses check --disallowed_types=forbidden,restricted,reciprocal,permissive,unknown --ignore=github.com/hashicorp/hcl . > go test -v -gcflags=all=-l ./...
-
When you're satisfied with the change, push it to your fork and make a pull request.
> git push origin cool_new_feature # Open a PR at https://github.com/arch-go/arch-go/compare