We appreciate your interest in contributing to this project! This document establishes the mandatory standards that ensure high-quality contributions and efficient collaboration. By following these guidelines, you help us maintain code quality and project consistency.
All contributors must adhere to our project's code of conduct. We expect professional communication, respectful collaboration, and constructive feedback in all interactions.
Required dependencies:
- Go version must be equal to the one in
go.modor higher; - Git for version control;
- Make for build automation.
All non-trivial changes must be discussed in an issue before implementation. This prevents duplicate work and ensures alignment with project goals.
Required steps:
- Search existing issues to avoid duplicates;
- Create a detailed issue describing your proposed changes;
- Wait for maintainer approval before beginning implementation;
- Reference the issue number in your pull request.
Exception: Minor fixes (typos, documentation corrections) may skip this requirement.
All commits merged into the main branch must strictly follow Conventional Commits v1.0.0. While temporary commits may use alternative formats, conventional commits are strongly recommended throughout development.
Commit scope is optional but encouraged for clarity.
Definition of scope:
- the LCA (Lowest Common Ancestor) of the directories modified in the PR;
- the name of the feature implemented/improved in the PR.
You must use one of the following commit types:
build- Changes related to build system (Dockerfile, build scripts, etc.);chore- Repository maintenance tasks (Makefile changes, code comments, bump of dependencies etc.);ci- CI/CD pipeline modifications;docs- Documentation updates (excluding code comments);feat- New user-facing functionality implementation;fix- Bug resolution (e.g., fixing race conditions in single-node version due to buffer reuse);perf- Performance optimizations (e.g., adding ASCII ToLower array and using it as hot-path);refactor- Code restructuring for improved readability without functionality changes (e.g., refactoring sealing logic);revert- Reverting previous commits (e.g., fixing broken MergeQPRs from previous commit);style- Code style corrections (linter compliance);test- Test additions or modifications.
Good examples:
feat: add `ip_range` function
fix: resolve buffer reuse race condition in single-node mode
docs: update benchmarks results in the documentation
perf(query): optimize ASCII character processing
refactor: improve sealing logic readability
Bad examples:
updated stuff
fix bug
changes
WIP
All Go code must comply with the following style guides in this exact order of priority:
- Google Go Style Guide;
- Google Go Style Decisions;
- Google Go Best Practices;
- Uber Go Style Guide;
- Effective Go.
Code that does not comply with these standards will require revision before acceptance.
All metrics must follow the OpenMetrics standard convention.
Branch names must use kebab-case and strictly follow this format:
{issue-number}-{branch-name}
For branches not associated with any issue, you must use:
0-{branch-name}
Good examples:
123-fix-datarace-in-single-mode
789-update-dependencies
0-fix-typo-in-readme
Bad examples:
feature-branch
my-changes
fix
update
Non-compliant branch names will require revision.
You must classify all issues using one of these types:
- Bug - All bug reports and defects;
- Feature - New feature requests and enhancements;
- Security - Security-related vulnerabilities and concerns;
- Question - General inquiries (will be redirected to GitHub Discussions);
- Blank - All other issue types.
Apply appropriate labels in combination with issue types, for example:
- Code optimization issues: Must use Blank type with
performancelabel; - Documentation fixes: Must use Blank type with
documentationlabel; - Apply additional relevant labels as required for proper categorization.
Good issue descriptions:
- Bug reports: Bug type +
buglabel + detailed reproduction steps; - Performance optimization: Blank type +
performancelabel + benchmarks; - Documentation updates: Blank type +
documentationlabel + specific section reference.
Every pull request must include:
- Appropriate labels corresponding to the type of changes (to group several PRs one can use additional labels e.g.
epic-offloading); - Reference to related issue (e.g., "Closes #123", "Fixes #123");
- Clear description of changes made;
- Test coverage for new functionality (generated automatically);
- Updated documentation when applicable.
Pull request review requirements:
- All automated checks must pass (CI, linting, tests);
- At least two maintainer approvals are required;
- Address all review feedback before merge;
- Squash commits during merge to maintain clean history.
Pull requests that do not meet these standards will require revision.
Look for issues labeled with:
good-first-issue- Beginner-friendly tasks;help-wanted- Community contributions welcome;documentation- Non-code contributions.
Follow these mandatory steps:
- Fork the repository and clone your fork locally;
- Create a new branch following the mandatory naming convention;
- Set up your development environment using the instructions above;
- Implement your changes in strict compliance with the Go style guides;
- Write or update tests as required for your changes;
- Ensure all commits follow the conventional commit format;
- Run all tests locally to verify your changes;
- Submit a pull request with appropriate labels and complete description.
Contributions that do not follow these steps will require revision.
Important
If you are using any kind of AI assistance to contribute to seq-db,
it must be disclosed in the pull request.
If you are using any kind of AI assistance while contributing to seq-db,
this must be disclosed in the pull request, along with the extent to
which AI assistance was used (e.g. docs only vs. code generation).
If PR responses are being generated by an AI, disclose that as well.
As a small exception, trivial tab-completion doesn't need to be disclosed,
so long as it is limited to single keywords or short phrases.
An example disclosure:
This PR was written primarily by Claude Code.
Or a more detailed disclosure:
I consulted ChatGPT to understand the codebase but the solution was fully authored manually by myself.
Failure to disclose this is first and foremost rude to the human operators on the other end of the pull request, but it also makes it difficult to determine how much scrutiny to apply to the contribution.
Please be respectful to maintainers and disclose AI assistance.
This section is adapted from ghostty. Credit goes to the original authors!
We value all contributions and recognize contributors through:
- Acknowledgment in release notes;
- Listing in project credits and README for significant contributions;
Get help and stay connected:
- GitHub Issues - Bug reports and feature requests;
- GitHub Discussions - General questions and community discussions;
- Code Reviews - Technical discussions on pull requests.
For questions regarding contribution requirements:
- Review existing issues and discussions before creating new ones;
- Create a Question-type issue (will be redirected to GitHub Discussions);
- Thoroughly review this contributing guide and all referenced style guides;
- Check the project README for additional context and setup information.
All contributions must meet these standards. Non-compliant submissions will require revision before acceptance.
Helpful links:
- Conventional Commits Specification;
- Go Style Guides;
- How to Write a Git Commit Message;
- GitHub Flow Guide.
Thank you for contributing to our project!