# Contributing to Soliterm This document provides an entry-point into contributing to the Soliterm project. It covers the project as a whole and the `soliterm` root package. The other packages will have their own `CONTRIBUTING.md` documents to describe their structure in more detail. **Soliterm is not currently accepting contributions** — it is still pre-alpha and too many fundamental design decisions are up in the air. Once the project is more developed, I will update this document and make sure the necessary support structures (mailing lists, etc.) are in place. ## Project Structure This project is split into four packages in a Cargo workspace. * `soliterm`: The root project of the workspace, which only responsible for building the `soliterm` executable. * `soliterm-ui`: Responsible for the text-based user interface of the game. * `soliterm-game`: Responsible for the game engine, receiving user input from the UI and updating the game state via the model. * `soliterm-model`: Responsible for the models and game logic. ## Code Style All code contributed to Soliterm must be formatted using `rustfmt` with the configuration provided in `rustfmt.toml` in the project root. As much as possible, we follow the [Rust API Guidelines][rust-api-guidelines]. All warnings from `rust` and `clippy` must either be addressed (preferrable) or silenced with a motivating comment. All unit and doctests should pass, and new code should be accompanied by new tests. [rust-api-guidelines]: https://rust-lang.github.io/api-guidelines/about.html