Thank you for your interest in contributing. This document explains how to participate and what you agree to by doing so.
This project is licensed under AGPL v3 and is also offered under a commercial license for organizations that cannot accept AGPL obligations. This dual-licensing model is how the project is sustained.
For dual licensing to remain legally valid, the copyright holder must own — or hold a broad enough license over — every line in the codebase, including contributions. That is why a CLA with copyright assignment is required here, rather than the simpler "contributions are received under the same AGPL terms" approach. This is the same pattern used by MariaDB, Qt, and other projects that offer open source + commercial tiers.
By submitting a pull request, issue, or any other contribution to this repository, you agree to the following terms:
-
Copyright assignment. You assign to Nima Shafie all right, title, and interest — including all intellectual property rights — in and to your contribution. You retain no ownership over contributions once submitted.
-
Patent grant. You grant to Nima Shafie a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer contributions that are covered by any patents you own or control.
-
Original work. You represent that each contribution is your original creation and that you have the right to grant the above rights.
-
No third-party rights. You confirm that your contribution does not include material that is subject to a third-party license incompatible with the project's license.
-
No obligation to accept. The maintainer retains full discretion to accept, reject, or modify any contribution.
Your contribution, once accepted, will be available to all users under the AGPL v3 (see LICENSE). Commercial licensees also benefit — this is expected and by design.
Open an issue using the Bug Report template. Include:
- Platform (Windows 11 / RHEL 8 / RHEL 9) and shell (Git Bash / Bash)
- Exact commands run and full terminal output
- Contents of any relevant
INSTALL_RECEIPT.txtfiles
Open an issue using the Feature Request template.
- Fork the repository and create a topic branch from
main. - Make your changes. Follow the conventions below.
- Syntax-check all shell scripts:
bash -n <script.sh> && echo OK - Run the smoke tests:
bash tests/run-tests.sh --verbose - Open a pull request using the PR template.
- Shell scripts target MINGW64 (Git Bash) on Windows and Bash 4.x on RHEL 8.
- No compiled binaries in the main repo. Binaries belong in the
prebuilt/submodule. - Versions and SHA256 checksums must be kept in sync across
manifest.json,devkit.json, andsbom.spdx.json. - Run
bash scripts/internal/generate-sbom.shafter any tool addition or version bump. - Prefer editing existing files over creating new ones. No half-finished implementations.
All contributors are expected to follow the Code of Conduct.