[sldev][META] Release Candiate Cycles (was 1.18.2.1 source code)

Joshua Bell josh at lindenlab.com
Wed Sep 26 11:48:23 PDT 2007


Nicholaz Beresford wrote:
> From what I've seen with 18.3 RC I'd expect that the work (fixes) get
> progressively less ... at least the source diffs between each of the
> RC iterations were smaller and smaller.
Yes, that's the idea. I like to think of any build having a certain 
amount of "risk" associated with it. Having QA look at a build reduces 
the risk. Having public eyeballs (in an RC, code drop) reduces risk. 
Code changes of any sort increase risk (usually proportional to the size 
of the change).  Even hitting the "rebuild" button introduces risk - how 
deterministic is your compiler, linker, and packager? Risk is never zero.

The desire is to always be reducing risk and increasing quality, but 
those don't go hand in hand - in fact, they can be opposing. A feature 
that doesn't work correctly is low quality, but if it's had sufficient 
time in QA, public previews, etc. it can be low risk. (i.e. low chance 
of causing data loss, etc). Attempting to fix the feature changes the 
code and therefore increases the risk! Then again, shipping broken 
features is generally considered bad... but I'd rather ship a feature 
that was known broken but also known to not erase your data. Balancing 
this is the point of triage.
> How are you doing that practically?  I guess theoretically you'd merge
> fixes into a 18.4 branch now and as soon as the RC goes gold, a new
> 18.4 RC should be waiting in the wings and an 18.5 ready to branch for
> merging postponed fixes/patches?
Basically, we have our trunk (the ill named "release"). At some point we 
branch off of that and create an RC branch, "Branch_1-18-3-Viewer". We 
stabilize that with RC bugfixes. Meanwhile, other features and fixes are 
going into "release". Patches made into the RC branch also get 
propagated into "release". Once the particular release "goes gold", we 
take a vacation on a tropical island for a few days (ha!), then come 
back and repeat the process.

So right now, for example, 1.18.4 doesn't exist in any form distinct 
from the trunk (and hand-wavy discussions). Given infinite resources, we 
could carve 1.18.4 off even before 1.18.3 goes gold, and be stabilizing 
that in parallel with the ever-*decreasing* amount of work going on with 
1.18.3 (as the rate of change slows to a trickle). But in practice we're 
balancing both server and viewer releases and doing QA on individual 
features so we'll let the previous release finish before we lock down 
1.18.4.




More information about the SLDev mailing list