On Mon, Apr 16, 2018 at 11:52 AM, Linus Torvalds torvalds@linux-foundation.org wrote:
We're better off making *no* progress, than making "unsteady progress".
Really. Seriously.
Side note: the original impetus for this was our suspend/resume mess. It went on for *YEARS*, and it was absolutely chock-full of exactly this "I fixed the worse problem, and introduced another one".
There's a reason I'm a hardliner on the regression issue. We've been there, we've done that.
The whole "two steps forwards, one step back" mentality may work really well if you're doing line dancing.
BUT WE ARE NOT LINE DANCING. We do kernel development.
Absolutely NOTHING else is more important than the "no regressions" rule. NOTHING.
And just since everybody always tries to weasel about this: the only regressions that matter are the ones that people notice in real loads.
So if you write a test-case that tests that "system call number 345 returns -ENOSYS", and we add a new system call, and you say "hey, you regressed my system call test", that's not a regression. That's just a "change in behavior".
It becomes a regression only if there are people using tools or workflows that actually depend on it. So if it turns out (for example) that Firefox had some really odd bug, and the intent was to do system call 123, but a typo had caused it to do system call 345 instead, and another bug meant that the end result worked fine as long as system call 345 returned ENOSYS, then the addition of that system call actually does turn into a regression.
See? Even adding a system call can be a regression, because what matters is not behavior per se, but users _depending_ on some specific behavior.
Linus