mirror of
https://github.com/lightningdevkit/rust-lightning.git
synced 2025-01-19 05:43:55 +01:00
Add a first draft CONTRIBUTING.md
This commit is contained in:
parent
6dd6f1ffde
commit
34871ea288
100
CONTRIBUTING.md
Normal file
100
CONTRIBUTING.md
Normal file
@ -0,0 +1,100 @@
|
||||
Contributing to Rust-Lightning
|
||||
==============================
|
||||
|
||||
The Rust-Lightning project operates an open contributor model where anyone is
|
||||
welcome to contribute towards development in the form of peer review, documentation,
|
||||
testing and patches.
|
||||
|
||||
Anyone is invited to contribute without regard to technical experience, "expertise", OSS
|
||||
experience, age, or other concern. Though developing cryptocurrencies demand a
|
||||
high-level of rigor, adversial thinking, thorough testing and risk-minimization.
|
||||
Any bug may cost users real money. That said we're deeply welcoming people contributing
|
||||
for the first time to an open source project or pick up Rust while contributing. Don't be shy,
|
||||
you'll learn.
|
||||
|
||||
Communications Channels
|
||||
-----------------------
|
||||
|
||||
Communication about Rust-Lightning happens primarily on #ldk-dev on the LDK slack
|
||||
or #rust-bitcoin on IRC Freenode.
|
||||
|
||||
Discussion about code base improvements happens in GitHub issues and on pull
|
||||
requests.
|
||||
|
||||
Contribution Workflow
|
||||
--------------------
|
||||
|
||||
The codebase is maintained using the "contributor workflow" where everyone
|
||||
without exception contributes patch proposals using "pull requests". This
|
||||
facilitates social contribution, easy testing and peer review.
|
||||
|
||||
To contribute a patch, the worflow is a as follows:
|
||||
|
||||
1. Fork Repository
|
||||
2. Create topic branch
|
||||
3. Commit patches
|
||||
|
||||
|
||||
In general commits should be atomic and diffs should be easy to read.
|
||||
For this reason do not mix any formatting fixes or code moves with
|
||||
actual code changes. Further, each commit, individually, should compile
|
||||
and pass tests, in order to ensure git bisect and other automated tools
|
||||
function properly.
|
||||
|
||||
When adding a new feature, like implementing a BOLT spec object, thought
|
||||
must be given to the long term technical debt. Every new features should
|
||||
be covered by functional tests.
|
||||
|
||||
When refactoring, structure your PR to make it easy to review and don't
|
||||
hesitant to split in multiple small, focused PRs.
|
||||
|
||||
The Minimal Supported Rust Version is 1.22.0 (enforced by our Travis).
|
||||
|
||||
Commit should expose both issues fixed and solutions rational.
|
||||
these [guidelines](https://chris.beams.io/posts/git-commit/) should be kept in mind.
|
||||
|
||||
Peer review
|
||||
-----------
|
||||
|
||||
Anyone may participate in peer review which is expressed by comments in the pull
|
||||
request. Typically reviewers will review the code for obvious errors, as well as
|
||||
test out the patch set and opine on the technical merits of the patch. PR should
|
||||
be reviewed first on the conceptual level before focusing on code style or grammar
|
||||
fixes.
|
||||
|
||||
Coding Conventions
|
||||
------------
|
||||
|
||||
Use tabs. If you want to align lines, use spaces. Any desired alignment should
|
||||
display fine at any tab-length display setting.
|
||||
|
||||
Security
|
||||
--------
|
||||
|
||||
Security is the primary focus of Rust-Lightning, disclosure of security vulnerabilites
|
||||
helps prevent user loss of funds. If you believe vulnerability may effect other Lightning
|
||||
implementations please inform them.
|
||||
|
||||
Note that Rust-Lightning is currently considered "pre-production" during this time, there
|
||||
is no special handling of security issues. Please simpy open an issue on Github.
|
||||
|
||||
Testing
|
||||
-------
|
||||
|
||||
Deeply tied with the security aspect, Rust-Lightning developers take testing
|
||||
very seriously. Due to the modular nature of the project writing new functional
|
||||
tests is easy and good test coverage of the codebase is an important goal. Refactoring
|
||||
the project to enable fine-grained unit testing is also an ongoing work.
|
||||
|
||||
Fuzzing is heavily-encouraged, you will find all related fuzzing stuff under `fuzz/`
|
||||
|
||||
Mutation testing is work-in-progess, any contribution there would be warmly welcomed.
|
||||
|
||||
Going further
|
||||
-------------
|
||||
|
||||
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)
|
||||
and [How to make Bitcoin Core PRs](https://github.com/jonatack/bitcoin-development/blob/master/how-to-make-bitcoin-core-prs.md).
|
||||
Modulo projects context and diffference of maturity there is a lot to stick to.
|
||||
|
||||
Overall, have fun :)
|
18
README.md
18
README.md
@ -16,6 +16,12 @@ to embrace that. The current state is sufficient for a developer or project to
|
||||
experiment with it. Recent increased contribution rate to the project is expected
|
||||
to lead to a high quality, stable, production-worthy implementation in 2020.
|
||||
|
||||
Communications for Rust-Lightning and Lightning Development Kit happens through
|
||||
[LDK slack](http://lightningdevkit.org/).
|
||||
|
||||
Design Goal
|
||||
-----------
|
||||
|
||||
The goal is to provide a full-featured but also incredibly flexible lightning
|
||||
implementation, allowing the user to decide how they wish to use it. With that
|
||||
in mind, everything should be exposed via simple, composable APIs. The user
|
||||
@ -32,8 +38,14 @@ non-optional/non-test/non-library dependencies. Really really do not add
|
||||
dependencies with dependencies. Do convince Andrew to cut down dependency usage
|
||||
in rust-bitcoin.
|
||||
|
||||
Notes on coding style:
|
||||
* Use tabs. If you want to align lines, use spaces. Any desired alignment
|
||||
should display fine at any tab-length display setting.
|
||||
Contributing
|
||||
------------
|
||||
|
||||
Contributors are warmly welcome, see [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
Project Architecture
|
||||
---------------------
|
||||
|
||||
COMING SOON.
|
||||
|
||||
License is Apache-2.0.
|
||||
|
Loading…
Reference in New Issue
Block a user