To be more clear, here's what I think is broken in the current release planning:

1. The dates are wildly unpredictable
2. People aren't allowed to work against trunk on features for
multiple iterations (see #1072)
3. Stable branches diverge too much, causing duplicated effort. (we
essentially implemented #1072 twice for 0.6 and 0.7)
4, back porting features is risky and causes bugs, esp with the
limited QA available

-ryan

On Thu, Jan 13, 2011 at 2:32 PM, Ryan King <r...@twitter.com> wrote:
> I think many believe that shipping 0.7 took longer than it should.
> Rather than going into why that happened, I'd like to propose a better
> way to move forward that will hopefully allow us to ship on a more
> predictable schedule. This proposal is heavily influenced by the
> google chrome release process:
>
> http://www.scribd.com/doc/46659928/Chrome-Release-Cycle-12-16-2010'
>
> ..which is heavily influenced by how large websites deploy code
> (everyone close to trunk, hide incomplete changes behind configuration
> flags, etc.)
>
> I'm not saying we should adopt this process as-is, but some aspects of
> it seem like they would be valuable–
>
> # Fixed schedule
>
> We should set a fixed schedule and stick to it. Anything features not
> ready at branch time won't make it and will be disabled in the stable
> branch.
>
> # Trunk-first
>
> Everyone on chrome commits to trunk first. I think the important
> change we could make is to keep everyone closer to trunk. We spend a
> good deal of effort back-porting patches between major versions. I
> think we should make the major versions less different. This would
> mean letting them live for shorter amounts of time and possibly making
> them bugfix only. Currently we add new features in stable branches,
> but I think if we made the major release schedule more predictable
> people would be more comfortable with letting their new feature wait
> until the next major version.
>
> We should be more liberal about committing things to trunk early and
> iterating on them there (rather than iterating on them in patches). If
> the features are unstable we can either hide them behind configuration
> flags or remove them when we cut a stable branch.
>
> # Automate all tests
>
> I think the only way that we can keep people close to trunk and stay
> stable is to build automated tests for *everything*. All code should
> be exercised by thorough unit tests and distributed black-box tests.
> Every regression should get a test.
>
>
> Chrome has a 6 week cycle. I think ours would be more like 4 months
> for major releases.
>
> Whatever we do, I think the schedule needs to be more predictable,
> which means that the contents of each release will be less predictable
> (since its "whatever's ready at the appointed time"). Like the Chrome
> presentation mentioned the idea isn't raw speed, but predictable
> release schedules.
>
> Feedback please.
>
> -ryan
>

Reply via email to