Changeset View
Changeset View
Standalone View
Standalone View
CONTRIBUTING.md
Show All 27 Lines | |||||
Bitcoin ABC Development Philosophy | Bitcoin ABC Development Philosophy | ||||
---------------------------------- | ---------------------------------- | ||||
Bitcoin ABC aims for fast iteration and continuous integration. | Bitcoin ABC aims for fast iteration and continuous integration. | ||||
This means that there should be quick turnaround for patches to be proposed, | This means that there should be quick turnaround for patches to be proposed, | ||||
reviewed, and committed. Changes should not sit in a queue for long. | reviewed, and committed. Changes should not sit in a queue for long. | ||||
Here are some tips to help keep the development working as intended: | Here are some tips to help keep the development working as intended. These | ||||
are guidelines for the normal and expected development process. Developers | |||||
can use their judgement to deviate from these guidelines when they have a | |||||
good reason to do so. | |||||
- Keep each change small and self-contained. | - Keep each change small and self-contained. | ||||
- Reach out for a 1-on-1 review so things move quickly. | - Reach out for a 1-on-1 review so things move quickly. | ||||
- Land the Diff quickly after it is accepted. | - Land the Diff quickly after it is accepted. | ||||
- Don't amend changes after the Diff accepted, new Diff for another fix. | - Don't amend changes after the Diff accepted, new Diff for another fix. | ||||
- Review Diffs from other developers as quickly as possible. | - Review Diffs from other developers as quickly as possible. | ||||
- Large changes should be broken into logical chunks that are easy to review, | - Large changes should be broken into logical chunks that are easy to review, | ||||
and keep the code in a functional state. | and keep the code in a functional state. | ||||
- Do not mix moving stuff around with changing stuff. Do changes with renames | - Do not mix moving stuff around with changing stuff. Do changes with renames | ||||
on their own. | on their own. | ||||
- Sometimes you want to replace one subsystem by another implementation, | - Sometimes you want to replace one subsystem by another implementation, | ||||
in which case it is not possible to do things incrementally. In such cases, | in which case it is not possible to do things incrementally. In such cases, | ||||
you keep both implementations in the codebase for a while, as described | you keep both implementations in the codebase for a while, as described | ||||
[here](https://www.gamasutra.com/view/news/128325/Opinion_Parallel_Implementations.php) | [here](https://www.gamasutra.com/view/news/128325/Opinion_Parallel_Implementations.php) | ||||
- There are no "development" branches, all Diffs apply to the master | - There are no "development" branches, all Diffs apply to the master | ||||
branch, and should always improve it (no regressions). | branch, and should always improve it (no regressions). | ||||
- Don't break the build, it is important to keep master green as much as possible. | - Don't break the build, it is important to keep master green as much as possible. | ||||
If a Diff is landed, and breaks the build, fix it quickly. If it cannot be fixed | If a Diff is landed, and breaks the build, fix it quickly. If it cannot be fixed | ||||
quickly, it should be reverted, and re-applied later when it no longer breaks the build. | quickly, it should be reverted, and re-applied later when it no longer breaks the build. | ||||
- As soon as you see a bug, you fix it. Do not continue on. Fixing the bug becomes the | |||||
top priority, more important than completing other tasks. | |||||
- Automate as much as possible, and spend time on things only humans can do. | - Automate as much as possible, and spend time on things only humans can do. | ||||
Here are some handy links for development practices aligned with Bitcoin ABC: | Here are some handy links for development practices aligned with Bitcoin ABC: | ||||
- [Statement of Bitcoin ABC Values and Visions](https://www.yours.org/content/bitcoin-abc---our-values-and-vision-a282afaade7c) | - [Statement of Bitcoin ABC Values and Visions](https://www.yours.org/content/bitcoin-abc---our-values-and-vision-a282afaade7c) | ||||
- How to Do Code Reviews Like a Human [Part 1](https://mtlynch.io/human-code-reviews-1/) [Part 2](https://mtlynch.io/human-code-reviews-2/) | - How to Do Code Reviews Like a Human [Part 1](https://mtlynch.io/human-code-reviews-1/) [Part 2](https://mtlynch.io/human-code-reviews-2/) | ||||
- [Large Diffs Are Hurting Your Ability To Ship](https://medium.com/@kurtisnusbaum/large-diffs-are-hurting-your-ability-to-ship-e0b2b41e8acf) | - [Large Diffs Are Hurting Your Ability To Ship](https://medium.com/@kurtisnusbaum/large-diffs-are-hurting-your-ability-to-ship-e0b2b41e8acf) | ||||
- [Stacked Diffs: Keeping Phabricator Diffs Small](https://medium.com/@kurtisnusbaum/stacked-diffs-keeping-phabricator-diffs-small-d9964f4dcfa6) | - [Stacked Diffs: Keeping Phabricator Diffs Small](https://medium.com/@kurtisnusbaum/stacked-diffs-keeping-phabricator-diffs-small-d9964f4dcfa6) | ||||
- [Parallel Implementations](https://www.gamasutra.com/view/news/128325/Opinion_Parallel_Implementations.php) | - [Parallel Implementations](https://www.gamasutra.com/view/news/128325/Opinion_Parallel_Implementations.php) | ||||
- [The Pragmatic Programmer: From Journeyman to Master](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) | - [The Pragmatic Programmer: From Journeyman to Master](https://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X) | ||||
- [Advantages of monolithic version control](https://danluu.com/monorepo/) | - [Advantages of monolithic version control](https://danluu.com/monorepo/) | ||||
- [The importance of fixing bugs immediately]{https://youtu.be/E2MIpi8pIvY?t=16m0s} | |||||
Getting set up with the Bitcoin ABC Repository | Getting set up with the Bitcoin ABC Repository | ||||
---------------------------------------------- | ---------------------------------------------- | ||||
1. Create an account at `https://reviews.bitcoinabc.org/` | 1. Create an account at `https://reviews.bitcoinabc.org/` | ||||
2. Install Git and Arcanist on your machine | 2. Install Git and Arcanist on your machine | ||||
▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines |