[Dlang-internal] Regression control & breaking changes policies
Sebastien Alaiwan via Dlang-internal
dlang-internal at puremagic.com
Wed Dec 7 14:25:44 PST 2016
On Wednesday, 7 December 2016 at 01:56:15 UTC, Dicebot wrote:
> THERE IS NO SUCH THING AS MINOR REGRESSSION
> THERE IS NO SUCH THING AS MINOR REGRESSSION
> THERE IS NO SUCH THING AS MINOR REGRESSSION
> THERE IS NO SUCH THING AS MINOR REGRESSSION
> THERE IS NO SUCH THING AS MINOR REGRESSSION
I couldn't agree more.
Compromising on "minor" regressions maintains the whole codebase
in an unstable state, as there's no more guarantee that the
feature I rely on today will not be "broken in a minor way"
tomorrow to enable a "better" feature.
This is equivalent to disabling the tests that you've just broke
to force your feature into the codebase (BTW allowing any kind of
regression also make it a lot harder to guarantee that the
codebase is actually improving).
Users have no global vision of the product, and if an update
breaks their workflow, they will only see the regression. They
won't be able to appreciate the fact that as a whole, the product
might be better today. In one word, each time a compiler upgrade
forces the users to modify their codebase, some of them leave
(and god kills a kitten).
However, only simple policies stand the test of time ; if you
want to establish a policy and need to argue over it, you've
already lost the war.
The only regressions you might be able to forbid are the ones
that are detected by an authoritative test suite that anyone can
run before submitting patches, allowing to establish the
brokenness of a feature in a non-ambiguous way.
It's a lot easier to enforce the authority of a test suite than a
systematic-revert policy (with which I would totally agree!).
More information about the Dlang-internal
mailing list