First off, thank you for considering contributing to our Go Set implementation! This is a teaching and demonstration project that aims to help others understand both set theory and Go programming concepts.
Following these guidelines helps to communicate that you respect the time of the developers maintaining and developing this open source project. In return, we'll reciprocate that respect by addressing your issues, assessing changes, and helping you finalize your pull requests.
We love contributions that:
- Fix bugs in the implementation
- Improve performance of existing operations
- Add new set operations (with tests!)
- Improve documentation and examples
- Add educational content connecting implementation to set theory
- Fix typos or improve code readability
- Add more test cases
- Implementation of infinite sets (this package focuses on finite sets)
- Breaking changes to the existing API without discussion
- Changes that don't maintain our current performance characteristics
- Features that would be better suited as a separate package
- Create issues for any major changes and enhancements before implementing them
- Keep pull requests focused on a single change
- Write and update tests for all changes
- Maintain Go 1.23+ compatibility
- Follow existing code style and conventions
- Be welcoming to newcomers and encourage diverse contributions
- Keep performance characteristics in mind
- Ensure all tests pass:
go test ./... - Maintain 100% test coverage for new code
- Run
go fmtbefore committing - Address all
go vetwarnings - Pass all linter checks (
golangci-lint run) - Update documentation for any changed functionality
Unsure where to begin? Here are some ways to start:
- Beginner issues - Look for issues tagged with
good-first-issue - Documentation - Help improve our godoc comments or examples
- Tests - Add test cases for edge scenarios
- Bug fixes - Look for issues tagged with
bug
Never contributed to open source before? Check out:
- Make your first open source contribution in four easy steps
- Finding ways to contribute to open source on GitHub
- Fork the repository
- Clone your fork:
git clone https://github.com/your-username/set.git cd set
- Add upstream remote:
git remote add upstream https://github.com/Coders-Compass/set.git
- Create a branch:
git checkout -b my-feature
You might want to use SSH urls if you have your SSH key added to GitHub.
Small contributions (typo fixes, small documentation updates) can be submitted directly through GitHub's UI. For code changes, please submit a pull request.
Caution
If you find a security vulnerability, do NOT open an issue. Email security@coderscompass.org instead.
When filing an issue, make sure to answer these questions:
- What version of Go are you using (
go version)? - What version of our package are you using?
- What did you do?
- What did you expect to see?
- What did you see instead?
Open an issue that:
- Clearly describes the feature
- Explains why it would be valuable
- Outlines possible implementation approaches
- Considers performance implications
- Describes how it fits with set theory concepts
The core team reviews Pull Requests on a regular basis. You can expect:
- Initial response within 3 business days
- Detailed review within a week
- Follow-up reviews as needed
After feedback has been given, we expect responses within two weeks. After two weeks of inactivity, we may close the PR.
- Follow standard Go conventions
- Use meaningful variable names
- Keep functions focused and small
- Comment complex algorithms
- Use godoc format for package documentation
Format:
type(scope): description
[optional body]
[optional footer]
Types:
- feat: New feature
- fix: Bug fix
- docs: Documentation
- test: Adding tests
- perf: Performance improvements
- refactor: Code change that neither fixes a bug nor adds a feature
bug: Something isn't workingenhancement: New feature or requestgood-first-issue: Good for newcomershelp-wanted: Extra attention is neededperformance: Performance-related issuesdocumentation: Documentation improvements