Thank you for your interest in contributing to 4Forge! 4Forge is an open-source, trustworthy, local development environment manager for polyglot developers (PHP, Node.js, Python, Ruby) on Windows.
We are committed to maintaining a clean, secure, transparent, and auditable codebase under the Apache-2.0 license.
All contributions to 4Forge must be accompanied by a Developer Certificate of Origin (DCO) sign-off line in the commit message. This certifies that you have the right to submit your contribution under the Apache-2.0 license.
To sign off your commit, use the -s or --signoff flag:
git commit -s -m "feat(supervisor): add windows job object handling"The resulting commit message will contain:
Signed-off-by: Your Name <your.email@example.com>
We enforce the Conventional Commits standard.
<type>(<scope>): <short summary>
[optional body]
[optional footer(s)]
Signed-off-by: Your Name <your.email@example.com>
feat: A new featurefix: A bug fixdocs: Documentation changeschore: Maintenance tasks, dependency updates, toolingrefactor: Code changes that neither fix a bug nor add a featuretest: Adding or correcting testsci: CI/CD configuration changes
Examples: supervisor, caddy, runtime, db, gui, deps.
- Fork the repository and create a branch from
main:- Feature branch:
feature/<description> - Bug fix branch:
fix/<description> - Documentation branch:
docs/<description> - Maintenance branch:
chore/<description>
- Feature branch:
- Follow rustfmt, clippy, and code conventions.
- Make sure all automated checks pass locally before opening a pull request:
cargo fmt --check cargo clippy --all-targets --all-features -- -D warnings cargo test cargo audit cargo deny check - Frontend checks (if applicable):
pnpm run check pnpm run build
- Open a Pull Request targeting
main. Pull requests require review before merging. Merges intomainuse squash merges to maintain a clean linear history.
- Rust: Formatted with
cargo fmt. No lints suppressed with#[allow(...)]without a clear explanatory comment. Prefer pushing control flow outward to callers. - Frontend: Tailwind utility classes colocated with components. Keep components focused, reusable, and small.
- Licensing: All new source files must carry the standard Apache-2.0 header found in
docs/license-header.txt.