Thank you for your interest in contributing to Folio! This document covers the workflow and guidelines for contributing.
All development happens on main. There is no long-lived development branch.
- Fork the repository
- Create a feature branch from
main(e.g.,feature/add-xyz,fix/issue-123) - Make your changes
- Open a pull request against
main
Releases are cut by tagging main (e.g., v0.5.0).
- Go 1.25+
qpdf(used in tests):brew install qpdf(macOS) orapt-get install qpdf(Linux)
# Build all packages
make build
# Run tests with race detection
make test
# Check formatting, vet, and test
make check
# Format code
make fmtMake sure your changes pass all CI checks locally:
make checkThis runs formatting checks, go vet, and the full test suite.
- Run
gofmt -s -w .before committing. CI will reject unformatted code. - Follow standard Go conventions and idioms.
- Keep changes focused — one logical change per PR.
- Add tests for new functionality.
Folio is licensed under Apache 2.0 and developed independently. Do not reference, port, or adapt code from other PDF libraries. All contributions must be original work.
Open an issue on GitHub. Include:
- What you were trying to do
- What happened instead
- Minimal reproduction steps (a code snippet or PDF file if applicable)
- Go version and OS
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.