Thank you for your interest in contributing to Shout!
- SBCL built with
--fancy(or Roswell/Homebrew SBCL) - GNU Make
- Go 1.26+
- GNU Make
Note: The Go rewrite is the future direction for Shout! New features should target the Go codebase. The Lisp codebase receives security fixes and maintenance only.
- Fork this repository
- Clone your fork:
git clone https://github.com/<your-username>/shout.git cd shout
- Create a feature branch:
git checkout -b my-new-feature
make quicklisp # Set up Quicklisp (uses vendored deps if available)
make libs # Install Lisp dependencies
make shout # Build standalone executable
make test # Run test suite (prove framework)
make coverage # Generate coverage reportRun in development without compiling:
sbcl --script run.lispmake -f Makefile-go build # Build the binary
make -f Makefile-go test # Run fmt + vet + tests with race detection
make -f Makefile-go coverage # Generate coverage reportAll submissions must pass the relevant test suite:
- Lisp:
make test - Go:
make -f Makefile-go test(runsgo fmt+go vet+go test -race)
make -f Makefile-go security # Run gosec + govulncheck + trivy (Go only)- Ensure all tests pass for the codebase you're targeting
- Commit your changes with a clear message describing the why
- Push to your fork:
git push origin my-new-feature - Open a Pull Request
- Keep PRs focused on a single change
- Include tests for new functionality
- Update documentation if behavior changes
- Reference related issues in the PR description
Open a GitHub Issue with:
- Steps to reproduce
- Expected vs actual behavior
- Version information (
shout --versionorGET /info)
Do not open a public issue for security vulnerabilities. See SECURITY.md for responsible disclosure instructions.
By contributing, you agree that your contributions will be licensed under the MIT License.