[RFC] flag day commits

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Sun, 08 Jun 2014 23:05:32 +1200

While discussing in IRC how we could improve our procedures and reduce
audit problems we hit on the issue of wide-ranging code cleanup or API
conversion patches/"projects".

The distinguishing factors for flag-day changes is that they are a)
large, b) essentially not changing logics in new ways ("polish" or
"cleanup" patches), and c) variously painful for everyone merging into
their incomplete work.

Some examples of these that we know of are:
 * removal of HERE macro
 * removal of some AsyncCall wrappers (ie CommCalls)
 * removal of .cci files
 * removal of _SQUID_INLINE_
 * multiple cases of Squid-3 coding guidelines renamings
 * SourceLayout shuffling actions (not the API cleanup)
 * removal of defines.h and/or all shufflings out of there
 * removal of typedefs.h and/or all shufflings out of there
 * removal of structs.h and/or all shufflings out of there
 * C++11 "Rule of Five" compliance check/update
 * several C++11 syntax upgrades changes once -std=c++11 is required
 * possible replacement for debugs() API
 * astyle version upgrade

When a change can it should avoid being a flag-day. But if breaking into
a set of smaller incremental changes is difficult or causes too much
annoyance from repeated painful merges or wastes audit time on other
patches, then it seems better to end the ongoing pain with a flag-day
commit.

I propose that we dedicate a 5-day period in the Squid release cycle
when these types of patches are accepted into trunk. Accumulating a list
of proposals like above until the period occurs.

* From the release perspective the week or two prior to branching trunk
seems to be the best time for these to occur. During that period new
feature and logic commits to trunk are usually heldup in audit we are
trying to ensure a stable first beta. We also have minimal pressure/need
for back-porting patches across the change to already stable branches by
then.

* 5 days because its a waste of time to write these very long in advance
and we may want a short period to ensure stability is retained. Also the
exact branching day is not predictable very long in advance.

* audit requirements are small. Just checking the patch is restricted to
pre-agreed painful act(s) and has no other code changes.

I also propose that this type of patch audit submission be accompanied
by clear how-to steps assisting porters of older code to get over the bump.
 For example, when we initiated astyle use globally I have provided
details of how to merge all previous revno from trunk, how to merge the
painful rev dropping rejects and run the script on new code manually. A
simple process instead of painful fiddling with individual patch rejects
which the unwary would be faced with.
 NP: if we can't provide a simple how-to then re-consider the patch
suitability for being a flag-day change.

Amos
Received on Sun Jun 08 2014 - 11:06:03 MDT

This archive was generated by hypermail 2.2.0 : Mon Jun 09 2014 - 12:00:11 MDT