Thank you for your interest in contributing to Sablier! This guide will help you get started with contributing to the project.
- Contributing to Sablier
- Navigate to the Sablier repository
- Click the Fork button in the top-right corner
- This creates a copy of the repository under your GitHub account
git clone https://github.com/YOUR_USERNAME/sablier.git
cd sablierCreate a new branch for your feature or bug fix:
git checkout -b my-new-featureWe use Conventional Commits for commit messages. This leads to more readable messages and helps with automated versioning and changelog generation.
Format:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, missing semicolons, etc.)refactor: Code refactoring without changing functionalityperf: Performance improvementstest: Adding or updating testsbuild: Changes to build system or dependenciesci: Changes to CI configurationchore: Other changes that don't modify src or test files
Examples:
git commit -m "feat(provider): add Podman support"
git commit -m "fix(api): resolve race condition in session management"
git commit -m "docs: update installation guide with new Docker image"
git commit -m "test(kubernetes): add integration tests for StatefulSets"Breaking Changes:
For breaking changes, add ! after the type or add BREAKING CHANGE: in the footer:
git commit -m "feat(api)!: remove deprecated /v1/start endpoint"
# or
git commit -m "feat(api): update authentication mechanism
BREAKING CHANGE: API now requires API key in header instead of query parameter"Before building the project, use mise to prepare the development environment:
- Install
mise(if not already installed): https://mise.jdx.dev/getting-started.html - Run
mise installin the project root to install all required tools from the project's.tool-versions/miseconfiguration.
make buildThis creates a binary in the current directory (e.g., sablier_draft_linux-amd64).
# Linux
GOOS=linux GOARCH=amd64 make build
# macOS
GOOS=darwin GOARCH=amd64 make build
# Windows
GOOS=windows GOARCH=amd64 make build# Build and run
make build
./sablier start --help
# Or run directly
go run cmd/sablier/sablier.go start --provider.name=dockermake dockermake testOr using Go directly:
go test ./...make lintSome tests use Testcontainers to spin up real containers (Docker, Kubernetes, etc.). These tests are longer-running and require Docker to be installed and running.
By default, testcontainer tests are included in the regular test suite:
make testIf you want to skip testcontainer tests during development:
go test -short ./...Mark long-running tests with:
func TestMyLongRunningTest(t *testing.T) {
if testing.Short() {
t.Skip("Skipping long-running test")
}
// Test code...
}make fmt
make test
make lint-
Push your branch:
git push origin my-new-feature
-
Open a Pull Request on GitHub:
- Go to your fork on GitHub
- Click "Compare & pull request"
- Fill in the PR template with:
- Description of changes
- Related issues (if any)
- Testing done
- Screenshots (if UI changes)
-
PR Title: Follow conventional commit format:
feat(provider): add Podman support fix(api): resolve session race condition -
Address review comments:
- Make requested changes
- Push additional commits
- Re-request review when ready
Your changes will be included in the next release. Thank you for contributing! 🎉
- Discord: Join our Discord server for discussions and support
- Issues: Check existing issues or create a new one
- Documentation: Read the full documentation
Please note that this project is released with a Code of Conduct. By participating in this project you agree to abide by its terms.
By contributing to Sablier, you agree that your contributions will be licensed under the AGPL-3.0 License.
Thank you for contributing to Sablier! 🚀