[darcs-users] managing change

zooko zooko at zooko.com
Sat Feb 7 23:18:23 UTC 2009


I enjoy reading your musings on open source software development  
practice, SJT.

On Feb 6, 2009, at 17:59 PM, Stephen J. Turnbull wrote:

> test-driven development will definitely cost you a lot of your  
> contributors, possibly some of your more prolific, even some of the  
> best programmers, because it becomes more effort than it's worth to  
> them.

I was concerned about this during the first year or so after Twisted  
Python launched their new "no exceptions" policy that every patch had  
to come with thorough testing of all the code that it touched.  The  
policy that came into effect, dubbed The Ultimate Quality Development  
System, also mandated that every patch thoroughly documented the code  
that it changed and that every patch was reviewed by someone other  
than the author to certify the first two requirements.

I started to fear that, even though the Ultimate Quality Development  
System was good at forcing the codebase to be monotonically less  
buggy, that it might accomplish this by there never being another  
release of Twisted after the policy came into effect.  :-)

However, eventually releases of Twisted started up again, and now  
progress seems to be steady despite the iron hand of the Ultimate  
Quality Development System blocking untested or undocumented patches  
from landing in trunk.  I think part of what happened was a culture  
shift -- after a few months contributors got used to the idea that  
patches just really weren't ever going to go in until *someone* wrote  
tests for them, and they got into the habit of writing tests for the  
patches they cared about.  Similarly, everyone involved got used to  
the assumption that the discovery of a previously unknown bug implied  
the existence of a hole in the tests, and that the bug wouldn't be  
resolved until the hole in the tests was also filled.

Another simultaneous development was more automation for the Twisted  
development process -- improved buildbot, automated release  
management, code coverage tools, lint-like tools, and (sad to say)  
scripts extending SVN so that it sucks slightly less.  (Yes, of  
course, all of the scripts were things that would have been  
completely unnecessary if they had been using darcs instead of SVN in  
the first place.)

Anyway, I don't think I would worry *too* much about test-driven  
development turning people off.  Maybe it will, and maybe you should  
be willing to abandon it if it looks like it doesn't work, but really  
a revision control tool should be ideally suited to automated,  
thorough testing (in contrast with a sprawling network and language  
framework like Twisted, which should be very hard to automatedly  
test), and Haskell ought to be uniquely well-suited to automated,  
thorough testing.

Regards,

Zooko
---
Tahoe, the Least-Authority Filesystem -- http://allmydata.org
store your data: $10/month -- http://allmydata.com/?tracking=zsig


More information about the darcs-users mailing list