On Mon, Apr 22, 2013 at 5:19 PM, Animesh Chaturvedi
<animesh.chaturv...@citrix.com> wrote:
> Folks
>
> We started discussing 4 month v/s 6 month release cycle in a another thread 
> [1]. Since the subject of that thread was different, community may not have 
> participated in this important discussion fully. I am  are bringing this 
> discussion to its own thread. Here is the summary so far please refer to [1] 
> for more details.
>
> Summary of discussion:
> - Animesh pointed out the technical debt that we have accumulated so far 
> needs extra time to resolve
> - David, Chip favor shorter release cycle of 4 month and keeping master 
> always stable and in good quality and enhancing automation as a solution to 
> reduce QA manual effort. A focused defect fixing activity may be needed to 
> reduce technical debt
> - Will brought up several points in the discussion: He called out heavy 
> dependence on manual QA for a release and pointed out that manual QA may not 
> be always available to match up ACS release schedule. Release overhead for 4 
> month release is still high and suggest that moving to 6 month will save on 
> release overhead and that  time can be used for strengthening automation.
>  - Joe agrees partly in release overhead being significant for major release
>
> If I missed out  any important point please feel free to bring into the 
> thread.
>
> There were some other discussion in [1] on release planning conference and 
> chip's clarification on time based v/s feature based releases but we will not 
> discuss those in this thread. Community has agreed to time-based release 
> already.
>
> [1] http://markmail.org/thread/6suq2fhltdvgvcxd
>


Hi Animesh:

I thought I would add a few comments. To the folks reading - I
apologize for the length. If you haven't started yet, you may want to
get some coffee/tea. You've been warned. :)

I think there are two concerns people think about when talking about
changing the length of the release cycle.

The first concern is workload. Generating a release has a certain
fixed amount of overhead. Writing release notes, running votes, and a
key part of the discussion currently is the QA cycle. Currently a
large portion of our QA cycle is manual testing, which means we need
lots of fingers on keyboards to get it done.

The other concern is quality. We always want to try and put our best
foot forward, and minimize bugs, yet the very act of developing
software, and especially developing new features, introduces bugs.

Before I start telling you my reasoning, I want to lay out something
that only hit me tonight. We've talked about how extending the release
cycle only extends the length of development. We've talked about
keeping the length of the development period (e.g. pre-code freeze)
the same, and essentially only extending the amount of time for QA.
That works for the first release after a move from 4 to 6 months. It
falls apart there after though. The problem is that at code freeze we
branch. Master immediately becomes open for future feature
development, and you've just extended it by an additional 2 months,
because your cycle is that much longer.

I personally don't think that either concern is addressed well by
lengthening the cycle. Let me explain why

On the quality front - the immediate threat to quality is instability
inserted by additional development/new features/improvements. By
increasing the length of time for that disruption to occur, we get
more of it, as people will continue adding things that might have been
deferred to a later release. We have code merged that, realistically,
we won't know if it works properly until QA has gone in and verified
it, perhaps months later. The more paths changed in a given release,
the greater the propensity for failure.

On the overhead front - the overhead of writing release notes and
generating releases goes down. In addition the 'basic' testing that QA
does now is additional overhead in each cycle as well. What isn't
overhead though is testing for new features. Because effectively
longer cycles mean greater amount of codebase change, more features,
etc. The actual testing in a given cycle must also increase.

If we were really focused on absolute best quality we could deliver
with our current tooling, I believe the easiest would be to make our
release cycle the length of a single feature development period + the
QA cycle (e.g. shortening the release cycle.)

Is there a right or wrong answer? There shouldn't be. Our software
should be deliverable at any point in the development cycle we choose.
4 months or 6 months would not be a quality, or QA workload issue. We
would have automated test suites written for 80+% of our testing and
we would run comprehensive tests against propose merges to guarantee
that an incoming features both works as intended, and doesn't harm the
rest of the platform in the process. We'd make release cycle decisions
based upon the same kind of preferences that make us choose a monkey
mascot over a polar bear mascot.

That sadly isn't where we are today, but I do think it illuminates a
clear path of where we need to go. (more automated testing)

So where do I fall on 4 months versus 6 months?

I think we should stay the 4 month course. Heres why:
* We set the 4-month release cycle expectation already. In theory
we've been through 2 releases, but really only 4.1 - 4.0 was dominated
by getting into the incubator, getting releases okayed legally, etc.
It took us 7 months to release. I am loathe to change something we
only recently set, and have only been through once. I am also worried
about the signal that such rapid contrary decision changes would send
to our users.

* I am worried about the impact to quality of our releases. Greater
introduction of features means an increased threat to stability. It
may not impact us in the 4.2 cycle, but without massive automated QA
it will impact us going forward in the 4.3 and later time frames.


If you've made it thus far, I hope your tea/coffee was enjoyable.
Thanks for reading. :)

--David

Reply via email to