Contributions are welcome. There are many ways to contribute beyond code:
- Bug reports: Open an issue describing the problem and steps to reproduce.
- Feature requests: Suggest new features or improvements.
- Documentation: Fix typos, clarify explanations, or add examples.
- Testing: Try Sova on different platforms, report issues.
- Language design: Propose new languages or improvements to existing ones.
- Tutorials: Write guides or share example sessions.
- Community support: Help others in issues and discussions.
Before you start, ensure you have:
- Rust (stable toolchain) - rustup.rs
cargo build
cargo clippy
cargo run -p sova-desktop --releasecore/- Rust library: VM, scheduler, protocols (MIDI, OSC), and languageslangs/- Language implementations (Bob, BaLi, Boinx, Cagire)server/- TCP server binary for multiplayer coordinationdesktop/- Primary desktop client (egui/eframe)solo-tui/- Terminal interface
- Fork the repository
- Create a branch for your changes
- Make your changes
- Run
cargo clippyand fix any warnings - Submit a pull request with a clear description of your changes
Please explain the reasoning behind your changes in the pull request. Document what problem you're solving and how your solution works. This helps reviewers understand your intent and speeds up the review process.
- Run
cargo clippybefore submitting. - Avoid cloning to satisfy the borrow checker - find a better solution.
This project follows the Contributor Covenant 2.1. By participating, you agree to uphold its standards. We are committed to providing a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity, experience level, nationality, appearance, race, religion, or sexual identity.
Expected behavior:
- Demonstrate empathy and kindness
- Respect differing viewpoints and experiences
- Accept constructive feedback gracefully
- Focus on what's best for the community
Unacceptable behavior:
- Harassment, trolling, or personal attacks
- Sexualized language or unwanted advances
- Publishing others' private information
- Any conduct inappropriate in a professional setting
Report violations to the project maintainers. All complaints will be reviewed promptly and confidentially.
By contributing, you agree that your contributions will be licensed under AGPLv3.