Contributing to Goa
Welcome to the Goa contributor’s guide! This document will help you understand how you can contribute to making Goa better. Whether you’re interested in improving code, documentation, or helping other users, there’s a place for you in our community.
Getting Started
Before diving into contributions, we recommend:
- Joining our Gophers Slack community
- Browsing our GitHub Discussions
- Exploring the examples repository
- Familiarizing yourself with the DSL Reference
Code Contributions
Setting Up Your Development Environment
To contribute code to Goa, you’ll need:
- Go 1.21 or later installed on your system
- A fork of the Goa repository
- A local clone of your fork:
git clone https://github.com/YOUR-USERNAME/goa
After cloning, set up your development environment:
Install dependencies and tools:
make dependThis will:
- Download Go module dependencies
- Install protoc compiler
- Install linting tools
- Install other development dependencies
Run the test suite to verify your setup:
make testRun the linter to ensure code quality:
make lint
The default make all command will run both linting and tests in sequence.
Finding Something to Work On
The best way to start contributing is to:
- Browse our GitHub issues
- Look for issues tagged with
help wantedorgood first issue - Comment on an issue you’d like to work on to avoid duplicate efforts
Development Workflow
When working on a feature or fix:
Create a new branch for your work:
git checkout -b feature/your-featureWrite clear, idiomatic Go code following these guidelines:
- Use standard Go conventions
- Format code with
gofmt - Write comprehensive godoc comments
- Include tests for new functionality
- Keep changes focused and atomic
Before submitting your changes:
- Run
make testto run the test suite - Run
make lintto ensure code quality - Update relevant documentation
- Generate code if required
- Check for breaking changes
- Run
Submitting Your Changes
When your changes are ready:
- Push your changes to your fork
- Submit a Pull Request with:
- A clear, descriptive title
- References to related issues
- A detailed explanation of your changes
- Be responsive to review feedback
Documentation Contributions
Documentation is crucial for Goa’s success. You can contribute to our documentation in several ways:
Website Documentation
To improve the website documentation:
- Fork the goa.design repository
- Set up Hugo following the README instructions
- Make your improvements following these guidelines:
- Use clear, simple language
- Include working, tested code examples
- Keep examples focused and minimal
- Ensure proper formatting and organization
Other Documentation Opportunities
- Add new examples to existing sections
- Create new tutorials
- Improve existing documentation
- Add translations to other languages
- Review and update documentation for accuracy
Community Support
A vibrant community is essential for Goa’s growth. You can contribute by:
- Helping others in the #goa Slack channel
- Answering questions in GitHub Discussions
- Reporting bugs and issues
- Sharing your experiences using Goa
- Writing blog posts or creating content about Goa
Remember that every contribution, whether it’s code, documentation, or community support, is valuable to the Goa project. Thank you for considering contributing to Goa!