Thank you for contributing to Gno! This guide will help you get started.
- Documentation - comprehensive documentation for Gno
- Go Package Docs - API reference documentation
- Awesome Gno - curated list of Gno resources
- Discord - join our community for discussions and support
- Go 1.23+
- Unix environment (Linux/macOS/WSL2)
makecommand
git clone https://github.com/gnolang/gno.git
cd gno
make installIf gno and gnokey commands are not found, see Go's official
documentation for configuring your
PATH.
Run all tests:
make testTest specific Gno code:
gno test ./examples/... -vSee the README for project structure overview. Most important directories have their own README explaining their purpose and how to contribute.
Tip: Look at recent commits to understand typical file modifications:
git log --oneline -10- Open as draft first - Start with a draft PR to run initial checks
- Read bot comments - Our bots provide helpful guidance
- Check CI results - We have extensive CI to catch issues early
- Fill out the template - Explain what and why
- Move to ready - Once CI passes and you've self-reviewed
Our CI is designed to help both you and maintainers identify potential side effects of changes. Use it as a guide to improve your PR.
Follow Conventional Commits:
feat(scope): add new featurefix(scope): fix issuedocs(scope): update documentation
Avoid rebasing after opening your PR for review. Maintainers handle the final squash/merge. Add new commits to address feedback instead of force-pushing.
Using merge commits instead of rebase allows reviewers
to better review changes only since their last review.
To disable rebase when using git pull on the repository, run:
git config pull.rebase false
This will be disabled only for the git repository you're currently on.
- Read PHILOSOPHY.md to understand our approach
- Follow Effective Go
- Use existing patterns in the codebase
- Run
make fmtandmake lintbefore committing
For editor configuration and LSP support, see github.com/gnoverse/gnopls.
Before opening an issue:
- Search existing issues
- Include reproduction steps, version info, and logs (see
gno bug)
Your contribution should:
- Solve a real problem
- Include tests
- Update documentation if needed
- Follow existing patterns
Avoid superficial changes aimed at farming airdrops or karma.
See the Community section in our README for Discord, GitHub discussions, and other communication channels.
For more documentation, see the docs folder.