Brian and I had the unfortunate experience this Monday that the rules regarding 
the required or allowed actions with regard to revisions that cause performance 
regressions aren’t well enough defined. Or at least that there is some room for 
improvement. So the intention of this post is for everyone to agree and/or 
improve the rules regarding regressions. 

So first of all regressions are bad and we should try to avoid them. Getting 
them as fast as possible out of the tree is the easiest and best way to make 
sure they don’t stick or become impossible to backout. Another issue with such 
revisions in the tree is that they possibly obscure other regressions. The 
default action with this is to backout. Dave Mandelin was very clear about this 
and allowed everybody to just backout if a revision regresses our performance 
on one of our big benchmarks (SS, Kraken, Octane). 

Now the common practice I observed during my time here is as follows:
1) If one of the big benchmarks is hurt, the relevant person is notified and 
asked for a really short term solution. The action in most cases was rushing a 
fix or backing the revision out of the tree.
2) If one of the other benchmarks are hurt, in most cases nothing happens or a 
regression bug is opened depending on the bug causing the regression.

So there is a big difference between the common practice and the actual 
requested actions. And in most cases the common practice works fine. But not 
always. This weekend we had 4 regressions at the same time. It is rather easy 
to pinpoint one revision, but 2 is already a whole other story, let alone 4 
regressions! When that happens the rule about backing out regressions makes it 
much easier to get the tree in a good state and to make sure all regressions 
are found... Afterwards the required fixes can get made or the discussion can 
begin to allow a onetime regression ...

So since both policies/guidelines aren’t quite up to the task of facilitating 
tree watchers to take actions and to annoy the person whose patch is backed out 
as little as possible, I have sort of a new proposal, based on common 
occurrences regarding regressions.

My proposal would be something like:

-----------------------------------------------------------------------
Revisions causing regressions on the major benchmarks (Sunspider, Octane, 
Kraken) are not allowed at all.
Except: if the regressions are listed in the bug report and the reviewer still 
gave a r+, knowing about these regressions. (e.g. common case where this 
happens is if a benchmark as a whole improves, but some subtests show 
regressions)

Normal procedure (i.e. only one regression):
1) The owner is notified and the regressions are listed in the bug
2) The owner should immediately acknowledge the regressions and inform what his 
plan of attack is.
3) The owner gets 2 working days to fix them:
3.1.) Backout
3.2.) Fix in tree
3.3.) Request r+ to allow regressions (only allowed in extreme cases!)
Note: if the process takes or will take longer than 2 working days, the patch 
should be backed out.

Allowed actions in exceptional cases (multiple regressions, just before merge …)
1) The revision is backed out without notifying the person beforehand
2) The backout and the list of regressions is listed in the bug + a reason why 
a quick backout was done instead of the normal procedure
Note: this shouldn’t be frowned upon. If the regression was listed in the bug 
before r+ it wouldn’t have gotten backed out...
-------------------------------------------------------------------------

As an extra discussion point, I would like to have some benchmarks being 
classified as more important. To disallow regression on them. Not like our 
major benchmarks where “no regressions allowed”, but benchmarks where we 
discourage regressions... A few benchmarks have proven to be also important 
even though they are not included in major benchmark set. One of them is e.g. 
jpeg2000 benchmark. Possible our performance is as important as the pdf.js 
benchmark.

Let the discussions begin ...
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to