summaryrefslogtreecommitdiff
path: root/be/04d1eddef27eb0324499c70e5d2267738e318e
blob: 4eff546ab117bcf206bef415e57e94c1c95b8b38 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194]
	helo=mx.sourceforge.net)
	by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76)
	(envelope-from <mh.in.england@gmail.com>) id 1Qn82a-00061o-Es
	for bitcoin-development@lists.sourceforge.net;
	Sat, 30 Jul 2011 11:49:12 +0000
Received-SPF: pass (sog-mx-4.v43.ch3.sourceforge.com: domain of gmail.com
	designates 209.85.220.175 as permitted sender)
	client-ip=209.85.220.175; envelope-from=mh.in.england@gmail.com;
	helo=mail-vx0-f175.google.com; 
Received: from mail-vx0-f175.google.com ([209.85.220.175])
	by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128)
	(Exim 4.76) id 1Qn82Y-0007ua-5Q
	for bitcoin-development@lists.sourceforge.net;
	Sat, 30 Jul 2011 11:49:12 +0000
Received: by vxh2 with SMTP id 2so4895311vxh.34
	for <bitcoin-development@lists.sourceforge.net>;
	Sat, 30 Jul 2011 04:49:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.52.24.147 with SMTP id u19mr2272099vdf.525.1312026544649; Sat,
	30 Jul 2011 04:49:04 -0700 (PDT)
Sender: mh.in.england@gmail.com
Received: by 10.52.169.9 with HTTP; Sat, 30 Jul 2011 04:49:04 -0700 (PDT)
In-Reply-To: <CABsx9T3W=n6VVJfOUqcd52oYvd-5hSwdOJudtVHK4g0bPGpXew@mail.gmail.com>
References: <CABsx9T3W=n6VVJfOUqcd52oYvd-5hSwdOJudtVHK4g0bPGpXew@mail.gmail.com>
Date: Sat, 30 Jul 2011 12:49:04 +0100
X-Google-Sender-Auth: l2L3rXyE6vy9RorHvKp-Xn79J-8
Message-ID: <CANEZrP00+5GSPqoKmZgCw1huYNEuidjWgKGDdF-LG-zTaV8xXg@mail.gmail.com>
From: Mike Hearn <mike@plan99.net>
To: Gavin Andresen <gavinandresen@gmail.com>
Content-Type: text/plain; charset=UTF-8
X-Spam-Score: -1.5 (-)
X-Spam-Report: Spam Filtering performed by mx.sourceforge.net.
	See http://spamassassin.org/tag/ for more details.
	-1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for
	sender-domain
	0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
	(mh.in.england[at]gmail.com)
	-0.0 SPF_PASS               SPF: sender matches SPF record
	0.1 DKIM_SIGNED            Message has a DKIM or DK signature,
	not necessarily valid
	-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
X-Headers-End: 1Qn82Y-0007ua-5Q
Cc: Bitcoin Dev <bitcoin-development@lists.sourceforge.net>
Subject: Re: [Bitcoin-development] Seeking advice: Encouraging bug-fixing
 over new features
X-BeenThere: bitcoin-development@lists.sourceforge.net
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: <bitcoin-development.lists.sourceforge.net>
List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=unsubscribe>
List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=bitcoin-development>
List-Post: <mailto:bitcoin-development@lists.sourceforge.net>
List-Help: <mailto:bitcoin-development-request@lists.sourceforge.net?subject=help>
List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>,
	<mailto:bitcoin-development-request@lists.sourceforge.net?subject=subscribe>
X-List-Received-Date: Sat, 30 Jul 2011 11:49:12 -0000

I've worked on open source projects for over 10 years now. This
dynamic always exists but I've never seen it seriously kill a project.

Thoughts:

 - People who start out with features often stick around and become
core contributors.
 - Unit tests are critical.

Now there's a basic skeleton for unit tests, the bug debt can start to
be paid down by insisting that anyone who touches a piece of code
introduces tests, whether it be for new features or refactorings.
Insist patches won't be accepted without some new tests. In an
untested codebase, adding or improving tests often reveals other bugs
that then get fixed at the same time.

People usually don't want to write tests if there's nothing there
already. So I'd suggest seeding the test suite with a small number of
simple tests for each part (wallet, net, db, etc). Once there are a
few tests already it's easier to get people to add more. It's tempting
to say, well, the wallet or re-org handling or whatever is the most
critical so we'll write lots of tests for that first and do the rest
later, but that's not as conducive to getting people to help.

Most complex projects need some unit testing infrastructure to assist.
For instance, the ability to use mock network connections or minimal
difficulty chains. So if you build up that infrastructure and plant
those seeds, it'll be easier for other people to flesh it out.

Final thought - big test suites take a long time to grow, especially
in codebases developed without them. A good start is a manually
written test plan, that just walks you through the apps features.
Insisting that a patch be signed off as passing the test plan is a
good way to avoid gigantic breakages like the wallet encryption bug
from cold start, at the cost of slowing down development (nobody likes
doing manual test work over and over).

I don't always follow my own advice on this and usually end up
regretting it ....