1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

How to contribute to Bitcoin core

Last updated at Posted at 2018-02-08

Intro

Concept

  • Open contributor model ... anyone is welcome to contribute

Role

  • Maintainer ... In charge of merge PR
  • Lead Maintainer ... In charge of release cycle

Workflow

  1. Fork
  2. Create branch
  3. Commit ... should be atomic and easy to read
  4. Push to my fork repos
  5. Create PR
  6. Review
  7. Fix review

Commit message

  • 50 chars max
  • Blank line
  • Details should be separate paragraph
  • Be helpful to committer in the future
  • Should be use refs #1234, or fixes #4321

PR

  • Use prefix
    Consensus: Add new opcode for BIP-XXXX OP_CHECKAWESOMESIG
    Net: Automatically create hidden service, listen on Tor
    Qt: Add feed bump button
    Trivial: Fix typo in main.cpp
  • [WIP] or Task List means not to be merged yet.
  • Should be contain justification/reasoning in PR body and reference of discussion.

Before merge

  • Ask to maintainer if need to squash or rebase.

PR Philosophy

  • Patch set should be focused, not be mixture.
  • Avoid super PR

Feature(and bug fix)

  • If a new feature would be added, long term maintenance is needed.
  • The feature without a maintainer will be removed by Repo Maintainer.

Refactoring

  • Do not mix these three kinds of activities.
    • Code only to move
    • Code to fix style
    • Code to refactor
  • Uncontroversial
  • Must not change behavior of code
  • Uncomplex and easy to verify

Decision Making process

  • Project merge maintainer and lead in charge of PR mergeing.
    • If PR in on line with the general principle of project.
    • If it meet the minimum standard of inclusion.
    • General consensus of contributor.
  • Minimum criteria for decision
    • Have a clear use case
    • Be well peer review
    • Have appropriate test
    • Follow code style guideline
    • Not break the existing test
    • Demonstrating the bug and proving the fix, where possible.
  • Conversation on mailing list.
  • Have a numbered BIP

Peer review

  • Anyone would comment in PR, using follows.
    • ACK means “I have tested the code and I agree it should be merged”
    • NACK means “I disagree this should be merged”
    • utACK means “I have not tested the code, but I have reviewed it and it looks OK, I agree it can be merged”
    • Concept ACK means “I agree in the general principle of this pull request”
    • Nit refers to trivial.
  • It may set the high bar, when patch will affect consensus critical code.
  • It must be discussed extensively using mailing list or IRC, when patch will change consensus.

Release Policy

  • Project leader is the release maintainer.
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?