Changeset View
Changeset View
Standalone View
Standalone View
CONTRIBUTING.md
Show All 28 Lines | |||||
---------------------------------- | ---------------------------------- | ||||
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. These | Here are some tips to help keep the development working as intended. These | ||||
are guidelines for the normal and expected development process. Developers | are guidelines for the normal and expected development process. Developers | ||||
can use their judgement to deviate from these guidelines when they have a | can use their judgement to deviate from these guidelines when they have a | ||||
good reason to do so. | 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 | - 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. | 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: | ||||
- [Developer Notes](doc/developer-notes.md) | - [Developer Notes](doc/developer-notes.md) | ||||
- [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/) | - [How to Do Code Reviews Like a Human - Part 1](https://mtlynch.io/human-code-reviews-1/) | ||||
- [How to Do Code Reviews Like a Human - Part 2](https://mtlynch.io/human-code-reviews-2/) | - [How to Do Code Reviews Like a Human - 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) | - [The importance of fixing bugs immediately](https://youtu.be/E2MIpi8pIvY?t=16m0s) | ||||
- [Slow Deployment Causes Meetings](https://www.facebook.com/notes/kent-beck/slow-deployment-causes-meetings/1055427371156793/) | - [Slow Deployment Causes Meetings](https://www.facebook.com/notes/kent-beck/slow-deployment-causes-meetings/1055427371156793/) | ||||
▲ Show 20 Lines • Show All 152 Lines • Show Last 20 Lines |