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 ) 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 ; 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: References: Date: Sat, 30 Jul 2011 12:49:04 +0100 X-Google-Sender-Auth: l2L3rXyE6vy9RorHvKp-Xn79J-8 Message-ID: From: Mike Hearn To: Gavin Andresen 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 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 ....