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 Volta, 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 Volta is organized under the terms of the Contributor Covenant Code of Conduct. The lead maintainer of Volta, 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

Volta is intended to compile with Rust 1.33 or newer.

Building

To compile Volta from source, use Cargo:

cargo build

Installing Local Builds

To install a locally built copy of Volta, you can use the helper scripts provided in the dev directory:

cargo build
./dev/unix/build.sh debug
./dev/unix/install.sh

Or:

cargo build --release
./dev/unix/build.sh
./dev/unix/install.sh

Formatting

We use Rust’s official rustfmt tool in our CI to ensure consistent style in the Volta 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 VOLTA_LOGLEVEL environment variable to debug 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

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