mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-25 22:17:58 +00:00
f517e57f67
* Prepare for rust stable 1.59 Besides preparing the UI tests this also adds a new script update-rust-stable.sh script for simplifying the update of a rust stable version. This script will run all UI tests for the new rust stable version and updating the expected output. * Ensure we run the UI tests in CI * use staging ci image * More test updates * Unignore test (#11097) * empty commit for pipeline rerun * empty commit for pipeline rerun * Try to make clippy happy * More clippy fixes * FMT * ci image production Co-authored-by: alvicsam <alvicsam@gmail.com> Co-authored-by: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
129 lines
10 KiB
Plaintext
129 lines
10 KiB
Plaintext
= Contributing
|
|
|
|
The `Substrate` project is an **OPENISH Open Source Project**
|
|
|
|
== What?
|
|
|
|
Individuals making significant and valuable contributions are given commit-access to a project to contribute as they see fit. A project is more like an open wiki than a standard guarded open source project.
|
|
|
|
== Rules
|
|
|
|
There are a few basic ground-rules for contributors (including the maintainer(s) of the project):
|
|
|
|
. **No `--force` pushes** or modifying the master branch history in any way. If you need to rebase, ensure you do it in your own repo. No rewriting of the history after the code has been shared (e.g. through a Pull-Request).
|
|
. **Non-master branches**, prefixed with a short name moniker (e.g. `gav-my-feature`) must be used for ongoing work.
|
|
. **All modifications** must be made in a **pull-request** to solicit feedback from other contributors.
|
|
. A pull-request *must not be merged until CI* has finished successfully.
|
|
. Contributors should adhere to the link:STYLE_GUIDE.md[house coding style].
|
|
|
|
|
|
== Merge Process
|
|
|
|
*In General*
|
|
|
|
A Pull Request (PR) needs to be reviewed and approved by project maintainers unless:
|
|
|
|
- it does not alter any logic (e.g. comments, dependencies, docs), then it may be tagged https://github.com/paritytech/substrate/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author once CI is complete.
|
|
- it is an urgent fix with no large change to logic, then it may be merged after a non-author contributor has approved the review once CI is complete.
|
|
|
|
*Labels TLDR:*
|
|
|
|
- `A-*` Pull request status. ONE REQUIRED.
|
|
- `B-*` Changelog and/or Runtime-upgrade post composition markers. ONE REQUIRED. (used by automation)
|
|
- `C-*` Release notes release-priority markers. EXACTLY ONE REQUIRED. (used by automation)
|
|
- `D-*` More general tags on the PR denoting various implications and requirements.
|
|
|
|
*Process:*
|
|
|
|
. Please tag each PR with exactly one `A`, `B`, `C` and `D` label at the minimum.
|
|
. Once a PR is ready for review please add the https://github.com/paritytech/substrate/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`A0-pleasereview`] label. Generally PRs should sit with this label for 48 hours in order to garner feedback. It may be merged before if all relevant parties had a look at it.
|
|
. If the first review is not an approval, swap `A0-pleasereview` to any label `[A3, A7]` to indicate that the PR has received some feedback, but needs further work. For example. https://github.com/paritytech/substrate/labels/A3-inprogress[`A3-inprogress`] is a general indicator that the PR is work in progress and https://github.com/paritytech/substrate/labels/A4-gotissues[`A4-gotissues`] means that it has significant problems that need fixing. Once the work is done, change the label back to `A0-pleasereview`. You might end up swapping a few times back and forth to climb up the A label group. Once a PR is https://github.com/paritytech/substrate/labels/A8-mergeoncegreen[`A8-mergeoncegreen`], it is ready to merge.
|
|
. PRs must be tagged with their release notes requirements via the `B1-B9` labels.
|
|
. PRs must be tagged with their release importance via the `C1-C9` labels.
|
|
. PRs must be tagged with their audit requirements via the `D1-D9` labels.
|
|
. PRs that must be backported to a stable branch must be tagged with https://github.com/paritytech/substrate/labels/E1-runtimemigration[`E0-patchthis`].
|
|
. PRs that introduce runtime migrations must be tagged with https://github.com/paritytech/substrate/labels/E1-runtimemigration[`E1-runtimemigration`]. See the https://github.com/paritytech/substrate/blob/master/utils/frame/try-runtime/cli/src/lib.rs#L18[Migration Best Practices here] for more info about how to test runtime migrations.
|
|
. PRs that introduce irreversible database migrations must be tagged with https://github.com/paritytech/substrate/labels/E2-databasemigration[`E2-databasemigration`].
|
|
. PRs that add host functions must be tagged with with https://github.com/paritytech/substrate/labels/E4-newhostfunctions[`E4-newhostfunctions`].
|
|
. PRs that break the external API must be tagged with https://github.com/paritytech/substrate/labels/E5-breaksapi[`E5-breaksapi`].
|
|
. PRs that materially change the FRAME/runtime semantics must be tagged with https://github.com/paritytech/substrate/labels/E6-transactionversion[`E6-transactionversion`].
|
|
. PRs that change the mechanism for block authoring in a backwards-incompatible way must be tagged with https://github.com/paritytech/substrate/labels/E7-breaksauthoring[`E7-breaksauthoring`].
|
|
. PRs that "break everything" must be tagged with https://github.com/paritytech/substrate/labels/E8-breakseverything[`E8-breakseverything`].
|
|
. PRs that block a new release must be tagged with https://github.com/paritytech/substrate/labels/E9-blocker%20%E2%9B%94%EF%B8%8F[`E9-blocker`].
|
|
. PRs should be categorized into projects.
|
|
. No PR should be merged until all reviews' comments are addressed and CI is successful.
|
|
|
|
*Reviewing pull requests*:
|
|
|
|
When reviewing a pull request, the end-goal is to suggest useful changes to the author. Reviews should finish with approval unless there are issues that would result in:
|
|
|
|
. Buggy behavior.
|
|
. Undue maintenance burden.
|
|
. Breaking with house coding style.
|
|
. Pessimization (i.e. reduction of speed as measured in the projects benchmarks).
|
|
. Feature reduction (i.e. it removes some aspect of functionality that a significant minority of users rely on).
|
|
. Uselessness (i.e. it does not strictly add a feature or fix a known issue).
|
|
|
|
*Reviews may not be used as an effective veto for a PR because*:
|
|
|
|
. There exists a somewhat cleaner/better/faster way of accomplishing the same feature/fix.
|
|
. It does not fit well with some other contributors' longer-term vision for the project.
|
|
|
|
=== Updating Polkadot as well
|
|
|
|
**All pull requests will be checked against either Polkadot master, or your provided Polkadot companion PR**. That is, If your PR changes the external APIs or interfaces used by Polkadot. If you tagged the PR with `breaksapi` or `breaksconsensus` this is most certainly the case, in all other cases check for it by running step 1 below.
|
|
|
|
To create a Polkadot companion PR:
|
|
|
|
. Pull latest Polkadot master (or clone it, if you haven't yet).
|
|
. Override substrate deps to point to your local path or branch using https://github.com/bkchr/diener. (E.g. from the polkadot clone dir run `diener patch --crates-to-patch ../substrate --substrate` assuming substrate clone is in a sibling dir. If you do use diener, ensure that you _do not_ commit the changes diener makes to the Cargo.tomls.)
|
|
. Make the changes required and build polkadot locally.
|
|
. Submit all this as a PR against the Polkadot Repo.
|
|
. In the _description_ of your _Substrate_ PR add "polkadot companion: [Polkadot_PR_URL]"
|
|
. Now you should see that the `check_polkadot` CI job will build your Substrate PR agains the mentioned Polkadot branch in your PR description.
|
|
. Someone will need to approve the Polkadot PR before the Substrate CI will go green. (The Polkadot CI failing can be ignored as long as the polkadot job in the _substrate_ PR is green).
|
|
. Wait for reviews on both the Substrate and the Polkadot PRs.
|
|
. Once the Substrate PR runs green, a member of the `parity` github group can comment on the Substrate PR with `bot merge` which will:
|
|
- Merge the Substrate PR.
|
|
- The bot will push a commit to the Polkadot PR updating its Substrate reference. (effecively doing `cargo update -p sp-io`)
|
|
- If the polkadot PR origins from a fork then a project member may need to press `approve run` on the polkadot PR.
|
|
- The bot will merge the Polkadot PR once all its CI `{"build_allow_failure":false}` checks are green.
|
|
Note: The merge-bot currently doesn't work with forks on org accounts, only individual accounts.
|
|
(Hint: it's recommended to use `bot merge` to merge all substrate PRs, not just ones with a polkadot companion.)
|
|
|
|
If your PR is reviewed well, but a Polkadot PR is missing, signal it with https://github.com/paritytech/substrate/labels/A7-needspolkadotpr[`A7-needspolkadotpr`] to prevent it from getting automatically merged.
|
|
|
|
As there might be multiple pending PRs that might conflict with one another, a) you should not merge the substrate PR until the Polkadot PR has also been reviewed and b) both should be merged pretty quickly after another to not block others.
|
|
|
|
== Helping out
|
|
|
|
We use https://github.com/paritytech/substrate/labels[labels] to manage PRs and issues and communicate state of a PR. Please familiarize yourself with them. Furthermore we are organizing issues in https://github.com/paritytech/substrate/milestones[milestones]. Best way to get started is to a pick a ticket from the current milestone tagged https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ2-easy[`easy`] or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AQ3-medium[`medium`] and get going or https://github.com/paritytech/substrate/issues?q=is%3Aissue+is%3Aopen+label%3AX1-mentor[`mentor`] and get in contact with the mentor offering their support on that larger task.
|
|
|
|
== Issues
|
|
Please label issues with the following labels:
|
|
|
|
. `I-*` Issue severity and type. EXACTLY ONE REQUIRED.
|
|
. `P-*` Issue priority. AT MOST ONE ALLOWED.
|
|
. `Q-*` Issue difficulty. AT MOST ONE ALLOWED.
|
|
. `Z-*` More general tags on the issue, denoting context and resolution.
|
|
|
|
== Releases
|
|
|
|
Declaring formal releases remains the prerogative of the project maintainer(s).
|
|
|
|
== UI tests
|
|
|
|
UI tests are used for macros to ensure that the output of a macro doesn't change and is in the expected format. These UI tests are sensible to any changes
|
|
in the macro generated code or to switching the rust stable version. The tests are only run when the `RUN_UI_TESTS` environment variable is set. So, when
|
|
the CI is for example complaining about failing UI tests and it is expected that they fail these tests need to be executed locally. To simplify the updating
|
|
of the UI test ouput there is the `.maintain/update-rust-stable.sh` script. This can be run with `.maintain/update-rust-stable.sh CURRENT_STABLE_VERSION`
|
|
and then it will run all UI tests to update the expected output.
|
|
|
|
== Changes to this arrangement
|
|
|
|
This is an experiment and feedback is welcome! This document may also be subject to pull-requests or changes by contributors where you believe you have something valuable to add or change.
|
|
|
|
== Heritage
|
|
|
|
These contributing guidelines are modified from the "OPEN Open Source Project" guidelines for the Level project: https://github.com/Level/community/blob/master/CONTRIBUTING.md
|