You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ha...@kodemuse.com on 2002/12/29 08:53:25 UTC

[Vote] Guidelines to avoid regressions.

2 guidelines to avoid regressions. I believe proposals guideline is part of Jakarta, and James has used it effectively.

1. Have risky or major refactoring in the proposals area and move them to
head after there has been some testing and review.

2. Run a minimal end user test(say something that can be done in 5 mins)
after refactoring. Of course if it is automated all the better.

Could this be incorporated into a set of project guidelines for James. I
believe it would make everybody more productive. As James grows in
size/ambition some simple guidelines could yield a lot of benefit.

James/Apache developers are a talented group but it is possible to miss
things as each person usu. has more than enough things on the plate. A check list and self discipline may help even the best.

thanks,
Harmeet

Re: [Vote] Guidelines to avoid regressions.

Posted by Nicola Ken Barozzi <ni...@apache.org>.

harmeet@kodemuse.com wrote:
> 2 guidelines to avoid regressions. I believe proposals guideline is part of Jakarta, and James has used it effectively.
> 
> 1. Have risky or major refactoring in the proposals area and move them to
> head after there has been some testing and review.

Usually, to reduce code moves, branches are used.

I would propose that for new features, a new CVS module is used, called 
james-sandbox. This has been done in Avalon because keeping things in 
the same module can sometimes make the code appear as if it were almost 
in the core, which at this stage it is not. To move it to the main 
module, there must be a vote.

If the feature is a refactoring, a branch should be used, and a majority 
vote at least should pass to make the switch of the branches.

> 2. Run a minimal end user test(say something that can be done in 5 mins)
> after refactoring. 

The end-user test should really be done with functional and unit tests. 
Because we cannot assume that every programmer has Outlook Express or 
can remember what to test every time.

For unit tests there is Junit.
For functional tests Anteater.
To record tests maybe JMeter.

Probably some additions have to be done to these to make them work with 
James, but I'm sure Jeff and Ovidiu of Anteater would be more than 
helpful on this.

> Of course if it is automated all the better.

Of course, but you are right that developers should run them before 
committing too.
The Gump runs would just be another safety net.

> Could this be incorporated into a set of project guidelines for James. I
> believe it would make everybody more productive. As James grows in
> size/ambition some simple guidelines could yield a lot of benefit.

IMHO these guidelines are *essential* in an OS project to make it 
proceed well with good and stable quality.

> James/Apache developers are a talented group but it is possible to miss
> things as each person usu. has more than enough things on the plate.

Exactly.

Cocoon is having too many regressions lately, all because we don't have 
unit tests. I basically overlook the exception handling code, but it 
keeps breaking, because its concerns are scattered all over the place, 
in every place where an exception is thrown, catched, rethrown...
Discipline is not enough, because I can assure you that in the Cocoon 
project we are all very careful on this, but we are only human.

I'm quite sure that an OS project needs tests to be able to remain 
stable, highquality, and survive the knowledge of single programmers.

If you write down the guidelines, I may as well add them as a note to 
the incubator project and ask Avalon, Cocoon, Forrest and POI to follow 
them.

-- 
Nicola Ken Barozzi                   nicolaken@apache.org
             - verba volant, scripta manent -
    (discussions get forgotten, just code remains)
---------------------------------------------------------------------


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>