Thanks for wanting to contribute! ⛄
Feel free to create issues or make pull requests, we'll try to quickly review them.
If you need assistance, you can join the #cobalt
channel on irc.mozilla.org
or the Gitter chat
We want you to feel safe and welcome and will enforce the The Rust Code of Conduct on all communication platforms of this project. Please contact @johannhof for questions or in cases of violation.
This project aims to be a Rust implementation of Liquid.
- Notice that we deviate from shopify/liquid? Please, open an issue if there isn't an existing one
- Want a new tag or filter? Check for an existing issue and open one if needed.
Some helpful pieces of information when reporting issues
- liquid-rust version
- rust version
- OS and version
If you're looking for things to do check out the open issues, especially those with the easy and help wanted flags. Or take a grep through all TODO comments in the code and feel free to help us out there!
We appreciate your help as-is. We'd love to help you through the process for contributing. We have some suggestions to help make things go more smoothly.
🌈 Here's a checklist for the perfect pull request:
- Make sure existing tests still work by running
cargo test
locally. - Add new tests for any new feature or regression tests for bugfixes.
- Install Clippy and run
rustup run nightly cargo clippy
to catch common mistakes (will be checked by Travis) - Install Rustfmt and run
cargo fmt
to format your code (will also be checked by Travis)
For commit messages, we use Conventional
style. If you already wrote your commits and don't feel comfortable changing
them, don't worry and go ahead and create your PR. We'll work with you on the
best route forward. You can check your branch locally with
committed
.
For new tags or filters, we recommend
- Open an RFC Issue for discussing what the API should be. We'd like to avoid disrupting people once they start using a feature.
- Consider incubating it in your code first to so it can be iterated on to find what works well.
- Checkout prior art with Shopify's proprietary extensions or Jekyll's extensions.
- Putting all non-standard features behind feature flags.
If you're interested in benchmarking your changes
- Be sure to get some before and afters on the same machine
- Rust nightly is required. You'll need to run
rustup run nightly -- cargo bench
Hopefully we get this integrated into your CI process.
Pre-requisites
- Running
cargo login
- A member of
ORG:Maintainers
- Push permission to the repo
cargo-release
When we're ready to release, a project owner should do the following
- Update the changelog (see
cargo release changes
for ideas) - Determine what the next version is, according to semver
- Run
cargo release -x <level>