Ways to Contribute
Report Issues
Found a bug or have a feature request? Open an issue on GitHub.
Submit Code
Fix bugs, add features, or improve existing functionality with pull requests.
Improve Documentation
Help make our docs clearer and more comprehensive.
Propose Providers
Suggest new speed test provider integrations.
Development Setup
Build from source
For detailed build instructions, see the Building from Source guide.
Running Tests
Our test suite covers core functionality, statistics calculations, and provider integrations.Run all tests
Run tests with verbose output
Run tests for a specific package
Run tests with coverage
Submitting Changes
Make your changes
- Write clear, concise code
- Follow existing code style and conventions
- Add tests for new functionality
- Update documentation as needed
Code Style and Conventions
Go Code Standards
- Follow standard Go formatting:
go fmt ./... - Run
go vet ./...to catch common issues - Use meaningful variable and function names
- Add comments for exported functions and complex logic
- Keep functions focused and concise
Commit Messages
Use conventional commit format:feat:for new featuresfix:for bug fixesdocs:for documentation changestest:for test additions or changesrefactor:for code refactoringchore:for maintenance tasks
Testing Guidelines
- Write table-driven tests when testing multiple cases
- Use descriptive test names that explain what’s being tested
- Test edge cases and error conditions
- Mock external dependencies when appropriate
- Aim for high coverage of critical paths
Feature Priorities
When deciding what to work on, refer to our Roadmap for current priorities:- Phase 1: Foundation hardening (error handling, reliability)
- Phase 2: Multi-provider support (extensibility)
- Phase 3: CLI enhancements (output formats, profiles)
- Phase 4: Ecosystem integration (packaging, distribution)
Reporting Issues
When reporting bugs or requesting features:Bug Report Template
Bug Report Template
Description
Clear description of the issueSteps to Reproduce
What should happenActual Behavior
What actually happensEnvironment
Any other relevant information
Clear description of the issueSteps to Reproduce
- Run command:
unispeedtest -json - Observe error
What should happenActual Behavior
What actually happensEnvironment
- OS: Linux/macOS/Windows
- Go version: 1.21
- CLI version: 1.0.0
Any other relevant information
Feature Request Template
Feature Request Template
Problem
Describe the use case or problem you’re trying to solveProposed Solution
Your suggested approachAlternatives Considered
Other options you’ve thought aboutAdditional Context
Examples, references, or mockups
Describe the use case or problem you’re trying to solveProposed Solution
Your suggested approachAlternatives Considered
Other options you’ve thought aboutAdditional Context
Examples, references, or mockups
Questions and Support
Need Help?
- Check existing GitHub Issues
- Review the documentation
- Open a new issue for questions or discussions
Thank you for contributing! Every contribution, no matter how small, helps make Universal Speedtest CLI better for everyone.