Skip to content

Commit 15df6b1

Browse files
author
Antoine Riard
committed
Add a first draft CONTRIBUTING.md
1 parent f70058e commit 15df6b1

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

CONTRIBUTING.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
Contributing to Rust-Lightning
2+
==============================
3+
4+
The Rust-Lightning project operates an open contributor model where anyone is
5+
welcome to contribute towards development in the form of peer review, documentation,
6+
testing and patches.
7+
8+
Anyone is invited to contribute without regard to technical experience, "expertise", OSS
9+
experience age or other social discriminant. Though developing cryptocurrencies demand a
10+
high-level bar of rigor, adversial thinking, thorough testing and risk-minimization.
11+
Any bug may cost real-money and so impact severely people lifes. That's said we're deeply
12+
welcoming people contributing for the first time on an open source project or pick up
13+
Rust on the ground. Don't be shy, you'll learn.
14+
15+
Communications Channels
16+
-----------------------
17+
18+
Communication about Rust-Lightning happens on #rust-bitcoin IRC.
19+
20+
Discussion about code base improvements happens in GitHub issues and on pull
21+
requests.
22+
23+
Contribution Workflow
24+
--------------------
25+
26+
The codebase is maintained using the "contributor workflow" where everyone
27+
without exception contributes patch proposals using "pull requests". This
28+
facilitates social contribution, easy testing and peer review.
29+
30+
To contribute a patch, the worflow is a as follows:
31+
32+
1. Fork Repository
33+
1. Create topic branch
34+
1. Commit patches
35+
36+
37+
In general commits should be atomic and diffs should be easy to read.
38+
For this reason do not mix ant formatting fixes or code moves with
39+
actual code changes.
40+
41+
When adding a new feature, like implementing a BOLT spec object, thought
42+
must be given to the long term technical debt. Every new features should
43+
be covered by functional tests.
44+
45+
When refactoring, structure your PR to make it easy to review and don't
46+
hesitant to split in multiple small, focused PRs.
47+
48+
Peer review
49+
-----------
50+
51+
Anyone may participate in peer review which is expressed by comments in the pull
52+
request. Typically reviewers will review the code for obvious errors, as well as
53+
test out the patch set and opine on the technical merits of the patch. PR should
54+
be reviewed first on the conceptual level before focusing on code style or grammar
55+
fixes.
56+
57+
Architecture
58+
------------
59+
60+
XXX: (here or in readme ?)
61+
62+
63+
Security
64+
--------
65+
66+
Security is the primary focus of Rust-Lightning, disclosure of security vulnerabilites
67+
helps prevent user loss of funds. If you think vulnerability is with regard to the spec
68+
please inform other Lightning implementations diligently.
69+
70+
XXX: (what process ?)
71+
72+
Testing
73+
-------
74+
75+
Deeply tied with the security aspect, Rust-Lightning developers take testing
76+
really seriouslt. Due to the modular nature of the project writing new functional
77+
tests is easy and well-coverage of the codebase is a long-term goal. Refactoring
78+
the project to enable fine-grained unit testing is also an ongoing work.
79+
80+
Fuzzing is heavily-encouraged, you will find all related fuzzing stuff under `fuzz/`
81+
82+
Mutation testing is work-in-progess, any contrubition there would be warmly welcomed.
83+
84+
Going further
85+
-------------
86+
87+
You may be interested by Jon Atack guide on [How to review Bitcoin Core PRs](https://github.com/jonatack/bitcoin-development/blob/master/how-to-review-bitcoin-core-prs.md)
88+
and [How to make Bitcoin Core PRs] (https://github.com/jonatack/bitcoin-development/blob/master/how-to-make-bitcoin-core-prs.md).
89+
Modulo projects context and diffference of maturity there is a lot to stick to.
90+
91+
Overall, have fun :)

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ Notes on coding style:
2828
* Use tabs. If you want to align lines, use spaces. Any desired alignment
2929
should display fine at any tab-length display setting.
3030

31+
Contributors are warmly welcome, see [CONTRIBUTING.md](CONTRIBUTING.md)
32+
3133
License is Apache-2.0.

0 commit comments

Comments
 (0)