--- id: contributing title: Contributing --- ## Compiling project - It's recommended to use Java 11. - Build with `sbt`, to install sbt see https://www.scala-sbt.org/ - Use `sbt tests/test` instead of `sbt test`, the former runs modestly fast unit tests for the JVM while `sbt test` is slower because it runs cross-platform test and tests benchmark code and also compiles the documentation. - You should be able to import the project into IntelliJ as normal: `File -> New -> Project from existing source` and pick the `build.sbt` file. ## Opening pull requests - **All code PRs should come with**: a meaningful description, inline-comments for important things, unit tests (positive and negative), and a green build in [CI](https://travis-ci.org/stasis/stasis). - **Format your code with scalafmt**. Run `./scalafmt` from the project root directory. - **PRs for features should almost always include _some_ changes to the [Documentation](https://stasis.io/docs)** as well. - **Be prepared to discuss/advocate-for your changes if you want them merged**! You will probably need to refactor so your changes fit into the larger code base - **If your code is hard to unit test, and you don't want to unit test it, that's okay**, but you will need to support your case. - **The maintainers of this project might reject your changes** they might rewrite them, or remove them in the future. This is normal and true for all changes regardless of the author. - **Even a rejected/reverted PR is valuable**! It helps explore the solution space, and know what works and what doesn't. For every line in the repository, there exists some rejected work. - **Feel free to send Proof-Of-Concept PRs** that you don't intend to get merged. Simply indicate that in the PR. ## Opening issues Please always include concrete code examples with obtained and expected output. ## Releasing - Ensure the release notes are up to date and complete. - Pushing a git tag should trigger a release to Maven Central from the CI. ## Random stuff -