Steve Berczuk writes:
> I don't think  that Michael and I disagree really. but I 
> would like to suggest that "frequent" is important, and 
> sufficient, as long as you have a thorough post-check-in 
> testing system,

I have to agree with my co-author here :-)

A couple years ago a colleague of mine who teaches part-time at a University 
asked me to review a students proposal for an allegedly "agile development" 
research project. They student wanted to develop a system that assisted 
continuous integration by basically doing what Massol suggests - ensuring 
"unbreakable builds" - albeit via a different mechanism (semantic analysis of 
the changes and dependency computation to guarantee "consistent configuration" 
before allowing a checkin).

I understood how it could be viewed as getting instant feedback (which is 
certainly agile), and yet something about it smelled decidely non-agile to me: 
it seemed very BDUF, trying to get everything right/perfect up-front instead of 
allowing a "safe haven" to fail, frequently, on a really small scale, and then 
apply corrective feedback. I suppose one could argue that is still what is 
happening, but to me, not allowing the checkin/commit is what violated that 
principle.

I suggested that a more genuinely agile application for such a project might be 
instead some kind of self-healing (autonomic) build. Use existing mechanisms 
like AntHill, CruiseControl, or BuildForge to automate the running of the 
build+smoke plus automated tests ... and in the case of failure, perhaps that 
would be the appropriate time/place to do some kind of semantic analysis to try 
and diagnose (or possibly even remedy) the failure, and determine the most 
relevant information to auto-notify about.

So rather than "Unbreakable Builds" I'd be more interested in "Autonomic 
Builds" -- at least on an agile project.

For a really large system tho with hundreds of developers, what Massol is 
suggesting is basically automation of what is already a manual process in some 
large shops: these shops use an "integrator pull" model of integration when, 
rather than letting the developer merge/commit their own changes to the 
codeline (a.k.a. "developer-pull" integration), they instead use one or more 
dedicated integrators who receive notification that a change has been submitted 
for integration, and then the integrator does the merging (basically a human 
integration token) and fails the commit if it doesn't pass the tests.

In this, very common (and not very agile IMHO) case for large projects, what 
Massol suggests would be a VAST IMPROVEMENT for such large projects, and could 
certainly help them be decidely more agile.

What Steve and I suggested in our SCM Patterns book is to instead allow 
developer-push and integrator-pull to co-exist by having an "Active Development 
Line" that serves as a "Change Docking" area for developers use and 
commit/merge changes to, and then a separate Release-Line can be used by the 
integrators, who may decide to look at individual changes or else bundles of 
changes on the active development line and merge them to the release-line at 
their own pace:
* Development gets to use the active development line for their development
* Integration/build/CM gets to use the release-line for their own policy-levels 
regarding "speed+safety"
* Each gets to peacefully co-exist on their own branch, and the integrators 
assume the burden of the additional merging since they are the ones insisting 
on slower merge-cycles for the sake of safety.

--
Brad Appleton <[EMAIL PROTECTED]> www.bradapp.net
  Software CM Patterns (www.scmpatterns.com)
    Effective Teamwork, Practical Integration
"And miles to go before I sleep" --Robert Frost


To Post a message, send it to:   [EMAIL PROTECTED]

To Unsubscribe, send a blank message to: [EMAIL PROTECTED]

ad-free courtesy of objectmentor.com 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/extremeprogramming/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to