瀏覽代碼

Update contributing with more guidelines. (#5008)

sakridge 7 月之前
父節點
當前提交
305c98e869
共有 1 個文件被更改,包括 36 次插入0 次删除
  1. 36 0
      CONTRIBUTING.md

+ 36 - 0
CONTRIBUTING.md

@@ -41,6 +41,42 @@ cherry-picked commit:
 $ git pull --rebase upstream master
 ```
 
+Any changes that break consensus must be behind a feature gate and must have
+a merged SIMD.
+
+All changes should have unit and integration tests that cover at least 90% of
+added code paths. These tests should run quickly and not be flaky.
+
+All changes should be stress-tested with relevant test cases, if relevant test cases
+are not present, then write them.
+
+All changes should be benchmarked and evidence posted to the PR.
+Microbenchmark results along with mainnet/testnet validator timings or profiles,
+bench-tps or other relevant integration benchmarks. Any code that adds complexity
+should be justified by a comisurate improvement in speed.
+
+All changes should be reviewed by subject matter experts.
+
+All changes should be merged to master branch first and only critical changes should
+be backported to release branches.
+
+Duplicate code should generally be avoided.
+
+Features should be activated on testnet before mainnet in the closest configuration to mainnet as possible
+Relevant metrics need to be monitored and approriate follow-up given after feature activation.
+
+Avoid “hack” or “one-off” solutions, prefer well-architected designs which are not fragile.
+
+Only use unwrap() in cases where you can prove it will never panic, and in cases where panic on
+unwrap() is desirable, prefer .expect().
+
+Prefer not to break semver, if absolutely necessary increment the appropriate versioning.
+
+Add a changelog entry for any appropriate changes that add features that should be called
+out in the release notes for new versions.
+
+Don't mix refactoring changes and logical changes together.
+
 ### How big is too big?
 
 If there are no functional changes, PRs can be very large and that's no