]>
Commit | Line | Data |
---|---|---|
9c6546c9 | 1 | Bitcoin Core integration/staging tree |
c8af33aa | 2 | ===================================== |
20d59455 CD |
3 | |
4 | http://www.bitcoin.org | |
5 | ||
b598581b | 6 | Copyright (c) 2009-2014 Bitcoin Core Developers |
20d59455 CD |
7 | |
8 | What is Bitcoin? | |
9 | ---------------- | |
10 | ||
11 | Bitcoin is an experimental new digital currency that enables instant payments to | |
12 | anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate | |
13 | with no central authority: managing transactions and issuing money are carried | |
9c6546c9 | 14 | out collectively by the network. Bitcoin Core is the name of open source |
20d59455 CD |
15 | software which enables the use of this currency. |
16 | ||
17 | For more information, as well as an immediately useable, binary version of | |
9c6546c9 | 18 | the Bitcoin Core software, see http://www.bitcoin.org/en/download. |
20d59455 CD |
19 | |
20 | License | |
21 | ------- | |
22 | ||
9c6546c9 | 23 | Bitcoin Core is released under the terms of the MIT license. See [COPYING](COPYING) for more |
20d59455 | 24 | information or see http://opensource.org/licenses/MIT. |
81b2d877 | 25 | |
ae42d69d | 26 | Development process |
20d59455 | 27 | ------------------- |
81b2d877 | 28 | |
20d59455 CD |
29 | Developers work in their own trees, then submit pull requests when they think |
30 | their feature or bug fix is ready. | |
cc558f06 | 31 | |
20d59455 CD |
32 | If it is a simple/trivial/non-controversial change, then one of the Bitcoin |
33 | development team members simply pulls it. | |
cc558f06 | 34 | |
20d59455 CD |
35 | If it is a *more complicated or potentially controversial* change, then the patch |
36 | submitter will be asked to start a discussion (if they haven't already) on the | |
37 | [mailing list](http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development). | |
cba3a174 | 38 | |
20d59455 CD |
39 | The patch will be accepted if there is broad consensus that it is a good thing. |
40 | Developers should expect to rework and resubmit patches if the code doesn't | |
0aa9851b | 41 | match the project's coding conventions (see [doc/coding.md](doc/coding.md)) or are |
20d59455 | 42 | controversial. |
cba3a174 | 43 | |
20d59455 CD |
44 | The `master` branch is regularly built and tested, but is not guaranteed to be |
45 | completely stable. [Tags](https://github.com/bitcoin/bitcoin/tags) are created | |
46 | regularly to indicate new official, stable release versions of Bitcoin. | |
cba3a174 | 47 | |
b67b9e70 | 48 | Testing |
20d59455 CD |
49 | ------- |
50 | ||
51 | Testing and code review is the bottleneck for development; we get more pull | |
52 | requests than we can review and test. Please be patient and help out, and | |
53 | remember this is a security-critical project where any mistake might cost people | |
54 | lots of money. | |
55 | ||
56 | ### Automated Testing | |
13945b2a | 57 | |
20d59455 | 58 | Developers are strongly encouraged to write unit tests for new code, and to |
0aa9851b | 59 | submit new unit tests for old code. Unit tests can be compiled and run (assuming they weren't disabled in configure) with: `make check` |
b67b9e70 | 60 | |
20d59455 CD |
61 | Every pull request is built for both Windows and Linux on a dedicated server, |
62 | and unit and sanity tests are automatically run. The binaries produced may be | |
da986f79 CLD |
63 | used for manual QA testing — a link to them will appear in a comment on the |
64 | pull request posted by [BitcoinPullTester](https://github.com/BitcoinPullTester). See https://github.com/TheBlueMatt/test-scripts | |
20d59455 | 65 | for the build/test scripts. |
b67b9e70 | 66 | |
20d59455 | 67 | ### Manual Quality Assurance (QA) Testing |
b67b9e70 | 68 | |
20d59455 CD |
69 | Large changes should have a test plan, and should be tested by somebody other |
70 | than the developer who wrote the code. | |
da986f79 | 71 | See https://github.com/bitcoin/QA/ for how to create a test plan. |
15283971 WL |
72 | |
73 | Translations | |
74 | ------------ | |
75 | ||
76 | Changes to translations as well as new translations can be submitted to | |
77 | [Bitcoin Core's Transifex page](https://www.transifex.com/projects/p/bitcoin/). | |
78 | ||
79 | Periodically the translations are pulled from Transifex and merged into the git repository. See the | |
80 | [translation process](doc/translation_process.md) for details on how this works. | |
81 | ||
82 | **Important**: We do not accept translation changes as github pull request because the next | |
83 | pull from Transifex would automatically overwrite them again. | |
c47f5379 GA |
84 | |
85 | Development tips and tricks | |
86 | --------------------------- | |
87 | ||
88 | **compiling for debugging** | |
89 | ||
90 | Run configure with the --enable-debug option, then make. Or run configure with | |
91 | CXXFLAGS="-g -ggdb -O0" or whatever debug flags you need. | |
92 | ||
93 | **debug.log** | |
94 | ||
95 | If the code is behaving strangely, take a look in the debug.log file in the data directory; | |
96 | error and debugging message are written there. | |
97 | ||
98 | The -debug=... command-line option controls debugging; running with just -debug will turn | |
99 | on all categories (and give you a very large debug.log file). | |
100 | ||
101 | The Qt code routes qDebug() output to debug.log under category "qt": run with -debug=qt | |
102 | to see it. | |
103 | ||
104 | **testnet and regtest modes** | |
105 | ||
106 | Run with the -testnet option to run with "play bitcoins" on the test network, if you | |
107 | are testing multi-machine code that needs to operate across the internet. | |
108 | ||
109 | If you are testing something that can run on one machine, run with the -regtest option. | |
110 | In regression test mode blocks can be created on-demand; see qa/rpc-tests/ for tests | |
111 | that run in -regest mode. | |
112 | ||
113 | **DEBUG_LOCKORDER** | |
114 | ||
115 | Bitcoin Core is a multithreaded application, and deadlocks or other multithreading bugs | |
116 | can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure | |
117 | CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of what locks | |
118 | are held, and adds warning to the debug.log file if inconsistencies are detected. |