Contributing Guide
Contributions to SiliconGhetto are welcome. This guide covers the process and expectations.
Getting Set Up
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/siliconghetto.git - Install prerequisites (see Getting Started)
- Create a branch:
git checkout -b your-feature
Development Process
- Open an issue first — describe what you want to change and why. This avoids duplicate work and lets us discuss the approach before you invest time.
- Write code — implement your change with tests where appropriate.
- Ensure all checks pass:
cargo fmt --all cargo clippy --workspace -- -D warnings cargo test --workspace - Submit a pull request — reference the issue, describe what changed, and explain your testing approach.
Code Standards
Formatting
- Run
cargo fmtbefore committing. CI enforces this. - Use the default rustfmt configuration (no
.rustfmt.tomloverrides).
Linting
cargo clippy -- -D warningsmust pass with no warnings.- Fix clippy suggestions rather than suppressing them unless there’s a good reason.
Testing
- Add tests for new functionality.
- Unit tests live next to the code they test (in
#[cfg(test)] mod tests). - Integration tests go in the crate’s
tests/directory if needed. - All tests must pass on stable Rust.
Branding And Trademark Safety
- Do not use third-party franchise names, product names, trademarks, or borrowed block-world terminology anywhere in this repo.
- If a branded term appears in code, docs, demos, comments, assets, or UI copy, stop and replace it immediately with SiliconGhetto-native wording before continuing other work.
- Run
pnpm run guard:termsafter changing public APIs, docs, examples, demos, or branding-sensitive copy.
Commit Messages
- Use the imperative mood: “Add sprite batching” not “Added sprite batching”
- Keep the first line under 72 characters
- Reference issues when relevant: “Fix #42: handle zero-size viewport”
What to Contribute
Good First Contributions
- Documentation improvements
- Test coverage for existing code
- Clippy lint fixes
- Demo improvements
Larger Contributions
- New engine features (discuss in an issue first)
- Performance optimizations (include benchmarks)
- New demos showcasing engine capabilities
- Browser compatibility improvements
License Note
All code in this repository is proprietary and source-available under the SiliconGhetto Source-Available License. See the LICENSE file for full terms.
Architecture Decisions
Significant architectural changes should be proposed as ADRs (Architecture Decision Records) in docs-content/adr/. The format is:
- Context — what problem are we solving?
- Options considered — what alternatives exist?
- Decision — what did we choose and why?
- Consequences — what are the trade-offs?
Pull Request Checklist
- Code compiles without warnings (
cargo check) - All tests pass (
cargo test) - Code is formatted (
cargo fmt) - Clippy is clean (
cargo clippy -- -D warnings) - New code has appropriate tests
- Documentation is updated if behavior changed
- Commit messages are clear and descriptive
License
By contributing to SiliconGhetto, you agree to the terms of the SiliconGhetto Source-Available License (see LICENSE). Your contributions grant the copyright holder a perpetual, worldwide, irrevocable, royalty-free license to use, modify, sublicense, and distribute your contributions under any license terms.