X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=CONTRIBUTING.md;h=e8a57d85f7f7e8a9cebe857f6011e7c84dee6b6d;hb=71d22f7e06b0553b4af24a0196ca834e415eddbd;hp=0b6e07acfd734a648bef59fb56fec669d9df9986;hpb=8ac0992b14861b8841c5b7f9cb5b3e7a4db1070d;p=rust-lightning diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0b6e07ac..e8a57d85 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,6 +24,25 @@ requests. Major projects are tracked [here](https://github.com/rust-bitcoin/rust-lightning/projects). Major milestones are tracked [here](https://github.com/rust-bitcoin/rust-lightning/milestones?direction=asc&sort=title&state=open). +Getting Started +--------------- + +First and foremost, start small. + +This doesn't mean don't be ambitious with the breadth and depth of your contributions but rather +understand the project context and culture before investing an asymmetric number of hours on +development compared to your merged work. + +Even if you have an extensive open source background or sound software engineering skills, consider +that the reviewers' comprehension of the code is as much important as technical correctness. + +It's very welcome to ask for review, either on IRC or LDK Slack. And also for reviewers, it's nice +to provide timelines when you hope to fulfill the request while bearing in mind for both sides that's +a "soft" commitment. + +If you're eager to increase the velocity of the dev process, reviewing other contributors work is +the best you can do while waiting review on yours. + Contribution Workflow --------------------- @@ -77,6 +96,18 @@ Coding Conventions Use tabs. If you want to align lines, use spaces. Any desired alignment should display fine at any tab-length display setting. +Our CI enforces [clippy's](https://github.com/rust-lang/rust-clippy) default linting +[settings](https://rust-lang.github.io/rust-clippy/rust-1.39.0/index.html). +This includes all lint groups except for nursery, pedantic, and cargo in addition to allowing the following lints: +`erasing_op`, `never_loop`, `if_same_then_else`. + +If you use rustup, feel free to lint locally, otherwise you can just push to CI for automated linting. + +```bash +rustup component add clippy +cargo clippy +``` + Security -------- @@ -99,6 +130,17 @@ Fuzzing is heavily encouraged: you will find all related material under `fuzz/` Mutation testing is work-in-progress; any contribution there would be warmly welcomed. +C/C++ Bindings +-------------- + +You can learn more about the C/C++ bindings that are made available by reading the +[C/C++ Bindings README](lightning-c-bindings/README.md). If you are not using the C/C++ bindings, +you likely don't need to worry about them, and during their early experimental phase we are not +requiring that pull requests keep the bindings up to date (and, thus, pass the bindings_check CI +run). If you wish to ensure your PR passes the bindings generation phase, you should run the +`genbindings.sh` script in the top of the directory tree to generate, build, and test C bindings on +your local system. + Going further -------------