Contributing Guide

Community

We use Discord for community discussion. You can use this permanent invite to join our Discord server!

We welcome issues and pull requests on GitHub!

For significant changes or enhancements to the design or architecture of Notion, we use a Request For Comments (RFC) process. Everyone, including the core team, follows this process.

We encourage you to share your ideas and feedback with us!

Code of Conduct

Contribution to Notion is organized under the terms of the Contributor Covenant Code of Conduct. The lead maintainer of Notion, Dave Herman, personally promises to work actively to uphold that code of conduct. We aim to foster a community that is welcoming, inclusive, empathetic, and kind. If you share those goals and want to have a ton of fun building cool JavaScript tools and playing with Rust, we invite you to join us!

Development

Rust

Notion is intended to compile with Rust 1.31 or newer.

Formatting

We use Rust’s official rustfmt tool in our CI to ensure consistent style in the Notion codebase.

To ensure your code is formatted correctly, make sure you have installed rustfmt:

rustup component add rustfmt

and run the following before submitting your PR:

cargo fmt --all

Visual Studio Code

If you use Visual Studio Code with the official Rust plugin, you can configure your editor to automatically format on save.

Debugging

When developing, we suggest you set the NOTION_DEV environment variable to 1 and the RUST_BACKTRACE environment variable to full. This will provide extra diagnostic information to stderr on crashes. We have an issue on file to improve the quality of diagnostics.

Tests

To run the tests in this repo, run the following:

cargo test --all --features mock-network

License

Notion is licensed under a permissive BSD 2-clause license.