|
| 1 | +# Contributing |
| 2 | + |
| 3 | +This document describes the process of contributing to the reference FVM implementation (this project). |
| 4 | + |
| 5 | +## Issues |
| 6 | + |
| 7 | +If you have a general FVM related question or idea, please either as on the [Filecoin Slack][chat], or open |
| 8 | +a new discussion in [fvm-specs][discuss]. |
| 9 | + |
| 10 | +If you'd like to report a _bug_ or suggest an enhancement in the reference FVM implementation, please file [an issue][issue]. |
| 11 | + |
| 12 | +## Pull Requests |
| 13 | + |
| 14 | +To make a change to the FVM. |
| 15 | + |
| 16 | +1. When in doubt, open an [issue][] first to discuss the change. |
| 17 | +2. Make your change. |
| 18 | +3. Write a test for your change. |
| 19 | +4. Update the crate's `CHANGELOG.md`. If you're making any breaking changes, prefix change with |
| 20 | + "BREAKING:". |
| 21 | +5. Finally, open a PR. |
| 22 | + |
| 23 | +## Releasing |
| 24 | + |
| 25 | +To prepare a release. |
| 26 | + |
| 27 | +1. Pick a next version (for each crate you're releasing). Look through the changelogs and carefully |
| 28 | + decide if it's a breaking release or not. Then read [rust's semver |
| 29 | + documentation](https://doc.rust-lang.org/cargo/reference/semver.html). |
| 30 | +2. Install `cargo-edit` (`cargo install cargo-edit`). |
| 31 | +3. Create a new branch. |
| 32 | +4. Use `cargo set-version` to set the version for each crate you're releasing. This will both update |
| 33 | + the crate version, and make all other crates in the workspace depend on the latest version. |
| 34 | +5. Make sure the changelogs are all up-to-date, set the release date & version, and add a new |
| 35 | + "Unreleased" section. |
| 36 | +6. Comment your changes, and make a PR. |
| 37 | + |
| 38 | +Once the release is prepared, it'll go through a review: |
| 39 | + |
| 40 | +1. Make sure that we're _ready_ to release. E.g., make sure downstream can consume the release. |
| 41 | +2. Make sure that we're correctly following semver. |
| 42 | +3. Make sure that we're not missing anything in the changelogs. |
| 43 | + |
| 44 | +Finally, an FVM "owner" will: |
| 45 | + |
| 46 | +1. Merge the release PR to master. |
| 47 | +2. For each released crate, create a git: `crate_name@crate_version`. |
| 48 | +3. Run `cargo publish` for each released crate (in dependency order). |
| 49 | + |
| 50 | +[chat]: https://docs.filecoin.io/about-filecoin/chat-and-discussion-forums/#chat |
| 51 | +[discuss]: https://github.com/filecoin-project/fvm-specs/discussions |
| 52 | +[issue]: https://github.com/filecoin-project/ref-fvm/issues |
0 commit comments